132 lines
3.3 KiB
C++
132 lines
3.3 KiB
C++
|
#include "./pageInfo.h"
|
||
|
#include "./common.h"
|
||
|
#include "./loginGui.h"
|
||
|
#include "../resource.h"
|
||
|
|
||
|
|
||
|
static HRESULT CALLBACK LoginPageInfo_CreateInstance(HWND hwnd, HWND hLoginbox, LoginPage **instance)
|
||
|
{
|
||
|
if (NULL == instance) return E_POINTER;
|
||
|
if (NULL == hwnd || NULL == hLoginbox) return E_INVALIDARG;
|
||
|
|
||
|
*instance = new LoginPageInfo(hwnd, hLoginbox);
|
||
|
if (NULL == instance) return E_OUTOFMEMORY;
|
||
|
|
||
|
return S_OK;
|
||
|
}
|
||
|
|
||
|
LoginPageInfo::LoginPageInfo(HWND hwnd, HWND hLoginbox)
|
||
|
: LoginPage(hwnd, hLoginbox)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
LoginPageInfo::~LoginPageInfo()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
HWND LoginPageInfo::CreatePage(HWND hLoginbox, HWND hParent)
|
||
|
{
|
||
|
return LoginPage::CreatePage(hLoginbox, MAKEINTRESOURCE(IDD_PAGE_INFO),
|
||
|
hParent, NULL, LoginPageInfo_CreateInstance);
|
||
|
}
|
||
|
|
||
|
void LoginPageInfo::UpdateLayout(BOOL fRedraw)
|
||
|
{
|
||
|
LoginPage::UpdateLayout(fRedraw);
|
||
|
|
||
|
RECT pageRect;
|
||
|
if (FALSE == GetPageRect(&pageRect))
|
||
|
return;
|
||
|
|
||
|
|
||
|
HWND hMessage = GetDlgItem(hwnd, IDC_MESSAGE);
|
||
|
if (NULL == hMessage) return;
|
||
|
|
||
|
INT cx, cy;
|
||
|
cx = pageRect.right - pageRect.left;
|
||
|
|
||
|
HDC hdc = GetDCEx(hMessage, NULL, DCX_CACHE | DCX_NORESETATTRS);
|
||
|
if (NULL != hdc)
|
||
|
{
|
||
|
HFONT fontControl = (HFONT)SendMessage(hMessage, WM_GETFONT, 0, 0L);
|
||
|
HFONT fontOrig = (HFONT)SelectObject(hdc, fontControl);
|
||
|
|
||
|
INT maxWidth = LoginBox_GetAveStrWidth(hdc, 80);
|
||
|
if (cx > maxWidth) cx = maxWidth;
|
||
|
|
||
|
SelectObject(hdc, fontOrig);
|
||
|
ReleaseDC(hMessage, hdc);
|
||
|
}
|
||
|
|
||
|
LoginBox_GetWindowTextSize(hMessage, cx, &cx, &cy);
|
||
|
if(cy > (pageRect.bottom - pageRect.top))
|
||
|
cy = pageRect.bottom - pageRect.top;
|
||
|
|
||
|
RECT messageRect;
|
||
|
GetWindowRect(hMessage, &messageRect);
|
||
|
MapWindowPoints(HWND_DESKTOP, hwnd, (POINT*)&messageRect, 2);
|
||
|
if (messageRect.left != pageRect.left ||
|
||
|
messageRect.top != pageRect.top ||
|
||
|
(messageRect.right - messageRect.left) != cx ||
|
||
|
(messageRect.bottom - messageRect.top) != cy)
|
||
|
{
|
||
|
|
||
|
SetWindowPos(hMessage, NULL, pageRect.left, pageRect.top, cx, cy,
|
||
|
SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOREDRAW);
|
||
|
|
||
|
if (FALSE != fRedraw)
|
||
|
{
|
||
|
HRGN rgn1 = CreateRectRgnIndirect(&messageRect);
|
||
|
HRGN rgn2 = CreateRectRgn(pageRect.left, pageRect.top, pageRect.left + cx, pageRect.top + cy);
|
||
|
CombineRgn(rgn1, rgn1, rgn2, RGN_OR);
|
||
|
RedrawWindow(hwnd, NULL, rgn1, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ERASENOW | RDW_VALIDATE | RDW_ALLCHILDREN);
|
||
|
DeleteObject(rgn1);
|
||
|
DeleteObject(rgn2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
BOOL LoginPageInfo::OnInitDialog(HWND hFocus, LPARAM param)
|
||
|
{
|
||
|
HFONT fontText = NULL;
|
||
|
LoginGuiObject *loginGui;
|
||
|
if (SUCCEEDED(LoginGuiObject::QueryInstance(&loginGui)))
|
||
|
{
|
||
|
fontText = loginGui->GetTextFont();
|
||
|
loginGui->Release();
|
||
|
}
|
||
|
|
||
|
if (NULL != fontText)
|
||
|
{
|
||
|
HWND hMessage = GetDlgItem(hwnd, IDC_MESSAGE);
|
||
|
if (NULL != hMessage)
|
||
|
SendMessage(hMessage, WM_SETFONT, (WPARAM)fontText, 0L);
|
||
|
}
|
||
|
|
||
|
LoginPage::OnInitDialog(hFocus, param);
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
|
||
|
void LoginPageInfo::OnSetMessage(LPCWSTR pszMessage)
|
||
|
{
|
||
|
HWND hMessage = GetDlgItem(hwnd, IDC_MESSAGE);
|
||
|
if (NULL != hMessage)
|
||
|
{
|
||
|
SetWindowText(hMessage, pszMessage);
|
||
|
INT showWindow = (NULL != pszMessage && L'\0' != *pszMessage) ? SW_SHOWNA : SW_HIDE;
|
||
|
ShowWindow(hMessage, showWindow);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
INT_PTR LoginPageInfo::DialogProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
switch(uMsg)
|
||
|
{
|
||
|
case NLPIM_SETMESSAGE: OnSetMessage((LPCWSTR)lParam); return TRUE;
|
||
|
}
|
||
|
return __super::DialogProc(uMsg, wParam, lParam);
|
||
|
}
|
||
|
|