98 lines
2.5 KiB
C++
98 lines
2.5 KiB
C++
#include "./pageError.h"
|
|
#include "./loginBox.h"
|
|
#include "./common.h"
|
|
#include "../resource.h"
|
|
|
|
|
|
static HRESULT CALLBACK LoginPageError_CreateInstance(HWND hwnd, HWND hLoginbox, LoginPage **instance)
|
|
{
|
|
if (NULL == instance) return E_POINTER;
|
|
if (NULL == hwnd || NULL == hLoginbox) return E_INVALIDARG;
|
|
|
|
*instance = new LoginPageError(hwnd, hLoginbox);
|
|
if (NULL == instance) return E_OUTOFMEMORY;
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
LoginPageError::LoginPageError(HWND hwnd, HWND hLoginbox)
|
|
: LoginPage(hwnd, hLoginbox)
|
|
{
|
|
}
|
|
|
|
LoginPageError::~LoginPageError()
|
|
{
|
|
}
|
|
|
|
HWND LoginPageError::CreatePage(HWND hLoginbox, HWND hParent)
|
|
{
|
|
return LoginPage::CreatePage(hLoginbox, MAKEINTRESOURCE(IDD_PAGE_ERROR),
|
|
hParent, NULL, LoginPageError_CreateInstance);
|
|
}
|
|
|
|
void LoginPageError::UpdateLayout(BOOL fRedraw)
|
|
{
|
|
LoginPage::UpdateLayout(fRedraw);
|
|
|
|
RECT clientRect;
|
|
GetClientRect(hwnd, &clientRect);
|
|
|
|
RECT offsetRect;
|
|
SetRect(&offsetRect, 2, 4, 4, 22);
|
|
MapDialogRect(hwnd, &offsetRect);
|
|
|
|
clientRect.left += offsetRect.left;
|
|
clientRect.top += offsetRect.top;
|
|
clientRect.right -= offsetRect.right;
|
|
clientRect.bottom -= offsetRect.bottom;
|
|
|
|
UINT flags = SWP_NOACTIVATE | SWP_NOZORDER;
|
|
if (FALSE == fRedraw) flags |= SWP_NOREDRAW;
|
|
|
|
const INT szControls[] = { IDC_MESSAGE, };
|
|
HDWP hdwp = BeginDeferWindowPos(ARRAYSIZE(szControls));
|
|
|
|
RECT rect;
|
|
LONG left, top = clientRect.top;
|
|
for (INT i = 0; i < ARRAYSIZE(szControls); i++)
|
|
{
|
|
HWND hControl = GetDlgItem(hwnd, szControls[i]);
|
|
if (NULL == hControl || FALSE == GetWindowRect(hControl, &rect)) continue;
|
|
MapWindowPoints(HWND_DESKTOP, hwnd, (POINT*)&rect, 2);
|
|
|
|
switch(szControls[i])
|
|
{
|
|
case IDC_MESSAGE:
|
|
top = clientRect.top + ((clientRect.bottom - clientRect.top) - (rect.bottom - rect.top))/2;
|
|
left = clientRect.left + ((clientRect.right - clientRect.left) - (rect.right - rect.left))/2;
|
|
OffsetRect(&rect, left - rect.left, top - rect.top);
|
|
break;
|
|
}
|
|
|
|
hdwp = DeferWindowPos(hdwp, hControl, NULL, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, flags);
|
|
if (NULL == hdwp) break;
|
|
}
|
|
|
|
if (NULL != hdwp)
|
|
EndDeferWindowPos(hdwp);
|
|
|
|
}
|
|
|
|
HBRUSH LoginPageError::OnGetStaticColor(HDC hdc, HWND hControl)
|
|
{
|
|
INT_PTR controlId = (INT_PTR)GetWindowLongPtr(hControl, GWLP_ID);
|
|
switch(controlId)
|
|
{
|
|
case IDC_MESSAGE:
|
|
SetTextColor(hdc, rgbSecondaryText);
|
|
SetBkColor(hdc, rgbBack);
|
|
return hbrBack;
|
|
}
|
|
|
|
return LoginPage::OnGetStaticColor(hdc, hControl);
|
|
}
|
|
|
|
BOOL LoginPageError::OnGetLoginData(LoginData **ppLoginData)
|
|
{
|
|
return FALSE;
|
|
} |