[DINPUT]
[reactos.git] / reactos / dll / cpl / usrmgr / usrmgr.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS User Manager Control Panel
4 * FILE: dll/cpl/usrmgr/usrmgr.c
5 * PURPOSE: Main functions
6 *
7 * PROGRAMMERS: Eric Kohl
8 */
9
10 #include "usrmgr.h"
11
12 #define NUM_APPLETS 1
13
14 static LONG APIENTRY UsrmgrApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam);
15
16 HINSTANCE hApplet = 0;
17
18 /* Applets */
19 APPLET Applets[NUM_APPLETS] =
20 {
21 {
22 IDI_USRMGR_ICON,
23 IDS_CPLNAME,
24 IDS_CPLDESCRIPTION,
25 UsrmgrApplet
26 }
27 };
28
29
30 static VOID
31 InitPropSheetPage(PROPSHEETPAGE *psp, WORD idDlg, DLGPROC DlgProc)
32 {
33 ZeroMemory(psp, sizeof(PROPSHEETPAGE));
34 psp->dwSize = sizeof(PROPSHEETPAGE);
35 psp->dwFlags = PSP_DEFAULT;
36 psp->hInstance = hApplet;
37 psp->pszTemplate = MAKEINTRESOURCE(idDlg);
38 psp->pfnDlgProc = DlgProc;
39 }
40
41
42 /* Display Applet */
43 static LONG APIENTRY
44 UsrmgrApplet(HWND hwnd, UINT uMsg, LPARAM wParam, LPARAM lParam)
45 {
46 PROPSHEETPAGE psp[3];
47 PROPSHEETHEADER psh;
48 TCHAR Caption[1024];
49
50 UNREFERENCED_PARAMETER(lParam);
51 UNREFERENCED_PARAMETER(wParam);
52 UNREFERENCED_PARAMETER(uMsg);
53
54 LoadString(hApplet, IDS_CPLNAME, Caption, sizeof(Caption) / sizeof(TCHAR));
55
56 ZeroMemory(&psh, sizeof(PROPSHEETHEADER));
57 psh.dwSize = sizeof(PROPSHEETHEADER);
58 psh.dwFlags = PSH_PROPSHEETPAGE;
59 psh.hwndParent = hwnd;
60 psh.hInstance = hApplet;
61 psh.hIcon = LoadIcon(hApplet, MAKEINTRESOURCE(IDI_USRMGR_ICON));
62 psh.pszCaption = Caption;
63 psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
64 psh.nStartPage = 0;
65 psh.ppsp = psp;
66
67 InitPropSheetPage(&psp[0], IDD_USERS, (DLGPROC)UsersPageProc);
68 InitPropSheetPage(&psp[1], IDD_GROUPS, (DLGPROC)GroupsPageProc);
69 InitPropSheetPage(&psp[2], IDD_EXTRA, (DLGPROC)ExtraPageProc);
70
71 return (LONG)(PropertySheet(&psh) != -1);
72 }
73
74
75 /* Control Panel Callback */
76 LONG CALLBACK
77 CPlApplet(HWND hwndCPl, UINT uMsg, LPARAM lParam1, LPARAM lParam2)
78 {
79 int i = (int)lParam1;
80
81 switch (uMsg)
82 {
83 case CPL_INIT:
84 return TRUE;
85
86 case CPL_GETCOUNT:
87 return NUM_APPLETS;
88
89 case CPL_INQUIRE:
90 {
91 CPLINFO *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 }
97 break;
98
99 case CPL_DBLCLK:
100 Applets[i].AppletProc(hwndCPl, uMsg, lParam1, lParam2);
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 hApplet = hinstDLL;
117 break;
118 }
119
120 return TRUE;
121 }