10 #pragma warning(disable:4201)
15 #define SNDMSG ::SendMessage
17 #define SNDMSG SendMessage
19 #endif /* ifndef SNDMSG */
21 #define MAXPROPPAGES 100
23 #define PSP_DLGINDIRECT 1
24 #define PSP_USEHICON 2
25 #define PSP_USEICONID 4
26 #define PSP_USETITLE 8
27 #define PSP_RTLREADING 16
28 #define PSP_HASHELP 32
29 #define PSP_USEREFPARENT 64
30 #define PSP_USECALLBACK 128
31 #define PSP_PREMATURE 1024
32 #if (_WIN32_IE >= 0x0400)
33 #define PSP_HIDEHEADER 2048
34 #define PSP_USEHEADERTITLE 4096
35 #define PSP_USEHEADERSUBTITLE 8192
37 #define PSPCB_RELEASE 1
38 #define PSPCB_CREATE 2
40 #define PSH_PROPTITLE 1
41 #define PSH_USEHICON 2
42 #define PSH_USEICONID 4
43 #define PSH_PROPSHEETPAGE 8
44 #define PSH_WIZARDHASFINISH 16
46 #define PSH_USEPSTARTPAGE 64
47 #define PSH_NOAPPLYNOW 128
48 #define PSH_USECALLBACK 256
49 #define PSH_HASHELP 512
50 #define PSH_MODELESS 1024
51 #define PSH_RTLREADING 2048
52 #define PSH_WIZARDCONTEXTHELP 4096
53 #if (_WIN32_IE >= 0x0400)
54 #define PSH_WATERMARK 32768
55 #define PSH_USEHBMWATERMARK 65536
56 #define PSH_USEHPLWATERMARK 131072
57 #define PSH_STRETCHWATERMARK 262144
58 #define PSH_HEADER 524288
59 #define PSH_USEHBMHEADER 1048576
60 #define PSH_USEPAGELANG 2097152
61 #if (_WIN32_IE < 0x0500)
62 #define PSH_WIZARD97 0x00002000
64 #define PSH_WIZARD97 0x01000000
67 #define PSH_WIZARD97_OLD 0x00002000
68 #define PSH_WIZARD97_NEW 0x01000000
70 #endif /* _WIN32_IE >= 0x0400 */
71 #if (_WIN32_IE >= 0x0500)
72 #define PSH_WIZARD_LITE 0x400000
73 #define PSH_NOCONTEXTHELP 0x2000000
75 #define PSCB_INITIALIZED 1
76 #define PSCB_PRECREATE 2
77 #if (_WIN32_IE >= 0x560)
78 #define PSCB_BUTTONPRESSED 3
79 #endif /* _WIN32_IE >= 0x560 */
80 #define PSM_GETTABCONTROL 1140
81 #define PSM_GETCURRENTPAGEHWND 1142
82 #if (_WIN32_IE >= 0x0500)
83 #define PSM_GETRESULT 1159
84 #define PropSheet_GetResult(hDlg) SNDMSG(hDlg, PSM_GETRESULT, 0, 0)
86 #define PSM_HWNDTOINDEX 1153
87 #define PropSheet_HwndToIndex(hDlg, hwnd) \
88 (int)SNDMSG(hDlg, PSM_HWNDTOINDEX, (WPARAM)(hwnd), 0)
90 #define PSM_IDTOINDEX 1157
91 #define PSM_INDEXTOHWND 1154
92 #define PSM_INDEXTOID 1158
93 #define PSM_INDEXTOPAGE 1156
94 #define PSM_INSERTPAGE 1143
95 #endif /* _WIN32_IE >= 0x0500 */
96 #define PSM_ISDIALOGMESSAGE 1141
97 #if (_WIN32_IE >= 0x0500)
98 #define PSM_PAGETOINDEX 1155
99 #endif /* _WIN32_IE >= 0x0500 */
100 #define PSM_PRESSBUTTON 1137
101 #if (_WIN32_IE >= 0x0500)
102 #define PSM_RECALCPAGESIZES 1160
103 #endif /* _WIN32_IE >= 0x0500 */
104 #define PSM_SETCURSELID 1138
105 #define PSM_SETFINISHTEXTW 1145
106 #define PSM_SETFINISHTEXTA 1139
107 #if (_WIN32_IE >= 0x0500)
108 #define PSM_SETHEADERTITLEA 1149
109 #define PSM_SETHEADERTITLEW 1150
110 #define PSM_SETHEADERSUBTITLEA 1151
111 #define PSM_SETHEADERSUBTITLEW 1152
114 #define PSN_FIRST (0U - 200U)
115 #define PSN_SETACTIVE (PSN_FIRST - 0)
116 #define PSN_KILLACTIVE (PSN_FIRST - 1)
117 #define PSN_APPLY (PSN_FIRST - 2)
118 #define PSN_RESET (PSN_FIRST - 3)
119 #define PSN_HELP (PSN_FIRST - 5)
120 #define PSN_WIZBACK (PSN_FIRST - 6)
121 #define PSN_WIZNEXT (PSN_FIRST - 7)
122 #define PSN_WIZFINISH (PSN_FIRST - 8)
123 #define PSN_QUERYCANCEL (PSN_FIRST - 9)
124 #define PSN_GETOBJECT (PSN_FIRST - 10)
125 #define PSN_TRANSLATEACCELERATOR (PSN_FIRST - 12)
126 #define PSN_QUERYINITIALFOCUS (PSN_FIRST - 13)
127 #define PSN_LAST (PSN_FIRST - 99)
129 #define PSNRET_NOERROR 0
130 #define PSNRET_INVALID 1
131 #define PSNRET_INVALID_NOCHANGEPAGE 2
132 #define ID_PSRESTARTWINDOWS 2
133 #define ID_PSREBOOTSYSTEM 3
134 #define WIZ_CXDLG 276
135 #define WIZ_CYDLG 140
138 #define WIZ_BODYCX 184
139 #define PROP_SM_CXDLG 212
140 #define PROP_SM_CYDLG 188
141 #define PROP_MED_CXDLG 227
142 #define PROP_MED_CYDLG 215
143 #define PROP_LG_CXDLG 252
144 #define PROP_LG_CYDLG 218
148 #define PSBTN_FINISH 2
150 #define PSBTN_APPLYNOW 4
151 #define PSBTN_CANCEL 5
153 #define PSWIZB_BACK 1
154 #define PSWIZB_NEXT 2
155 #define PSWIZB_FINISH 4
156 #define PSWIZB_DISABLEDFINISH 8
157 #define PSM_SETWIZBUTTONS (WM_USER+112)
158 #define PSM_APPLY (WM_USER+110)
159 #define PSM_UNCHANGED (WM_USER+109)
160 #define PSM_QUERYSIBLINGS (WM_USER+108)
161 #define PSM_CANCELTOCLOSE (WM_USER+107)
162 #define PSM_REBOOTSYSTEM (WM_USER+106)
163 #define PSM_RESTARTWINDOWS (WM_USER+105)
164 #define PSM_CHANGED (WM_USER+104)
165 #define PSM_ADDPAGE (WM_USER+103)
166 #define PSM_REMOVEPAGE (WM_USER+102)
167 #define PSM_SETCURSEL (WM_USER+101)
168 #define PSM_SETTITLEA (WM_USER+111)
169 #define PSM_SETTITLEW (WM_USER+120)
171 #define PSPCB_ADDREF 0
176 typedef struct _PROPSHEETPAGEA
{
180 _ANONYMOUS_UNION
union {
182 LPCDLGTEMPLATE pResource
;
184 _ANONYMOUS_UNION
union {
191 UINT(CALLBACK
*pfnCallback
)(HWND
,UINT
,struct _PROPSHEETPAGEA
*);
193 #if (_WIN32_IE >= 0x0400)
194 LPCSTR pszHeaderTitle
;
195 LPCSTR pszHeaderSubTitle
;
197 } PROPSHEETPAGEA
,*LPPROPSHEETPAGEA
,
198 PROPSHEETPAGEA_LATEST
, *LPPROPSHEETPAGEA_LATEST
;
199 typedef const PROPSHEETPAGEA
*LPCPROPSHEETPAGEA
, *LPCPROPSHEETPAGEA_LATEST
;
200 #define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pcRefParent)
201 #define PROPSHEETPAGEA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, pszHeaderSubTitle)
202 #define PROPSHEETPAGEA_V3_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA, hActCtx)
203 #define PROPSHEETPAGEA_V4_SIZE sizeof(PROPSHEETPAGEA)
204 typedef struct _PROPSHEETPAGEW
{
208 _ANONYMOUS_UNION
union {
210 LPCDLGTEMPLATE pResource
;
212 _ANONYMOUS_UNION
union {
219 UINT(CALLBACK
*pfnCallback
)(HWND
,UINT
,struct _PROPSHEETPAGEW
*);
221 #if (_WIN32_IE >= 0x0400)
222 LPCWSTR pszHeaderTitle
;
223 LPCWSTR pszHeaderSubTitle
;
225 } PROPSHEETPAGEW
,*LPPROPSHEETPAGEW
,
226 PROPSHEETPAGEW_LATEST
, *LPPROPSHEETPAGEW_LATEST
;
227 typedef const PROPSHEETPAGEW
*LPCPROPSHEETPAGEW
, *LPCPROPSHEETPAGEW_LATEST
;
228 #define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pcRefParent)
229 #define PROPSHEETPAGEW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, pszHeaderSubTitle)
230 #define PROPSHEETPAGEW_V3_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW, hActCtx)
231 #define PROPSHEETPAGEW_V4_SIZE sizeof(PROPSHEETPAGEW)
232 typedef UINT(CALLBACK
*LPFNPSPCALLBACKA
)(HWND
,UINT
,LPPROPSHEETPAGEA
);
233 typedef UINT(CALLBACK
*LPFNPSPCALLBACKW
)(HWND
,UINT
,LPPROPSHEETPAGEW
);
234 typedef int(CALLBACK
*PFNPROPSHEETCALLBACK
)(HWND
,UINT
,LPARAM
);
235 #ifndef _HPROPSHEETPAGE_DEFINED
236 #define _HPROPSHEETPAGE_DEFINED
237 DECLARE_HANDLE(HPROPSHEETPAGE
);
238 #endif /* _HPROPSHEETPAGE_DEFINED */
239 typedef struct _PROPSHEETHEADERA
{
244 _ANONYMOUS_UNION
union {
250 _ANONYMOUS_UNION
union {
254 _ANONYMOUS_UNION
union {
255 LPCPROPSHEETPAGEA ppsp
;
256 HPROPSHEETPAGE
*phpage
;
258 PFNPROPSHEETCALLBACK pfnCallback
;
259 #if (_WIN32_IE >= 0x0400)
260 _ANONYMOUS_UNION
union {
261 HBITMAP hbmWatermark
;
262 LPCSTR pszbmWatermark
;
264 HPALETTE hplWatermark
;
265 _ANONYMOUS_UNION
union {
270 } PROPSHEETHEADERA
,*LPPROPSHEETHEADERA
;
271 typedef const PROPSHEETHEADERA
*LPCPROPSHEETHEADERA
;
272 #define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA, pfnCallback)
273 #define PROPSHEETHEADERA_V2_SIZE sizeof(PROPSHEETHEADERA)
274 typedef struct _PROPSHEETHEADERW
{
279 _ANONYMOUS_UNION
union {
285 _ANONYMOUS_UNION
union {
289 _ANONYMOUS_UNION
union {
290 LPCPROPSHEETPAGEW ppsp
;
291 HPROPSHEETPAGE
*phpage
;
293 PFNPROPSHEETCALLBACK pfnCallback
;
294 #if (_WIN32_IE >= 0x0400)
295 _ANONYMOUS_UNION
union {
296 HBITMAP hbmWatermark
;
297 LPCWSTR pszbmWatermark
;
299 HPALETTE hplWatermark
;
300 _ANONYMOUS_UNION
union {
305 } PROPSHEETHEADERW
,*LPPROPSHEETHEADERW
;
306 typedef const PROPSHEETHEADERW
*LPCPROPSHEETHEADERW
;
307 #define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW, pfnCallback)
308 #define PROPSHEETHEADERW_V2_SIZE sizeof(PROPSHEETHEADERW)
309 typedef BOOL(CALLBACK
*LPFNADDPROPSHEETPAGE
)(HPROPSHEETPAGE
,LPARAM
);
310 typedef BOOL(CALLBACK
*LPFNADDPROPSHEETPAGES
)(LPVOID
,LPFNADDPROPSHEETPAGE
,LPARAM
);
311 typedef struct _PSHNOTIFY
{
314 } PSHNOTIFY
,*LPPSHNOTIFY
;
318 HPROPSHEETPAGE WINAPI
CreatePropertySheetPageA(LPCPROPSHEETPAGEA
);
319 HPROPSHEETPAGE WINAPI
CreatePropertySheetPageW(LPCPROPSHEETPAGEW
);
320 BOOL WINAPI
DestroyPropertySheetPage(HPROPSHEETPAGE
);
321 INT_PTR WINAPI
PropertySheetA(LPCPROPSHEETHEADERA
);
322 INT_PTR WINAPI
PropertySheetW(LPCPROPSHEETHEADERW
);
323 #define PropSheet_AddPage(d,p) SendMessage(d,PSM_ADDPAGE,0,(LPARAM)p)
324 #define PropSheet_Apply(d) SendMessage(d,PSM_APPLY,0,0)
325 #define PropSheet_CancelToClose(d) SendMessage(d,PSM_CANCELTOCLOSE,0,0)
326 #define PropSheet_Changed(d,w) SendMessage(d,PSM_CHANGED,(WPARAM)w,0)
327 #define PropSheet_GetCurrentPageHwnd(d) (HWND)SendMessage(d,PSM_GETCURRENTPAGEHWND,0,0)
328 #define PropSheet_GetTabControl(d) (HWND)SendMessage(d,PSM_GETTABCONTROL,0,0)
329 #define PropSheet_IsDialogMessage(d,m) (BOOL)SendMessage(d,PSM_ISDIALOGMESSAGE,0,(LPARAM)m)
330 #define PropSheet_PressButton(d,i) SendMessage(d,PSM_PRESSBUTTON,i,0)
331 #define PropSheet_QuerySiblings(d,w,l) SendMessage(d,PSM_QUERYSIBLINGS,w,l)
332 #define PropSheet_RebootSystem(d) SendMessage(d,PSM_REBOOTSYSTEM,0,0)
333 #define PropSheet_RemovePage(d,i,p) SendMessage(d,PSM_REMOVEPAGE,i,(LPARAM)p)
334 #define PropSheet_RestartWindows(d) SendMessage(d,PSM_RESTARTWINDOWS,0,0)
335 #define PropSheet_SetCurSel(d,p,i) SendMessage(d,PSM_SETCURSEL,i,(LPARAM)p)
336 #define PropSheet_SetCurSelByID(d,i) SendMessage(d,PSM_SETCURSELID,0,i)
337 #define PropSheet_SetFinishText(d,s) SendMessage(d,PSM_SETFINISHTEXT,0,(LPARAM)s)
338 #define PropSheet_SetTitle(d,w,s) SendMessage(d,PSM_SETTITLE,w,(LPARAM)s)
339 #define PropSheet_SetWizButtons(d,f) PostMessage(d,PSM_SETWIZBUTTONS,0,(LPARAM)f)
340 #define PropSheet_UnChanged(d,w) SendMessage(d,PSM_UNCHANGED,(WPARAM)w,0)
341 #define PropSheet_RecalcPageSizes(d) SendMessage(d,PSM_RECALCPAGESIZES,0,0)
344 #define WC_PROPSHEETA "SysPropertySheet"
345 #if defined(__GNUC__)
346 # define WC_PROPSHEETW (const WCHAR []){ 'S','y','s', \
347 'P','r','o','p','e','r','t','y','S','h','e','e','t',0 }
348 #elif defined(_MSC_VER)
349 # define WC_PROPSHEETW L"SysPropertySheet"
351 static const WCHAR WC_PROPSHEETW
[] = { 'S','y','s',
352 'P','r','o','p','e','r','t','y','S','h','e','e','t',0 };
356 #define LPFNPSPCALLBACK LPFNPSPCALLBACKW
357 #define PROPSHEETPAGE PROPSHEETPAGEW
358 #define LPPROPSHEETPAGE LPPROPSHEETPAGEW
359 #define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW
360 #define PROPSHEETHEADER PROPSHEETHEADERW
361 #define LPPROPSHEETHEADER LPPROPSHEETHEADERW
362 #define LPCPROPSHEETHEADER LPCPROPSHEETHEADERW
363 #define PSM_SETTITLE PSM_SETTITLEW
364 #define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW
365 #define PSM_SETHEADERTITLE PSM_SETHEADERTITLEW
366 #define PSM_SETHEADERSUBTITLE PSM_SETHEADERSUBTITLEW
367 #define CreatePropertySheetPage CreatePropertySheetPageW
368 #define PropertySheet PropertySheetW
370 #define LPFNPSPCALLBACK LPFNPSPCALLBACKA
371 #define PROPSHEETPAGE PROPSHEETPAGEA
372 #define LPPROPSHEETPAGE LPPROPSHEETPAGEA
373 #define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA
374 #define PROPSHEETHEADER PROPSHEETHEADERA
375 #define LPPROPSHEETHEADER LPPROPSHEETHEADERA
376 #define LPCPROPSHEETHEADER LPCPROPSHEETHEADERA
377 #define PSM_SETTITLE PSM_SETTITLEA
378 #define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA
379 #define PSM_SETHEADERTITLE PSM_SETHEADERTITLEA
380 #define PSM_SETHEADERSUBTITLE PSM_SETHEADERSUBTITLEA
381 #define CreatePropertySheetPage CreatePropertySheetPageA
382 #define PropertySheet PropertySheetA