// AVOptions.cpp : Implementation of CAppVerifierOptions #include "precomp.h" #include "avoptions.h" #include #include extern BOOL g_bBreakOnLog; extern BOOL g_bFullPageHeap; extern BOOL g_bPropagateTests; extern wstring g_wstrExeName; BOOL CALLBACK CAppVerifierOptions::DlgViewOptions( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { switch (message) { case WM_INITDIALOG: return TRUE; case WM_NOTIFY: switch (((NMHDR FAR *) lParam)->code) { case PSN_APPLY: ::SetWindowLongPtr(hDlg, DWLP_MSGRESULT, PSNRET_NOERROR); break; case PSN_QUERYCANCEL: return FALSE; } } return FALSE; } void CAppVerifierOptions::CreatePropertySheet( HWND hWndParent ) { CTestInfo* pTest; DWORD dwPages = 1; DWORD dwPage = 0; LPCWSTR szExe = g_wstrExeName.c_str(); // // count the number of pages // for (pTest = g_aTestInfo.begin(); pTest != g_aTestInfo.end(); pTest++) { if (pTest->PropSheetPage.pfnDlgProc) { dwPages++; } } m_phPages = new HPROPSHEETPAGE[dwPages]; if (!m_phPages) { return; } // // init the global page // m_PageGlobal.dwSize = sizeof(PROPSHEETPAGE); m_PageGlobal.dwFlags = PSP_USETITLE; m_PageGlobal.hInstance = g_hInstance; m_PageGlobal.pszTemplate = MAKEINTRESOURCE(IDD_AV_OPTIONS); m_PageGlobal.pfnDlgProc = DlgViewOptions; m_PageGlobal.pszTitle = MAKEINTRESOURCE(IDS_GLOBAL_OPTIONS); m_PageGlobal.lParam = 0; m_PageGlobal.pfnCallback = NULL; m_phPages[0] = CreatePropertySheetPage(&m_PageGlobal); if (!m_phPages[0]) { // // we need the global page minimum // return; } // // add the pages for the various tests // dwPage = 1; for (pTest = g_aTestInfo.begin(); pTest != g_aTestInfo.end(); pTest++) { if (pTest->PropSheetPage.pfnDlgProc) { // // we use the lParam to identify the exe involved // pTest->PropSheetPage.lParam = (LPARAM)szExe; m_phPages[dwPage] = CreatePropertySheetPage(&(pTest->PropSheetPage)); if (!m_phPages[dwPage]) { dwPages--; } else { dwPage++; } } } //wstring wstrOptions; //AVLoadString(IDS_OPTIONS_TITLE, wstrOptions); //wstrOptions += L" - "; //wstrOptions += szExe; m_psh.dwSize = sizeof(PROPSHEETHEADER); m_psh.dwFlags = PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP; m_psh.hwndParent = hWndParent; m_psh.hInstance = g_hInstance; m_psh.pszCaption = L"Options"; m_psh.nPages = dwPages; m_psh.nStartPage = 0; m_psh.phpage = m_phPages; m_psh.pfnCallback = NULL; } HWND CAppVerifierOptions::CreateControlWindow( HWND hwndParent, RECT& rcPos ) { //HWND hwnd = //CComCompositeControl::CreateControlWindow(hwndParent, rcPos); // // Now would be a good time to check all the global options. // /*if (g_bBreakOnLog) { SendMessage(GetDlgItem(IDC_BREAK_ON_LOG), BM_SETCHECK, BST_CHECKED, 0); } if (g_bFullPageHeap) { SendMessage(GetDlgItem(IDC_FULL_PAGEHEAP), BM_SETCHECK, BST_CHECKED, 0); } if (g_bPropagateTests) { SendMessage(GetDlgItem(IDC_PROPAGATE_TESTS_TO_CHILDREN), BM_SETCHECK, BST_CHECKED, 0); }*/ //m_hWndOptionsDlg = hwnd; m_hWndParent = hwndParent; return NULL; } LRESULT CAppVerifierOptions::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { CreatePropertySheet(m_hWndParent); bHandled = TRUE; return 0; } LRESULT CAppVerifierOptions::OnClose( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { bHandled = FALSE; return 0; } // // We receive this when the dialog is being displayed. // LRESULT CAppVerifierOptions::OnSetFocus( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { PropertySheet(&m_psh); bHandled = TRUE; return 0; } LRESULT CAppVerifierOptions::OnItemChecked( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled ) { bHandled = TRUE; BOOL bCheck = (SendMessage(hWndCtl, BM_GETCHECK, 0, 0) == BST_CHECKED) ? TRUE : FALSE; switch (wID) { case IDC_BREAK_ON_LOG: g_bBreakOnLog = bCheck; break; case IDC_FULL_PAGEHEAP: g_bFullPageHeap = bCheck; break; case IDC_PROPAGATE_TESTS_TO_CHILDREN: g_bPropagateTests = bCheck; break; default: bHandled = FALSE; break; } return 0; }