158 lines
4.4 KiB
C++
158 lines
4.4 KiB
C++
|
//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;
|
||
|
}
|
||
|
|