//Copyright (c) 1997-2000 Microsoft Corporation #include "pch.hxx" // pch #pragma hdrstop #include "resource.h" #include "pgWizOpt.h" #include "w95trace.h" BOOL IsAdmin(); CWizardOptionsPg::CWizardOptionsPg( LPPROPSHEETPAGE ppsp ) : WizardPage(ppsp, IDS_WIZOPTTITLE, IDS_WIZOPTSUBTITLE) { m_dwPageId = IDD_WIZOPTIONS; ppsp->pszTemplate = MAKEINTRESOURCE(m_dwPageId); restoreOpt = FALSE; } CWizardOptionsPg::~CWizardOptionsPg( VOID ) { } DWORD g_rgdwWizNoOptionsSelected[] = {IDD_WIZNOOPTIONSSELECTED}; DWORD g_rgdwWizDoBlind[] = { IDD_FNTWIZSCROLLBAR, // scroll bar IDD_PREV_ICON2, IDD_PREV_COLOR, IDD_MSEWIZMOUSECURSOR, IDD_CARET }; DWORD g_rgdwWizDoSounds[] = { IDD_SNDWIZSENTRYSHOWSOUNDS, IDD_SNDWIZSENTRYSHOWSOUNDS2, }; DWORD g_rgdwWizDoKeyboardMouse[] = { IDD_KBDWIZSTICKYKEYS, IDD_KBDWIZFILTERKEYS1, IDD_KBDWIZFILTERKEYS2, IDD_KBDWIZTOGGLEKEYS, IDD_KBDWIZSHOWEXTRAKEYBOARDHELP, IDD_MSEWIZMOUSEKEYS, IDD_MSEWIZMOUSECURSOR, IDD_MSEWIZBUTTONCONFIG, IDD_MSEWIZMOUSESPEED }; DWORD g_rgdwWizDoAdmin[] = { IDD_WIZACCESSTIMEOUT, IDD_WIZWORKSTATIONDEFAULT }; DWORD g_rgdwWizFinalPages[] = { IDD_WIZFINISH }; BOOL CWizardOptionsPg::AdjustWizPageOrder() { BOOL bDoBlind = Button_GetCheck(GetDlgItem(m_hwnd, IDC_DOBLIND)); BOOL bDoSounds = Button_GetCheck(GetDlgItem(m_hwnd, IDC_DOSOUND)); BOOL bDoKeyboardMouse = Button_GetCheck(GetDlgItem(m_hwnd, IDC_DOKEYBOARDMOUSE)); BOOL bDoAdmin = Button_GetCheck(GetDlgItem(m_hwnd, IDC_DOADMIN)); BOOL bDoNoOptions = (!bDoBlind && !bDoSounds && !bDoKeyboardMouse && !bDoAdmin && !restoreOpt); // First remove all possible pages since we want to insert them in the correct order // Return value does not matter since the pages may not be in the array sm_WizPageOrder.RemovePages(g_rgdwWizNoOptionsSelected, ARRAYSIZE(g_rgdwWizNoOptionsSelected)); sm_WizPageOrder.RemovePages(g_rgdwWizDoBlind, ARRAYSIZE(g_rgdwWizDoBlind)); sm_WizPageOrder.RemovePages(g_rgdwWizDoSounds, ARRAYSIZE(g_rgdwWizDoSounds)); sm_WizPageOrder.RemovePages(g_rgdwWizDoKeyboardMouse, ARRAYSIZE(g_rgdwWizDoKeyboardMouse)); sm_WizPageOrder.RemovePages(g_rgdwWizDoAdmin, ARRAYSIZE(g_rgdwWizDoAdmin)); sm_WizPageOrder.RemovePages(g_rgdwWizFinalPages, ARRAYSIZE(g_rgdwWizFinalPages)); // Then Add in pages in groups in the reverse order that we want them to appear. // We do them this way since they are inserted after this page, so the first group inserted // will be the last group at the end of this. // NOTE: We do not care about the return value from AddPages() in the sense // that we they do not allocate or free memory so it does not hurt to keep calling them. We // Will propogate a return value of FALSE if any of them fail. BOOL bSuccess = TRUE; // Add Final Pages bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizFinalPages, ARRAYSIZE(g_rgdwWizFinalPages)); if(bDoNoOptions) bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizNoOptionsSelected, ARRAYSIZE(g_rgdwWizNoOptionsSelected)); if(bDoAdmin) { bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizDoAdmin, ARRAYSIZE(g_rgdwWizDoAdmin)); // Incase you are NOT an admin Remove admin page if ( !IsAdmin() ) sm_WizPageOrder.RemovePages(&g_rgdwWizDoAdmin[1], 1); } if(bDoKeyboardMouse) bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizDoKeyboardMouse, ARRAYSIZE(g_rgdwWizDoKeyboardMouse)); if(bDoSounds) bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizDoSounds, ARRAYSIZE(g_rgdwWizDoSounds)); if(bDoBlind) bSuccess = bSuccess && sm_WizPageOrder.AddPages(m_dwPageId, g_rgdwWizDoBlind, ARRAYSIZE(g_rgdwWizDoBlind)); return bSuccess; } LRESULT CWizardOptionsPg::OnCommand( HWND hwnd, WPARAM wParam, LPARAM lParam ) { LRESULT lResult = 1; WORD wNotifyCode = HIWORD(wParam); WORD wCtlID = LOWORD(wParam); HWND hwndCtl = (HWND)lParam; switch(wCtlID) { case IDC_BTNRESTORETODEFAULT: g_Options.ApplyWindowsDefault(); restoreOpt = TRUE; break; default: break; } return lResult; } BOOL IsAdmin() { HKEY hkey; BOOL fOk = (ERROR_SUCCESS == RegOpenKeyExA( HKEY_USERS, ".Default", 0, KEY_ALL_ACCESS, &hkey )); if(fOk) { RegCloseKey(hkey); } return fOk; }