3 * FILE: dll/cpl/input/input.c
5 * PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
15 #define NUM_APPLETS (1)
17 static LONG CALLBACK
SystemApplet(VOID
);
19 HINSTANCE hApplet
= NULL
;
20 static HWND hCPLWindow
;
23 static APPLET Applets
[NUM_APPLETS
] =
25 {IDI_CPLSYSTEM
, IDS_CPLSYSTEMNAME
, IDS_CPLSYSTEMDESCRIPTION
, SystemApplet
}
30 InitPropSheetPage(PROPSHEETPAGEW
*page
, WORD idDlg
, DLGPROC DlgProc
)
32 ZeroMemory(page
, sizeof(*page
));
34 page
->dwSize
= sizeof(*page
);
35 page
->dwFlags
= PSP_DEFAULT
;
36 page
->hInstance
= hApplet
;
37 page
->pszTemplate
= MAKEINTRESOURCEW(idDlg
);
38 page
->pfnDlgProc
= DlgProc
;
42 PropSheetProc(HWND hwndDlg
, UINT uMsg
, LPARAM lParam
)
44 // NOTE: This callback is needed to set large icon correctly.
48 case PSCB_INITIALIZED
:
50 hIcon
= LoadIconW(hApplet
, MAKEINTRESOURCEW(IDI_CPLSYSTEM
));
51 SendMessageW(hwndDlg
, WM_SETICON
, ICON_BIG
, (LPARAM
)hIcon
);
62 PROPSHEETPAGEW page
[2];
63 PROPSHEETHEADERW header
;
64 WCHAR szCaption
[MAX_STR_LEN
];
66 LoadStringW(hApplet
, IDS_CPLSYSTEMNAME
, szCaption
, ARRAYSIZE(szCaption
));
68 ZeroMemory(&header
, sizeof(header
));
70 header
.dwSize
= sizeof(header
);
71 header
.dwFlags
= PSH_PROPSHEETPAGE
| PSH_USEICONID
| PSH_USECALLBACK
;
72 header
.hwndParent
= hCPLWindow
;
73 header
.hInstance
= hApplet
;
74 header
.pszIcon
= MAKEINTRESOURCEW(IDI_CPLSYSTEM
);
75 header
.pszCaption
= szCaption
;
76 header
.nPages
= ARRAYSIZE(page
);
77 header
.nStartPage
= 0;
79 header
.pfnCallback
= PropSheetProc
;
82 InitPropSheetPage(&page
[0], IDD_PROPPAGESETTINGS
, SettingsPageProc
);
84 /* Advanced Settings */
85 InitPropSheetPage(&page
[1], IDD_PROPPAGEADVANCEDSETTINGS
, AdvancedSettingsPageProc
);
87 return (LONG
)(PropertySheetW(&header
) != -1);
91 /* Control Panel Callback */
93 CPlApplet(HWND hwndCPl
, UINT uMsg
, LPARAM lParam1
, LPARAM lParam2
)
109 CPlInfo
= (CPLINFO
*)lParam2
;
111 CPlInfo
->idIcon
= Applets
[i
].idIcon
;
112 CPlInfo
->idName
= Applets
[i
].idName
;
113 CPlInfo
->idInfo
= Applets
[i
].idDescription
;
117 hCPLWindow
= hwndCPl
;
118 Applets
[i
].AppletProc();
127 DllMain(HINSTANCE hinstDLL
, DWORD dwReason
, LPVOID lpvReserved
)
129 UNREFERENCED_PARAMETER(lpvReserved
);
133 case DLL_PROCESS_ATTACH
:
134 case DLL_THREAD_ATTACH
: