/*
* PROJECT: input.dll
- * FILE: dll/win32/input/input.c
+ * FILE: dll/cpl/input/input.c
* PURPOSE: input.dll
* PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
* Colin Finck
#define NUM_APPLETS (1)
-LONG CALLBACK SystemApplet(VOID);
-HINSTANCE hApplet = 0;
-HANDLE hProcessHeap;
-HWND hCPLWindow;
+static LONG CALLBACK SystemApplet(VOID);
+
+HINSTANCE hApplet = NULL;
+static HWND hCPLWindow;
/* Applets */
-APPLET Applets[NUM_APPLETS] =
+static APPLET Applets[NUM_APPLETS] =
{
{IDI_CPLSYSTEM, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
};
-VOID
-InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
+static VOID
+InitPropSheetPage(PROPSHEETPAGEW *page, WORD idDlg, DLGPROC DlgProc)
{
- ZeroMemory(psp, sizeof(PROPSHEETPAGE));
- psp->dwSize = sizeof(PROPSHEETPAGE);
- psp->dwFlags = PSP_DEFAULT;
- psp->hInstance = hApplet;
- psp->pszTemplate = MAKEINTRESOURCE(idDlg);
- psp->pfnDlgProc = DlgProc;
+ ZeroMemory(page, sizeof(*page));
+
+ page->dwSize = sizeof(*page);
+ page->dwFlags = PSP_DEFAULT;
+ page->hInstance = hApplet;
+ page->pszTemplate = MAKEINTRESOURCEW(idDlg);
+ page->pfnDlgProc = DlgProc;
}
+static int CALLBACK
+PropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam)
+{
+ // NOTE: This callback is needed to set large icon correctly.
+ HICON hIcon;
+ switch (uMsg)
+ {
+ case PSCB_INITIALIZED:
+ {
+ hIcon = LoadIconW(hApplet, MAKEINTRESOURCEW(IDI_KEY_SHORT_ICO));
+ SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
+ break;
+ }
+ }
+ return 0;
+}
/* First Applet */
-
-LONG CALLBACK
+static LONG CALLBACK
SystemApplet(VOID)
{
- PROPSHEETPAGE psp[2];
- PROPSHEETHEADER psh;
- TCHAR Caption[1024];
-
- LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
-
- ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
- psh.dwSize = sizeof(PROPSHEETHEADER);
- psh.dwFlags = PSH_PROPSHEETPAGE;
- psh.hwndParent = hCPLWindow;
- psh.hInstance = hApplet;
- psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM));
- psh.pszCaption = Caption;
- psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
- psh.nStartPage = 0;
- psh.ppsp = psp;
- psh.pfnCallback = NULL;
+ PROPSHEETPAGEW page[2];
+ PROPSHEETHEADERW header;
+ WCHAR szCaption[MAX_STR_LEN];
+
+ LoadStringW(hApplet, IDS_CPLSYSTEMNAME, szCaption, ARRAYSIZE(szCaption));
+
+ ZeroMemory(&header, sizeof(header));
+
+ header.dwSize = sizeof(header);
+ header.dwFlags = PSH_PROPSHEETPAGE | PSH_USEICONID | PSH_USECALLBACK;
+ header.hwndParent = hCPLWindow;
+ header.hInstance = hApplet;
+ header.pszIcon = MAKEINTRESOURCEW(IDI_KEY_SHORT_ICO);
+ header.pszCaption = szCaption;
+ header.nPages = ARRAYSIZE(page);
+ header.nStartPage = 0;
+ header.ppsp = page;
+ header.pfnCallback = PropSheetProc;
/* Settings */
- InitPropSheetPage(&psp[0], IDD_PROPPAGESETTINGS, (DLGPROC)SettingsPageProc);
+ InitPropSheetPage(&page[0], IDD_PROPPAGESETTINGS, SettingsPageProc);
/* Advanced Settings */
- InitPropSheetPage(&psp[1], IDD_PROPPAGEADVANCEDSETTINGS, (DLGPROC)AdvancedSettingsPageProc);
+ InitPropSheetPage(&page[1], IDD_PROPPAGEADVANCEDSETTINGS, AdvancedSettingsPageProc);
- return (LONG)(PropertySheet(&psh) != -1);
+ return (LONG)(PropertySheetW(&header) != -1);
}
DWORD i;
i = (DWORD)lParam1;
+
switch (uMsg)
{
case CPL_INIT:
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
hApplet = hinstDLL;
- hProcessHeap = GetProcessHeap();
break;
}