BOOL CALLBACK UnitTestDialog::DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { AP_UNUSED_ARG(lParam); switch (message) { case WM_INITDIALOG: { RECT rDialog; ::GetClientRect(hDlg, &rDialog); int cx = 0; int cy = 0; if ((cx = ::GetSystemMetrics(SM_CXVIRTUALSCREEN)) == 0) { cx = ::GetSystemMetrics(SM_CXSCREEN); } if ((cy = ::GetSystemMetrics(SM_CYVIRTUALSCREEN)) == 0) { cy = ::GetSystemMetrics(SM_CYSCREEN); } if (cx !=0 && cy != 0) { // Center //::SetWindowPos(hDlg, NULL, (cx - (rDialog.right - rDialog.left)) / 3, (cy - (rDialog.bottom - rDialog.top)) / 3, 0, 0, SWP_NOSIZE|SWP_NOZORDER); // TopRight //::SetWindowPos(hDlg, NULL, cx - (rDialog.right - rDialog.left), 0, 0, 0, SWP_NOSIZE|SWP_NOZORDER); // By config ::SetWindowPos(hDlg, NULL, Apollo::getModuleConfig(MODULE_NAME, "Dialog/Left", 400), Apollo::getModuleConfig(MODULE_NAME, "Dialog/Top", 100), 0, 0, SWP_NOSIZE|SWP_NOZORDER); } ::SetWindowText(::GetDlgItem(hDlg, IDC_SUMMARY), pController_->Summary()); //::ShowWindow(hDlg, FALSE); } return TRUE; break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_EVALUATE: { if (pController_ != 0) { pController_->Evaluate(); } } break; } break; case WM_TIMER: switch (wParam) { case TimerShow: ::KillTimer(hDlg, wParam); ::ShowWindow(hDlg, TRUE); break; case TimerDestroy: ::KillTimer(hDlg, wParam); Destroy(); break; default:; } break; case WM_CLOSE: // Crashed on DestroyWindow when no tests (!?) //::DestroyWindow(hDlg); break; case WM_DESTROY: delete this; break; } return FALSE; }