2 * PROJECT: ReactOS System Control Panel Applet
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/cpl/sysdm/sysdm.c
5 * PURPOSE: dll entry file
6 * COPYRIGHT: Copyright Thomas Weidenmueller <w3seek@reactos.org>
15 LONG CALLBACK
SystemApplet(VOID
);
16 HINSTANCE hApplet
= 0;
20 APPLET Applets
[NUM_APPLETS
] =
22 {IDI_CPLSYSTEM
, IDS_CPLSYSTEMNAME
, IDS_CPLSYSTEMDESCRIPTION
, SystemApplet
}
25 #define MAX_SYSTEM_PAGES 32
30 IN HINSTANCE hInstance
,
39 LoadStringW(hInstance
, uCaption
, szCaption
, 256);
40 LoadStringW(hInstance
, uText
, szText
, 256);
42 return MessageBoxW(hwnd
,
50 PropSheetAddPage(HPROPSHEETPAGE hpage
, LPARAM lParam
)
52 PROPSHEETHEADER
*ppsh
= (PROPSHEETHEADER
*)lParam
;
53 if (ppsh
!= NULL
&& ppsh
->nPages
< MAX_SYSTEM_PAGES
)
55 ppsh
->phpage
[ppsh
->nPages
++] = hpage
;
63 InitPropSheetPage(PROPSHEETHEADER
*ppsh
, WORD idDlg
, DLGPROC DlgProc
)
68 if (ppsh
->nPages
< MAX_SYSTEM_PAGES
)
70 ZeroMemory(&psp
, sizeof(psp
));
71 psp
.dwSize
= sizeof(psp
);
72 psp
.dwFlags
= PSP_DEFAULT
;
73 psp
.hInstance
= hApplet
;
74 psp
.pszTemplate
= MAKEINTRESOURCE(idDlg
);
75 psp
.pfnDlgProc
= DlgProc
;
77 hPage
= CreatePropertySheetPage(&psp
);
80 return PropSheetAddPage(hPage
, (LPARAM
)ppsh
);
87 typedef HPROPSHEETPAGE (WINAPI
*PCreateNetIDPropertyPage
)(VOID
);
90 AddNetIdPage(PROPSHEETHEADER
*ppsh
)
94 PCreateNetIDPropertyPage pCreateNetIdPage
;
96 hMod
= LoadLibrary(TEXT("netid.dll"));
99 pCreateNetIdPage
= (PCreateNetIDPropertyPage
)GetProcAddress(hMod
,
100 "CreateNetIDPropertyPage");
101 if (pCreateNetIdPage
!= NULL
)
103 hPage
= pCreateNetIdPage();
107 if (!PropSheetAddPage(hPage
, (LPARAM
)ppsh
))
109 DestroyPropertySheetPage(hPage
);
128 HPROPSHEETPAGE hpsp
[MAX_SYSTEM_PAGES
];
133 static INITCOMMONCONTROLSEX icc
= {sizeof(INITCOMMONCONTROLSEX
), ICC_LINK_CLASS
};
135 if (!InitCommonControlsEx(&icc
))
138 ZeroMemory(&psh
, sizeof(PROPSHEETHEADER
));
139 psh
.dwSize
= sizeof(PROPSHEETHEADER
);
140 psh
.dwFlags
= PSH_PROPTITLE
;
141 psh
.hwndParent
= hCPLWindow
;
142 psh
.hInstance
= hApplet
;
143 psh
.hIcon
= LoadIcon(hApplet
, MAKEINTRESOURCE(IDI_CPLSYSTEM
));
144 psh
.pszCaption
= MAKEINTRESOURCE(IDS_CPLSYSTEMNAME
);
148 psh
.pfnCallback
= NULL
;
150 InitPropSheetPage(&psh
, IDD_PROPPAGEGENERAL
, (DLGPROC
) GeneralPageProc
);
151 hNetIdDll
= AddNetIdPage(&psh
);
152 InitPropSheetPage(&psh
, IDD_PROPPAGEHARDWARE
, (DLGPROC
) HardwarePageProc
);
153 InitPropSheetPage(&psh
, IDD_PROPPAGEADVANCED
, (DLGPROC
) AdvancedPageProc
);
155 /* Load additional pages provided by shell extensions */
156 hpsxa
= SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE
, REGSTR_PATH_CONTROLSFOLDER
TEXT("\\System"), MAX_SYSTEM_PAGES
- psh
.nPages
);
159 SHAddFromPropSheetExtArray(hpsxa
, PropSheetAddPage
, (LPARAM
)&psh
);
162 Ret
= (LONG
)(PropertySheet(&psh
) != -1);
166 SHDestroyPropSheetExtArray(hpsxa
);
169 if (hNetIdDll
!= NULL
)
170 FreeLibrary(hNetIdDll
);
175 /* Control Panel Callback */
177 CPlApplet(HWND hwndCPl
,
182 INT i
= (INT
)lParam1
;
184 UNREFERENCED_PARAMETER(hwndCPl
);
196 CPLINFO
*CPlInfo
= (CPLINFO
*)lParam2
;
198 CPlInfo
->idIcon
= Applets
[i
].idIcon
;
199 CPlInfo
->idName
= Applets
[i
].idName
;
200 CPlInfo
->idInfo
= Applets
[i
].idDescription
;
205 hCPLWindow
= hwndCPl
;
206 Applets
[i
].AppletProc();
215 DllMain(HINSTANCE hinstDLL
,
219 UNREFERENCED_PARAMETER(lpvReserved
);
223 case DLL_PROCESS_ATTACH
:
224 case DLL_THREAD_ATTACH
: