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>
12 LONG CALLBACK
SystemApplet(VOID
);
13 HINSTANCE hApplet
= 0;
17 APPLET Applets
[NUM_APPLETS
] =
19 {IDI_CPLSYSTEM
, IDS_CPLSYSTEMNAME
, IDS_CPLSYSTEMDESCRIPTION
, SystemApplet
}
22 #define MAX_SYSTEM_PAGES 32
25 PropSheetAddPage(HPROPSHEETPAGE hpage
, LPARAM lParam
)
27 PROPSHEETHEADER
*ppsh
= (PROPSHEETHEADER
*)lParam
;
28 if (ppsh
!= NULL
&& ppsh
->nPages
< MAX_SYSTEM_PAGES
)
30 ppsh
->phpage
[ppsh
->nPages
++] = hpage
;
38 InitPropSheetPage(PROPSHEETHEADER
*ppsh
, WORD idDlg
, DLGPROC DlgProc
)
43 if (ppsh
->nPages
< MAX_SYSTEM_PAGES
)
45 ZeroMemory(&psp
, sizeof(psp
));
46 psp
.dwSize
= sizeof(psp
);
47 psp
.dwFlags
= PSP_DEFAULT
;
48 psp
.hInstance
= hApplet
;
49 psp
.pszTemplate
= MAKEINTRESOURCE(idDlg
);
50 psp
.pfnDlgProc
= DlgProc
;
52 hPage
= CreatePropertySheetPage(&psp
);
55 return PropSheetAddPage(hPage
, (LPARAM
)ppsh
);
62 typedef HPROPSHEETPAGE (WINAPI
*PCreateNetIDPropertyPage
)(VOID
);
65 AddNetIdPage(PROPSHEETHEADER
*ppsh
)
69 PCreateNetIDPropertyPage pCreateNetIdPage
;
71 hMod
= LoadLibrary(TEXT("netid.dll"));
74 pCreateNetIdPage
= (PCreateNetIDPropertyPage
)GetProcAddress(hMod
,
75 "CreateNetIDPropertyPage");
76 if (pCreateNetIdPage
!= NULL
)
78 hPage
= pCreateNetIdPage();
82 if (!PropSheetAddPage(hPage
, (LPARAM
)ppsh
))
84 DestroyPropertySheetPage(hPage
);
103 HPROPSHEETPAGE hpsp
[MAX_SYSTEM_PAGES
];
108 static INITCOMMONCONTROLSEX icc
= {sizeof(INITCOMMONCONTROLSEX
), ICC_LINK_CLASS
};
110 if (!InitCommonControlsEx(&icc
))
113 ZeroMemory(&psh
, sizeof(PROPSHEETHEADER
));
114 psh
.dwSize
= sizeof(PROPSHEETHEADER
);
115 psh
.dwFlags
= PSH_PROPTITLE
;
116 psh
.hwndParent
= hCPLWindow
;
117 psh
.hInstance
= hApplet
;
118 psh
.hIcon
= LoadIcon(hApplet
, MAKEINTRESOURCE(IDI_CPLSYSTEM
));
119 psh
.pszCaption
= MAKEINTRESOURCE(IDS_CPLSYSTEMNAME
);
123 psh
.pfnCallback
= NULL
;
125 InitPropSheetPage(&psh
, IDD_PROPPAGEGENERAL
, (DLGPROC
) GeneralPageProc
);
126 hNetIdDll
= AddNetIdPage(&psh
);
127 InitPropSheetPage(&psh
, IDD_PROPPAGEHARDWARE
, (DLGPROC
) HardwarePageProc
);
128 InitPropSheetPage(&psh
, IDD_PROPPAGEADVANCED
, (DLGPROC
) AdvancedPageProc
);
130 /* Load additional pages provided by shell extensions */
131 hpsxa
= SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE
, REGSTR_PATH_CONTROLSFOLDER
TEXT("\\System"), MAX_SYSTEM_PAGES
- psh
.nPages
);
134 SHAddFromPropSheetExtArray(hpsxa
, PropSheetAddPage
, (LPARAM
)&psh
);
137 Ret
= (LONG
)(PropertySheet(&psh
) != -1);
141 SHDestroyPropSheetExtArray(hpsxa
);
144 if (hNetIdDll
!= NULL
)
145 FreeLibrary(hNetIdDll
);
150 /* Control Panel Callback */
152 CPlApplet(HWND hwndCPl
,
157 INT i
= (INT
)lParam1
;
159 UNREFERENCED_PARAMETER(hwndCPl
);
171 CPLINFO
*CPlInfo
= (CPLINFO
*)lParam2
;
173 CPlInfo
->idIcon
= Applets
[i
].idIcon
;
174 CPlInfo
->idName
= Applets
[i
].idName
;
175 CPlInfo
->idInfo
= Applets
[i
].idDescription
;
180 hCPLWindow
= hwndCPl
;
181 Applets
[i
].AppletProc();
190 DllMain(HINSTANCE hinstDLL
,
194 UNREFERENCED_PARAMETER(lpvReserved
);
198 case DLL_PROCESS_ATTACH
:
199 case DLL_THREAD_ATTACH
: