Merge all settings in a single struct. This is required to implement the administrative options.

svn path=/trunk/; revision=29088
This commit is contained in:
Eric Kohl 2007-09-17 22:29:35 +00:00
parent fec8f2d929
commit c04f5503a6
7 changed files with 83 additions and 91 deletions

View file

@ -26,8 +26,9 @@ APPLET Applets[NUM_APPLETS] =
{IDI_CPLACCESS, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet} {IDI_CPLACCESS, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
}; };
static VOID static VOID
InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc) InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc, PGLOBAL_DATA pGlobalData)
{ {
ZeroMemory(psp, sizeof(PROPSHEETPAGE)); ZeroMemory(psp, sizeof(PROPSHEETPAGE));
psp->dwSize = sizeof(PROPSHEETPAGE); psp->dwSize = sizeof(PROPSHEETPAGE);
@ -35,6 +36,7 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
psp->hInstance = hApplet; psp->hInstance = hApplet;
psp->pszTemplate = MAKEINTRESOURCE(idDlg); psp->pszTemplate = MAKEINTRESOURCE(idDlg);
psp->pfnDlgProc = DlgProc; psp->pfnDlgProc = DlgProc;
psp->lParam = (LPARAM)pGlobalData;
} }
@ -43,12 +45,18 @@ InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
LONG CALLBACK LONG CALLBACK
SystemApplet(VOID) SystemApplet(VOID)
{ {
PGLOBAL_DATA pGlobalData;
PROPSHEETPAGE psp[5]; PROPSHEETPAGE psp[5];
PROPSHEETHEADER psh; PROPSHEETHEADER psh;
TCHAR Caption[1024]; TCHAR Caption[1024];
INT ret;
LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR)); LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA));
if (pGlobalData == NULL)
return 0;
ZeroMemory(&psh, sizeof(PROPSHEETHEADER)); ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE; psh.dwFlags = PSH_PROPSHEETPAGE;
@ -60,13 +68,17 @@ SystemApplet(VOID)
psh.nStartPage = 0; psh.nStartPage = 0;
psh.ppsp = psp; psh.ppsp = psp;
InitPropSheetPage(&psp[0], IDD_PROPPAGEKEYBOARD, (DLGPROC)KeyboardPageProc); InitPropSheetPage(&psp[0], IDD_PROPPAGEKEYBOARD, (DLGPROC)KeyboardPageProc, pGlobalData);
InitPropSheetPage(&psp[1], IDD_PROPPAGESOUND, (DLGPROC)SoundPageProc); InitPropSheetPage(&psp[1], IDD_PROPPAGESOUND, (DLGPROC)SoundPageProc, pGlobalData);
InitPropSheetPage(&psp[2], IDD_PROPPAGEDISPLAY, (DLGPROC)DisplayPageProc); InitPropSheetPage(&psp[2], IDD_PROPPAGEDISPLAY, (DLGPROC)DisplayPageProc, pGlobalData);
InitPropSheetPage(&psp[3], IDD_PROPPAGEMOUSE, (DLGPROC)MousePageProc); InitPropSheetPage(&psp[3], IDD_PROPPAGEMOUSE, (DLGPROC)MousePageProc, pGlobalData);
InitPropSheetPage(&psp[4], IDD_PROPPAGEGENERAL, (DLGPROC)GeneralPageProc); InitPropSheetPage(&psp[4], IDD_PROPPAGEGENERAL, (DLGPROC)GeneralPageProc, pGlobalData);
return (LONG)(PropertySheet(&psh) != -1); ret = PropertySheet(&psh);
HeapFree(GetProcessHeap(), 0, pGlobalData);
return (LONG)(ret != -1);
} }
/* Control Panel Callback */ /* Control Panel Callback */

View file

@ -11,6 +11,44 @@ typedef struct _APPLET
APPLET_INITPROC AppletProc; APPLET_INITPROC AppletProc;
} APPLET, *PAPPLET; } APPLET, *PAPPLET;
typedef struct _GLOBAL_DATA
{
/* keyboard page */
STICKYKEYS stickyKeys;
STICKYKEYS oldStickyKeys;
FILTERKEYS filterKeys;
FILTERKEYS oldFilterKeys;
TOGGLEKEYS toggleKeys;
TOGGLEKEYS oldToggleKeys;
BOOL bKeyboardPref;
/* sound page */
SOUNDSENTRY ssSoundSentry;
BOOL bShowSounds;
/* display page */
HIGHCONTRAST highContrast;
UINT uCaretBlinkTime;
UINT uCaretWidth;
BOOL fShowCaret;
RECT rcCaret;
RECT rcOldCaret;
/* mouse page */
MOUSEKEYS mouseKeys;
/* general page */
ACCESSTIMEOUT accessTimeout;
SERIALKEYS serialKeys;
TCHAR szActivePort[MAX_PATH];
TCHAR szPort[MAX_PATH];
BOOL bWarningSounds;
BOOL bSoundOnActivation;
} GLOBAL_DATA, *PGLOBAL_DATA;
extern HINSTANCE hApplet; extern HINSTANCE hApplet;
void ShowLastWin32Error(HWND hWndOwner); void ShowLastWin32Error(HWND hWndOwner);

View file

@ -16,15 +16,6 @@
#include "resource.h" #include "resource.h"
#include "access.h" #include "access.h"
typedef struct _GLOBAL_DATA
{
HIGHCONTRAST highContrast;
UINT uCaretBlinkTime;
UINT uCaretWidth;
BOOL fShowCaret;
RECT rcCaret;
RECT rcOldCaret;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define ID_BLINK_TIMER 346 #define ID_BLINK_TIMER 346
@ -154,7 +145,7 @@ DisplayPageProc(HWND hwndDlg,
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL) if (pGlobalData == NULL)
return FALSE; return FALSE;
@ -290,7 +281,6 @@ DisplayPageProc(HWND hwndDlg,
case WM_DESTROY: case WM_DESTROY:
KillTimer(hwndDlg, ID_BLINK_TIMER); KillTimer(hwndDlg, ID_BLINK_TIMER);
HeapFree(GetProcessHeap(), 0, pGlobalData);
break; break;
} }

View file

@ -18,17 +18,6 @@
#include "access.h" #include "access.h"
typedef struct _GLOBAL_DATA
{
ACCESSTIMEOUT accessTimeout;
SERIALKEYS serialKeys;
TCHAR szActivePort[MAX_PATH];
TCHAR szPort[MAX_PATH];
BOOL bWarningSounds;
BOOL bSoundOnActivation;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define BAUDTICKS 6 #define BAUDTICKS 6
static INT nBaudArray[BAUDTICKS] = {300, 1200, 2400, 4800, 9600, 19200}; static INT nBaudArray[BAUDTICKS] = {300, 1200, 2400, 4800, 9600, 19200};
@ -267,7 +256,7 @@ GeneralPageProc(HWND hwndDlg,
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL) if (pGlobalData == NULL)
return FALSE; return FALSE;
@ -367,10 +356,7 @@ GeneralPageProc(HWND hwndDlg,
return TRUE; return TRUE;
} }
break; break;
}
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break; }
return FALSE; return FALSE;
} }

View file

@ -17,17 +17,6 @@
#include "resource.h" #include "resource.h"
#include "access.h" #include "access.h"
typedef struct _GLOBAL_DATA
{
STICKYKEYS stickyKeys;
STICKYKEYS oldStickyKeys;
FILTERKEYS filterKeys;
FILTERKEYS oldFilterKeys;
TOGGLEKEYS toggleKeys;
TOGGLEKEYS oldToggleKeys;
BOOL bKeyboardPref;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define BOUNCETICKS 5 #define BOUNCETICKS 5
static INT nBounceArray[BOUNCETICKS] = {500, 700, 1000, 1500, 2000}; static INT nBounceArray[BOUNCETICKS] = {500, 700, 1000, 1500, 2000};
@ -666,7 +655,7 @@ KeyboardPageProc(HWND hwndDlg,
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL) if (pGlobalData == NULL)
return FALSE; return FALSE;
@ -756,10 +745,6 @@ KeyboardPageProc(HWND hwndDlg,
return TRUE; return TRUE;
} }
break; break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break;
} }
return FALSE; return FALSE;

View file

@ -16,11 +16,6 @@
#include "resource.h" #include "resource.h"
#include "access.h" #include "access.h"
typedef struct _GLOBAL_DATA
{
MOUSEKEYS mouseKeys;
} GLOBAL_DATA, *PGLOBAL_DATA;
#define SPEEDTICKS 9 #define SPEEDTICKS 9
#define ACCELTICKS 9 #define ACCELTICKS 9
@ -165,7 +160,7 @@ MousePageProc(HWND hwndDlg,
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
if (pGlobalData == NULL) if (pGlobalData == NULL)
return FALSE; return FALSE;
@ -218,10 +213,6 @@ MousePageProc(HWND hwndDlg,
return TRUE; return TRUE;
} }
break; break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pGlobalData);
break;
} }
return FALSE; return FALSE;

View file

@ -16,28 +16,21 @@
#include "access.h" #include "access.h"
typedef struct _SOUNDDATA
{
SOUNDSENTRY ssSoundSentry;
BOOL bShowSounds;
} SOUNDDATA, *PSOUNDDATA;
static VOID static VOID
OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData) OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
{ {
TCHAR szBuffer[256]; TCHAR szBuffer[256];
UINT i; UINT i;
pSoundData->ssSoundSentry.cbSize = sizeof(SOUNDSENTRY); pGlobalData->ssSoundSentry.cbSize = sizeof(SOUNDSENTRY);
SystemParametersInfo(SPI_GETSOUNDSENTRY, SystemParametersInfo(SPI_GETSOUNDSENTRY,
sizeof(SOUNDSENTRY), sizeof(SOUNDSENTRY),
&pSoundData->ssSoundSentry, &pGlobalData->ssSoundSentry,
0); 0);
SystemParametersInfo(SPI_GETSHOWSOUNDS, SystemParametersInfo(SPI_GETSHOWSOUNDS,
0, 0,
&pSoundData->bShowSounds, &pGlobalData->bShowSounds,
0); 0);
/* Add strings to the combo-box */ /* Add strings to the combo-box */
@ -48,10 +41,10 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
} }
/* Select a combo-box item */ /* Select a combo-box item */
SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_SETCURSEL, pSoundData->ssSoundSentry.iWindowsEffect, 0); SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_SETCURSEL, pGlobalData->ssSoundSentry.iWindowsEffect, 0);
/* Initialize SoundSentry settings */ /* Initialize SoundSentry settings */
if (!(pSoundData->ssSoundSentry.dwFlags & SSF_AVAILABLE)) if (!(pGlobalData->ssSoundSentry.dwFlags & SSF_AVAILABLE))
{ {
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_BOX), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_BOX), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), FALSE);
@ -59,7 +52,7 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
} }
else else
{ {
if (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON) if (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)
{ {
CheckDlgButton(hwndDlg, IDC_SENTRY_BOX, BST_CHECKED); CheckDlgButton(hwndDlg, IDC_SENTRY_BOX, BST_CHECKED);
} }
@ -71,7 +64,7 @@ OnInitDialog(HWND hwndDlg, PSOUNDDATA pSoundData)
} }
/* Initialize ShowSounds settings */ /* Initialize ShowSounds settings */
if (pSoundData->bShowSounds) if (pGlobalData->bShowSounds)
CheckDlgButton(hwndDlg, IDC_SSHOW_BOX, BST_CHECKED); CheckDlgButton(hwndDlg, IDC_SSHOW_BOX, BST_CHECKED);
} }
@ -83,40 +76,41 @@ SoundPageProc(HWND hwndDlg,
WPARAM wParam, WPARAM wParam,
LPARAM lParam) LPARAM lParam)
{ {
PSOUNDDATA pSoundData; PGLOBAL_DATA pGlobalData;
pSoundData = (PSOUNDDATA)GetWindowLongPtr(hwndDlg, DWLP_USER); pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
pSoundData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SOUNDDATA)); pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pSoundData);
OnInitDialog(hwndDlg, pSoundData); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
OnInitDialog(hwndDlg, pGlobalData);
break; break;
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case IDC_SENTRY_BOX: case IDC_SENTRY_BOX:
pSoundData->ssSoundSentry.dwFlags ^= SSF_SOUNDSENTRYON; pGlobalData->ssSoundSentry.dwFlags ^= SSF_SOUNDSENTRYON;
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), (pSoundData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg); PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break; break;
case IDC_SENTRY_COMBO: case IDC_SENTRY_COMBO:
if (HIWORD(wParam) == CBN_SELENDOK) if (HIWORD(wParam) == CBN_SELENDOK)
{ {
pSoundData->ssSoundSentry.iWindowsEffect = pGlobalData->ssSoundSentry.iWindowsEffect =
(DWORD)SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0); (DWORD)SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg); PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
} }
break; break;
case IDC_SSHOW_BOX: case IDC_SSHOW_BOX:
pSoundData->bShowSounds = !pSoundData->bShowSounds; pGlobalData->bShowSounds = !pGlobalData->bShowSounds;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg); PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break; break;
@ -131,10 +125,10 @@ SoundPageProc(HWND hwndDlg,
case PSN_APPLY: case PSN_APPLY:
SystemParametersInfo(SPI_SETSOUNDSENTRY, SystemParametersInfo(SPI_SETSOUNDSENTRY,
sizeof(SOUNDSENTRY), sizeof(SOUNDSENTRY),
&pSoundData->ssSoundSentry, &pGlobalData->ssSoundSentry,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETSHOWSOUNDS, SystemParametersInfo(SPI_SETSHOWSOUNDS,
pSoundData->bShowSounds, pGlobalData->bShowSounds,
0, 0,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
return TRUE; return TRUE;
@ -143,10 +137,6 @@ SoundPageProc(HWND hwndDlg,
break; break;
} }
break; break;
case WM_DESTROY:
HeapFree(GetProcessHeap(), 0, pSoundData);
break;
} }
return FALSE; return FALSE;