f6e3aa94aeaf7e1ad52db8327d8c87a175776b97
[reactos.git] / reactos / dll / cpl / input / input.c
1 /*
2 *
3 * PROJECT: input.dll
4 * FILE: dll/win32/input/input.c
5 * PURPOSE: input.dll
6 * PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
7 * Colin Finck
8 * UPDATE HISTORY:
9 * 06-09-2007 Created
10 */
11
12 #include "resource.h"
13 #include "input.h"
14
15 #define NUM_APPLETS (1)
16
17 LONG CALLBACK SystemApplet(VOID);
18 HINSTANCE hApplet = 0;
19 HANDLE hProcessHeap;
20
21 /* Applets */
22 APPLET Applets[NUM_APPLETS] =
23 {
24 {IDI_CPLSYSTEM, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
25 };
26
27
28 VOID
29 InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
30 {
31 ZeroMemory(psp, sizeof(PROPSHEETPAGE));
32 psp->dwSize = sizeof(PROPSHEETPAGE);
33 psp->dwFlags = PSP_DEFAULT;
34 psp->hInstance = hApplet;
35 psp->pszTemplate = MAKEINTRESOURCE(idDlg);
36 psp->pfnDlgProc = DlgProc;
37 }
38
39
40 /* First Applet */
41
42 LONG CALLBACK
43 SystemApplet(VOID)
44 {
45 PROPSHEETPAGE psp[1];
46 PROPSHEETHEADER psh;
47 TCHAR Caption[1024];
48
49 LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
50
51 ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
52 psh.dwSize = sizeof(PROPSHEETHEADER);
53 psh.dwFlags = PSH_PROPSHEETPAGE;
54 psh.hwndParent = NULL;
55 psh.hInstance = hApplet;
56 psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM));
57 psh.pszCaption = Caption;
58 psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
59 psh.nStartPage = 0;
60 psh.ppsp = psp;
61 psh.pfnCallback = NULL;
62
63 InitPropSheetPage(&psp[0], IDD_PROPPAGESETTINGS, (DLGPROC) SettingPageProc);
64
65 return (LONG)(PropertySheet(&psh) != -1);
66 }
67
68
69 /* Control Panel Callback */
70 LONG CALLBACK
71 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
72 {
73 CPLINFO *CPlInfo;
74 DWORD i;
75
76 UNREFERENCED_PARAMETER(hwndCPl);
77
78 i = (DWORD)lParam1;
79 switch (uMsg)
80 {
81 case CPL_INIT:
82 return TRUE;
83
84 case CPL_GETCOUNT:
85 return NUM_APPLETS;
86
87 case CPL_INQUIRE:
88 CPlInfo = (CPLINFO*)lParam2;
89 CPlInfo->lData = 0;
90 CPlInfo->idIcon = Applets[i].idIcon;
91 CPlInfo->idName = Applets[i].idName;
92 CPlInfo->idInfo = Applets[i].idDescription;
93 break;
94
95 case CPL_DBLCLK:
96 Applets[i].AppletProc();
97 break;
98 }
99
100 return FALSE;
101 }
102
103
104 BOOL WINAPI
105 DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
106 {
107 UNREFERENCED_PARAMETER(lpvReserved);
108
109 switch (dwReason)
110 {
111 case DLL_PROCESS_ATTACH:
112 case DLL_THREAD_ATTACH:
113 hApplet = hinstDLL;
114 hProcessHeap = GetProcessHeap();
115 break;
116 }
117
118 return TRUE;
119 }
120
121 /* EOF */