|
|
/*++
Microsoft Confidential Copyright (c) 1992-1997 Microsoft Corporation All rights reserved
Module Name:
advanced.c
Abstract:
Implements the Advanced tab of the System Control Panel Applet.
Author:
Scott Hallock (scotthal) 15-Oct-1997
--*/ #include "sysdm.h"
//
// Help IDs
//
DWORD aAdvancedHelpIds[] = { IDC_ADV_PERF_TEXT, (IDH_ADVANCED + 0), IDC_ADV_PERF_BTN, (IDH_ADVANCED + 1), IDC_ADV_ENV_TEXT, (IDH_ADVANCED + 2), IDC_ADV_ENV_BTN, (IDH_ADVANCED + 3), IDC_ADV_RECOVERY_TEXT, (IDH_ADVANCED + 4), IDC_ADV_RECOVERY_BTN, (IDH_ADVANCED + 5), IDC_ADV_PROF_TEXT, (IDH_ADVANCED + 6), IDC_ADV_PROF_BTN, (IDH_ADVANCED + 7), IDC_ADV_PFR_BTN, (IDH_PFR + 99), 0, 0 }; //
// Private function prototypes
//
BOOL AdvancedHandleCommand( IN HWND hDlg, IN WPARAM wParam, IN LPARAM lParam );
BOOL AdvancedHandleNotify( IN HWND hDlg, IN WPARAM wParam, IN LPARAM lParam );
INT_PTR APIENTRY AdvancedDlgProc( IN HWND hDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) /*++
Routine Description:
Handles messages sent to the Advanced page
Arguments:
hDlg - Window handle
uMsg - Message being sent
wParam - Message parameter
lParam - Message parameter
Return Value:
TRUE if message was handled FALSE if message was unhandled
--*/ {
switch (uMsg) { case WM_COMMAND: return(AdvancedHandleCommand(hDlg, wParam, lParam)); break;
case WM_NOTIFY: return(AdvancedHandleNotify(hDlg, wParam, lParam)); break;
case WM_HELP: // F1
WinHelp((HWND)((LPHELPINFO) lParam)->hItemHandle, HELP_FILE, HELP_WM_HELP, (DWORD_PTR) (LPSTR) aAdvancedHelpIds); break; case WM_CONTEXTMENU: // right mouse click
WinHelp((HWND) wParam, HELP_FILE, HELP_CONTEXTMENU, (DWORD_PTR) (LPSTR) aAdvancedHelpIds); break;
default: return(FALSE); } // switch
return(TRUE);
}
static const PSPINFO c_pspPerf[] = { { CreatePage, IDD_VISUALEFFECTS, VisualEffectsDlgProc }, { CreatePage, IDD_ADVANCEDPERF, PerformanceDlgProc }, };
void DoPerformancePS(HWND hDlg) { PROPSHEETHEADER psh; HPROPSHEETPAGE rPages[ARRAYSIZE(c_pspPerf)]; int i;
//
// Property sheet stuff.
//
psh.dwSize = sizeof(psh); psh.dwFlags = PSH_DEFAULT; psh.hInstance = hInstance; psh.hwndParent = hDlg; psh.pszCaption = MAKEINTRESOURCE(IDS_PERFOPTIONS); psh.nPages = 0; psh.nStartPage = 0; psh.phpage = rPages;
for (i = 0; i < ARRAYSIZE(c_pspPerf); i++) { rPages[psh.nPages] = c_pspPerf[i].pfnCreatePage(c_pspPerf[i].idd, c_pspPerf[i].pfnDlgProc); if (rPages[psh.nPages] != NULL) { psh.nPages++; } }
//
// Display the property sheet.
//
PropertySheet(&psh); }
BOOL AdvancedHandleCommand( IN HWND hDlg, IN WPARAM wParam, IN LPARAM lParam ) /*++
Routine Description:
Handles WM_COMMAND messages sent to Advanced tab
Arguments:
hDlg - Supplies window handle
wParam - Supplies message parameter
lParam - Supplies message parameter
Return Value:
TRUE if message was handled FALSE if message was unhandled
--*/ { DWORD_PTR dwResult = 0;
switch (LOWORD(wParam)) { case IDC_ADV_PERF_BTN: DoPerformancePS(hDlg); break; case IDC_ADV_PROF_BTN: { dwResult = DialogBox( hInstance, (LPTSTR) MAKEINTRESOURCE(IDD_USERPROFILE), hDlg, UserProfileDlgProc); break; }
case IDC_ADV_ENV_BTN: dwResult = DialogBox( hInstance, (LPTSTR) MAKEINTRESOURCE(IDD_ENVVARS), hDlg, EnvVarsDlgProc );
break;
case IDC_ADV_RECOVERY_BTN: dwResult = DialogBox( hInstance, (LPTSTR) MAKEINTRESOURCE(IDD_STARTUP), hDlg, StartupDlgProc );
break;
case IDC_ADV_PFR_BTN: { INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex); icex.dwICC = ICC_LISTVIEW_CLASSES;
if (InitCommonControlsEx(&icex) == FALSE) MessageBoxW(NULL, L"ICEX failed.", NULL, MB_OK);
dwResult = DialogBox(hInstance, MAKEINTRESOURCE(IsOS(OS_ANYSERVER) ? IDD_PFR_REPORTSRV : IDD_PFR_REPORT), hDlg, PFRDlgProc); break; }
default: return(FALSE); } // switch
return(TRUE);
}
BOOL AdvancedHandleNotify( IN HWND hDlg, IN WPARAM wParam, IN LPARAM lParam ) /*++
Routine Description:
Handles WM_NOTIFY messages sent to Advanced tab
Arguments:
hDlg - Supplies window handle
wParam - Supplies message parameter
lParam - Supplies message parameter
Return Value:
TRUE if message was handled FALSE if message was unhandled
--*/ { LPNMHDR pnmh = (LPNMHDR) lParam; LPPSHNOTIFY psh = (LPPSHNOTIFY) lParam;
switch (pnmh->code) { case PSN_APPLY: //
// If the user is pressing "OK" and a reboot is required,
// send the PSM_REBOOTSYSTEM message.
//
if ((psh->lParam) && g_fRebootRequired) { PropSheet_RebootSystem(GetParent(hDlg)); } // if
break;
default: return(FALSE);
} // switch
return(TRUE); }
|