[SYSDM]
[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 HWND hCPLWindow;
21
22 /* Applets */
23 APPLET Applets[NUM_APPLETS] =
24 {
25 {IDI_CPLSYSTEM, IDS_CPLSYSTEMNAME, IDS_CPLSYSTEMDESCRIPTION, SystemApplet}
26 };
27
28
29 VOID
30 InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
31 {
32 ZeroMemory(psp, sizeof(PROPSHEETPAGE));
33 psp->dwSize = sizeof(PROPSHEETPAGE);
34 psp->dwFlags = PSP_DEFAULT;
35 psp->hInstance = hApplet;
36 psp->pszTemplate = MAKEINTRESOURCE(idDlg);
37 psp->pfnDlgProc = DlgProc;
38 }
39
40
41 /* First Applet */
42
43 LONG CALLBACK
44 SystemApplet(VOID)
45 {
46 PROPSHEETPAGE psp[1];
47 PROPSHEETHEADER psh;
48 TCHAR Caption[1024];
49
50 LoadString(hApplet, IDS_CPLSYSTEMNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
51
52 ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
53 psh.dwSize = sizeof(PROPSHEETHEADER);
54 psh.dwFlags = PSH_PROPSHEETPAGE;
55 psh.hwndParent = hCPLWindow;
56 psh.hInstance = hApplet;
57 psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_CPLSYSTEM));
58 psh.pszCaption = Caption;
59 psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
60 psh.nStartPage = 0;
61 psh.ppsp = psp;
62 psh.pfnCallback = NULL;
63
64 InitPropSheetPage(&psp[0], IDD_PROPPAGESETTINGS, (DLGPROC) SettingPageProc);
65
66 return (LONG)(PropertySheet(&psh) != -1);
67 }
68
69
70 /* Control Panel Callback */
71 LONG CALLBACK
72 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
73 {
74 CPLINFO *CPlInfo;
75 DWORD i;
76
77 i = (DWORD)lParam1;
78 switch (uMsg)
79 {
80 case CPL_INIT:
81 return TRUE;
82
83 case CPL_GETCOUNT:
84 return NUM_APPLETS;
85
86 case CPL_INQUIRE:
87 CPlInfo = (CPLINFO*)lParam2;
88 CPlInfo->lData = 0;
89 CPlInfo->idIcon = Applets[i].idIcon;
90 CPlInfo->idName = Applets[i].idName;
91 CPlInfo->idInfo = Applets[i].idDescription;
92 break;
93
94 case CPL_DBLCLK:
95 hCPLWindow = hwndCPl;
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 */