* Sync up to trunk head (r64716).
[reactos.git] / dll / cpl / input / input.c
1 /*
2 * PROJECT: input.dll
3 * FILE: dll/win32/input/input.c
4 * PURPOSE: input.dll
5 * PROGRAMMER: Dmitry Chapyshev (lentind@yandex.ru)
6 * Colin Finck
7 * UPDATE HISTORY:
8 * 06-09-2007 Created
9 */
10
11 #include "input.h"
12
13 #include <cpl.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[2];
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 /* Settings */
65 InitPropSheetPage(&psp[0], IDD_PROPPAGESETTINGS, (DLGPROC)SettingsPageProc);
66
67 /* Advanced Settings */
68 InitPropSheetPage(&psp[1], IDD_PROPPAGEADVANCEDSETTINGS, (DLGPROC)AdvancedSettingsPageProc);
69
70 return (LONG)(PropertySheet(&psh) != -1);
71 }
72
73
74 /* Control Panel Callback */
75 LONG CALLBACK
76 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
77 {
78 CPLINFO *CPlInfo;
79 DWORD i;
80
81 i = (DWORD)lParam1;
82 switch (uMsg)
83 {
84 case CPL_INIT:
85 return TRUE;
86
87 case CPL_GETCOUNT:
88 return NUM_APPLETS;
89
90 case CPL_INQUIRE:
91 CPlInfo = (CPLINFO*)lParam2;
92 CPlInfo->lData = 0;
93 CPlInfo->idIcon = Applets[i].idIcon;
94 CPlInfo->idName = Applets[i].idName;
95 CPlInfo->idInfo = Applets[i].idDescription;
96 break;
97
98 case CPL_DBLCLK:
99 hCPLWindow = hwndCPl;
100 Applets[i].AppletProc();
101 break;
102 }
103
104 return FALSE;
105 }
106
107
108 BOOL WINAPI
109 DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
110 {
111 UNREFERENCED_PARAMETER(lpvReserved);
112
113 switch (dwReason)
114 {
115 case DLL_PROCESS_ATTACH:
116 case DLL_THREAD_ATTACH:
117 hApplet = hinstDLL;
118 hProcessHeap = GetProcessHeap();
119 break;
120 }
121
122 return TRUE;
123 }
124
125 /* EOF */