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;
16 APPLET Applets
[NUM_APPLETS
] =
18 {IDI_CPLSYSTEM
, IDS_CPLSYSTEMNAME
, IDS_CPLSYSTEMDESCRIPTION
, SystemApplet
}
21 #define MAX_SYSTEM_PAGES 32
24 PropSheetAddPage(HPROPSHEETPAGE hpage
, LPARAM lParam
)
26 PROPSHEETHEADER
*ppsh
= (PROPSHEETHEADER
*)lParam
;
27 if (ppsh
!= NULL
&& ppsh
->nPages
< MAX_SYSTEM_PAGES
)
29 ppsh
->phpage
[ppsh
->nPages
++] = hpage
;
37 InitPropSheetPage(PROPSHEETHEADER
*ppsh
, WORD idDlg
, DLGPROC DlgProc
)
42 if (ppsh
->nPages
< MAX_SYSTEM_PAGES
)
44 ZeroMemory(&psp
, sizeof(psp
));
45 psp
.dwSize
= sizeof(psp
);
46 psp
.dwFlags
= PSP_DEFAULT
;
47 psp
.hInstance
= hApplet
;
48 psp
.pszTemplate
= MAKEINTRESOURCE(idDlg
);
49 psp
.pfnDlgProc
= DlgProc
;
51 hPage
= CreatePropertySheetPage(&psp
);
54 return PropSheetAddPage(hPage
, (LPARAM
)ppsh
);
61 typedef HPROPSHEETPAGE (WINAPI
*PCreateNetIDPropertyPage
)(VOID
);
64 AddNetIdPage(PROPSHEETHEADER
*ppsh
)
68 PCreateNetIDPropertyPage pCreateNetIdPage
;
70 hMod
= LoadLibrary(TEXT("netid.dll"));
73 pCreateNetIdPage
= (PCreateNetIDPropertyPage
)GetProcAddress(hMod
,
74 "CreateNetIDPropertyPage");
75 if (pCreateNetIdPage
!= NULL
)
77 hPage
= pCreateNetIdPage();
81 if (!PropSheetAddPage(hPage
, (LPARAM
)ppsh
))
83 DestroyPropertySheetPage(hPage
);
102 HPROPSHEETPAGE hpsp
[MAX_SYSTEM_PAGES
];
107 static INITCOMMONCONTROLSEX icc
= {sizeof(INITCOMMONCONTROLSEX
), ICC_LINK_CLASS
};
109 if (!InitCommonControlsEx(&icc
))
112 ZeroMemory(&psh
, sizeof(PROPSHEETHEADER
));
113 psh
.dwSize
= sizeof(PROPSHEETHEADER
);
114 psh
.dwFlags
= PSH_PROPTITLE
;
115 psh
.hwndParent
= NULL
;
116 psh
.hInstance
= hApplet
;
117 psh
.hIcon
= LoadIcon(hApplet
, MAKEINTRESOURCE(IDI_CPLSYSTEM
));
118 psh
.pszCaption
= MAKEINTRESOURCE(IDS_CPLSYSTEMNAME
);
122 psh
.pfnCallback
= NULL
;
124 InitPropSheetPage(&psh
, IDD_PROPPAGEGENERAL
, (DLGPROC
) GeneralPageProc
);
125 hNetIdDll
= AddNetIdPage(&psh
);
126 InitPropSheetPage(&psh
, IDD_PROPPAGEHARDWARE
, (DLGPROC
) HardwarePageProc
);
127 InitPropSheetPage(&psh
, IDD_PROPPAGEADVANCED
, (DLGPROC
) AdvancedPageProc
);
129 /* Load additional pages provided by shell extensions */
130 hpsxa
= SHCreatePropSheetExtArray(HKEY_LOCAL_MACHINE
, REGSTR_PATH_CONTROLSFOLDER
TEXT("\\System"), MAX_SYSTEM_PAGES
- psh
.nPages
);
133 SHAddFromPropSheetExtArray(hpsxa
, PropSheetAddPage
, (LPARAM
)&psh
);
136 Ret
= (LONG
)(PropertySheet(&psh
) != -1);
140 SHDestroyPropSheetExtArray(hpsxa
);
143 if (hNetIdDll
!= NULL
)
144 FreeLibrary(hNetIdDll
);
149 /* Control Panel Callback */
157 int i
= (int)lParam1
;
158 UNREFERENCED_PARAMETER(hwndCPl
);
172 CPLINFO
*CPlInfo
= (CPLINFO
*)lParam2
;
174 CPlInfo
->idIcon
= Applets
[i
].idIcon
;
175 CPlInfo
->idName
= Applets
[i
].idName
;
176 CPlInfo
->idInfo
= Applets
[i
].idDescription
;
181 Applets
[i
].AppletProc();
195 UNREFERENCED_PARAMETER(lpvReserved
);
198 case DLL_PROCESS_ATTACH
:
199 case DLL_THREAD_ATTACH
: