[DDK]
[reactos.git] / include / psdk / prsht.h
1 #ifndef _PRSHT_H
2 #define _PRSHT_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #ifdef _MSC_VER
9 #pragma warning(push)
10 #pragma warning(disable:4201)
11 #endif
12
13 #ifndef SNDMSG
14 #ifdef __cplusplus
15 #define SNDMSG ::SendMessage
16 #else
17 #define SNDMSG SendMessage
18 #endif
19 #endif /* ifndef SNDMSG */
20
21 #define MAXPROPPAGES 100
22 #define PSP_DEFAULT 0
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
36 #endif
37 #define PSPCB_RELEASE 1
38 #define PSPCB_CREATE 2
39 #define PSH_DEFAULT 0
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
45 #define PSH_WIZARD 32
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
63 #else
64 #define PSH_WIZARD97 0x01000000
65 #endif
66 #ifdef _WINE
67 #define PSH_WIZARD97_OLD 0x00002000
68 #define PSH_WIZARD97_NEW 0x01000000
69 #endif
70 #endif /* _WIN32_IE >= 0x0400 */
71 #if (_WIN32_IE >= 0x0500)
72 #define PSH_WIZARD_LITE 0x400000
73 #define PSH_NOCONTEXTHELP 0x2000000
74 #endif
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)
85 #define PSM_HWNDTOINDEX 1153
86 #define PSM_IDTOINDEX 1157
87 #define PSM_INDEXTOHWND 1154
88 #define PSM_INDEXTOID 1158
89 #define PSM_INDEXTOPAGE 1156
90 #define PSM_INSERTPAGE 1143
91 #endif /* _WIN32_IE >= 0x0500 */
92 #define PSM_ISDIALOGMESSAGE 1141
93 #if (_WIN32_IE >= 0x0500)
94 #define PSM_PAGETOINDEX 1155
95 #endif /* _WIN32_IE >= 0x0500 */
96 #define PSM_PRESSBUTTON 1137
97 #if (_WIN32_IE >= 0x0500)
98 #define PSM_RECALCPAGESIZES 1160
99 #endif /* _WIN32_IE >= 0x0500 */
100 #define PSM_SETCURSELID 1138
101 #define PSM_SETFINISHTEXTW 1145
102 #define PSM_SETFINISHTEXTA 1139
103 #if (_WIN32_IE >= 0x0500)
104 #define PSM_SETHEADERTITLEA 1149
105 #define PSM_SETHEADERTITLEW 1150
106 #define PSM_SETHEADERSUBTITLEA 1151
107 #define PSM_SETHEADERSUBTITLEW 1152
108 #endif
109
110 #define PSN_FIRST (0U - 200U)
111 #define PSN_SETACTIVE (PSN_FIRST - 0)
112 #define PSN_KILLACTIVE (PSN_FIRST - 1)
113 #define PSN_APPLY (PSN_FIRST - 2)
114 #define PSN_RESET (PSN_FIRST - 3)
115 #define PSN_HELP (PSN_FIRST - 5)
116 #define PSN_WIZBACK (PSN_FIRST - 6)
117 #define PSN_WIZNEXT (PSN_FIRST - 7)
118 #define PSN_WIZFINISH (PSN_FIRST - 8)
119 #define PSN_QUERYCANCEL (PSN_FIRST - 9)
120 #define PSN_GETOBJECT (PSN_FIRST - 10)
121 #define PSN_TRANSLATEACCELERATOR (PSN_FIRST - 12)
122 #define PSN_QUERYINITIALFOCUS (PSN_FIRST - 13)
123 #define PSN_LAST (PSN_FIRST - 99)
124
125 #define PSNRET_NOERROR 0
126 #define PSNRET_INVALID 1
127 #define PSNRET_INVALID_NOCHANGEPAGE 2
128 #define ID_PSRESTARTWINDOWS 2
129 #define ID_PSREBOOTSYSTEM 3
130 #define WIZ_CXDLG 276
131 #define WIZ_CYDLG 140
132 #define WIZ_CXBMP 80
133 #define WIZ_BODYX 92
134 #define WIZ_BODYCX 184
135 #define PROP_SM_CXDLG 212
136 #define PROP_SM_CYDLG 188
137 #define PROP_MED_CXDLG 227
138 #define PROP_MED_CYDLG 215
139 #define PROP_LG_CXDLG 252
140 #define PROP_LG_CYDLG 218
141 #define PSBTN_MAX 6
142 #define PSBTN_BACK 0
143 #define PSBTN_NEXT 1
144 #define PSBTN_FINISH 2
145 #define PSBTN_OK 3
146 #define PSBTN_APPLYNOW 4
147 #define PSBTN_CANCEL 5
148 #define PSBTN_HELP 6
149 #define PSWIZB_BACK 1
150 #define PSWIZB_NEXT 2
151 #define PSWIZB_FINISH 4
152 #define PSWIZB_DISABLEDFINISH 8
153 #define PSM_SETWIZBUTTONS (WM_USER+112)
154 #define PSM_APPLY (WM_USER+110)
155 #define PSM_UNCHANGED (WM_USER+109)
156 #define PSM_QUERYSIBLINGS (WM_USER+108)
157 #define PSM_CANCELTOCLOSE (WM_USER+107)
158 #define PSM_REBOOTSYSTEM (WM_USER+106)
159 #define PSM_RESTARTWINDOWS (WM_USER+105)
160 #define PSM_CHANGED (WM_USER+104)
161 #define PSM_ADDPAGE (WM_USER+103)
162 #define PSM_REMOVEPAGE (WM_USER+102)
163 #define PSM_SETCURSEL (WM_USER+101)
164 #define PSM_SETTITLEA (WM_USER+111)
165 #define PSM_SETTITLEW (WM_USER+120)
166
167 #ifndef RC_INVOKED
168
169 #pragma pack(push,8)
170 typedef struct _PROPSHEETPAGEA {
171 DWORD dwSize;
172 DWORD dwFlags;
173 HINSTANCE hInstance;
174 _ANONYMOUS_UNION union {
175 LPCSTR pszTemplate;
176 LPCDLGTEMPLATE pResource;
177 } DUMMYUNIONNAME;
178 _ANONYMOUS_UNION union {
179 HICON hIcon;
180 LPCSTR pszIcon;
181 } DUMMYUNIONNAME2;
182 LPCSTR pszTitle;
183 DLGPROC pfnDlgProc;
184 LPARAM lParam;
185 UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEA*);
186 UINT *pcRefParent;
187 #if (_WIN32_IE >= 0x0400)
188 LPCSTR pszHeaderTitle;
189 LPCSTR pszHeaderSubTitle;
190 #endif
191 } PROPSHEETPAGEA,*LPPROPSHEETPAGEA;
192 typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEA;
193 typedef struct _PROPSHEETPAGEW {
194 DWORD dwSize;
195 DWORD dwFlags;
196 HINSTANCE hInstance;
197 _ANONYMOUS_UNION union {
198 LPCWSTR pszTemplate;
199 LPCDLGTEMPLATE pResource;
200 } DUMMYUNIONNAME;
201 _ANONYMOUS_UNION union {
202 HICON hIcon;
203 LPCWSTR pszIcon;
204 } DUMMYUNIONNAME2;
205 LPCWSTR pszTitle;
206 DLGPROC pfnDlgProc;
207 LPARAM lParam;
208 UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEW*);
209 UINT *pcRefParent;
210 #if (_WIN32_IE >= 0x0400)
211 LPCWSTR pszHeaderTitle;
212 LPCWSTR pszHeaderSubTitle;
213 #endif
214 } PROPSHEETPAGEW,*LPPROPSHEETPAGEW;
215 typedef const PROPSHEETPAGEW *LPCPROPSHEETPAGEW;
216 typedef UINT(CALLBACK *LPFNPSPCALLBACKA)(HWND,UINT,LPPROPSHEETPAGEA);
217 typedef UINT(CALLBACK *LPFNPSPCALLBACKW)(HWND,UINT,LPPROPSHEETPAGEW);
218 typedef int(CALLBACK *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM);
219 #ifndef _HPROPSHEETPAGE_DEFINED
220 #define _HPROPSHEETPAGE_DEFINED
221 DECLARE_HANDLE(HPROPSHEETPAGE);
222 #endif /* _HPROPSHEETPAGE_DEFINED */
223 typedef struct _PROPSHEETHEADERA {
224 DWORD dwSize;
225 DWORD dwFlags;
226 HWND hwndParent;
227 HINSTANCE hInstance;
228 _ANONYMOUS_UNION union {
229 HICON hIcon;
230 LPCSTR pszIcon;
231 }DUMMYUNIONNAME;
232 LPCSTR pszCaption;
233 UINT nPages;
234 _ANONYMOUS_UNION union {
235 UINT nStartPage;
236 LPCSTR pStartPage;
237 }DUMMYUNIONNAME2;
238 _ANONYMOUS_UNION union {
239 LPCPROPSHEETPAGEA ppsp;
240 HPROPSHEETPAGE *phpage;
241 }DUMMYUNIONNAME3;
242 PFNPROPSHEETCALLBACK pfnCallback;
243 #if (_WIN32_IE >= 0x0400)
244 _ANONYMOUS_UNION union {
245 HBITMAP hbmWatermark;
246 LPCSTR pszbmWatermark;
247 } DUMMYUNIONNAME4;
248 HPALETTE hplWatermark;
249 _ANONYMOUS_UNION union {
250 HBITMAP hbmHeader;
251 LPCSTR pszbmHeader;
252 } DUMMYUNIONNAME5;
253 #endif
254 } PROPSHEETHEADERA,*LPPROPSHEETHEADERA;
255 typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA;
256 typedef struct _PROPSHEETHEADERW {
257 DWORD dwSize;
258 DWORD dwFlags;
259 HWND hwndParent;
260 HINSTANCE hInstance;
261 _ANONYMOUS_UNION union {
262 HICON hIcon;
263 LPCWSTR pszIcon;
264 }DUMMYUNIONNAME;
265 LPCWSTR pszCaption;
266 UINT nPages;
267 _ANONYMOUS_UNION union {
268 UINT nStartPage;
269 LPCWSTR pStartPage;
270 }DUMMYUNIONNAME2;
271 _ANONYMOUS_UNION union {
272 LPCPROPSHEETPAGEW ppsp;
273 HPROPSHEETPAGE *phpage;
274 }DUMMYUNIONNAME3;
275 PFNPROPSHEETCALLBACK pfnCallback;
276 #if (_WIN32_IE >= 0x0400)
277 _ANONYMOUS_UNION union {
278 HBITMAP hbmWatermark;
279 LPCWSTR pszbmWatermark;
280 } DUMMYUNIONNAME4;
281 HPALETTE hplWatermark;
282 _ANONYMOUS_UNION union {
283 HBITMAP hbmHeader;
284 LPCWSTR pszbmHeader;
285 } DUMMYUNIONNAME5;
286 #endif
287 } PROPSHEETHEADERW,*LPPROPSHEETHEADERW;
288 typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW;
289 typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM);
290 typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM);
291 typedef struct _PSHNOTIFY {
292 NMHDR hdr;
293 LPARAM lParam;
294 } PSHNOTIFY,*LPPSHNOTIFY;
295
296 #pragma pack(pop)
297
298 HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
299 HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
300 BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE);
301 INT_PTR WINAPI PropertySheetA(LPCPROPSHEETHEADERA);
302 INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW);
303 #define PropSheet_AddPage(d,p) SendMessage(d,PSM_ADDPAGE,0,(LPARAM)p)
304 #define PropSheet_Apply(d) SendMessage(d,PSM_APPLY,0,0)
305 #define PropSheet_CancelToClose(d) SendMessage(d,PSM_CANCELTOCLOSE,0,0)
306 #define PropSheet_Changed(d,w) SendMessage(d,PSM_CHANGED,(WPARAM)w,0)
307 #define PropSheet_GetCurrentPageHwnd(d) (HWND)SendMessage(d,PSM_GETCURRENTPAGEHWND,0,0)
308 #define PropSheet_GetTabControl(d) (HWND)SendMessage(d,PSM_GETTABCONTROL,0,0)
309 #define PropSheet_IsDialogMessage(d,m) (BOOL)SendMessage(d,PSM_ISDIALOGMESSAGE,0,(LPARAM)m)
310 #define PropSheet_PressButton(d,i) SendMessage(d,PSM_PRESSBUTTON,i,0)
311 #define PropSheet_QuerySiblings(d,w,l) SendMessage(d,PSM_QUERYSIBLINGS,w,l)
312 #define PropSheet_RebootSystem(d) SendMessage(d,PSM_REBOOTSYSTEM,0,0)
313 #define PropSheet_RemovePage(d,i,p) SendMessage(d,PSM_REMOVEPAGE,i,(LPARAM)p)
314 #define PropSheet_RestartWindows(d) SendMessage(d,PSM_RESTARTWINDOWS,0,0)
315 #define PropSheet_SetCurSel(d,p,i) SendMessage(d,PSM_SETCURSEL,i,(LPARAM)p)
316 #define PropSheet_SetCurSelByID(d,i) SendMessage(d,PSM_SETCURSELID,0,i)
317 #define PropSheet_SetFinishText(d,s) SendMessage(d,PSM_SETFINISHTEXT,0,(LPARAM)s)
318 #define PropSheet_SetTitle(d,w,s) SendMessage(d,PSM_SETTITLE,w,(LPARAM)s)
319 #define PropSheet_SetWizButtons(d,f) PostMessage(d,PSM_SETWIZBUTTONS,0,(LPARAM)f)
320 #define PropSheet_UnChanged(d,w) SendMessage(d,PSM_UNCHANGED,(WPARAM)w,0)
321 #define PropSheet_RecalcPageSizes(d) SendMessage(d,PSM_RECALCPAGESIZES,0,0)
322 #endif
323
324 #define WC_PROPSHEETA "SysPropertySheet"
325 #if defined(__GNUC__)
326 # define WC_PROPSHEETW (const WCHAR []){ 'S','y','s', \
327 'P','r','o','p','e','r','t','y','S','h','e','e','t',0 }
328 #elif defined(_MSC_VER)
329 # define WC_PROPSHEETW L"SysPropertySheet"
330 #else
331 static const WCHAR WC_PROPSHEETW[] = { 'S','y','s',
332 'P','r','o','p','e','r','t','y','S','h','e','e','t',0 };
333 #endif
334
335 #ifdef UNICODE
336 #define LPFNPSPCALLBACK LPFNPSPCALLBACKW
337 #define PROPSHEETPAGE PROPSHEETPAGEW
338 #define LPPROPSHEETPAGE LPPROPSHEETPAGEW
339 #define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW
340 #define PROPSHEETHEADER PROPSHEETHEADERW
341 #define LPPROPSHEETHEADER LPPROPSHEETHEADERW
342 #define LPCPROPSHEETHEADER LPCPROPSHEETHEADERW
343 #define PSM_SETTITLE PSM_SETTITLEW
344 #define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW
345 #define PSM_SETHEADERTITLE PSM_SETHEADERTITLEW
346 #define PSM_SETHEADERSUBTITLE PSM_SETHEADERSUBTITLEW
347 #define CreatePropertySheetPage CreatePropertySheetPageW
348 #define PropertySheet PropertySheetW
349 #else
350 #define LPFNPSPCALLBACK LPFNPSPCALLBACKA
351 #define PROPSHEETPAGE PROPSHEETPAGEA
352 #define LPPROPSHEETPAGE LPPROPSHEETPAGEA
353 #define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA
354 #define PROPSHEETHEADER PROPSHEETHEADERA
355 #define LPPROPSHEETHEADER LPPROPSHEETHEADERA
356 #define LPCPROPSHEETHEADER LPCPROPSHEETHEADERA
357 #define PSM_SETTITLE PSM_SETTITLEA
358 #define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA
359 #define PSM_SETHEADERTITLE PSM_SETHEADERTITLEA
360 #define PSM_SETHEADERSUBTITLE PSM_SETHEADERSUBTITLEA
361 #define CreatePropertySheetPage CreatePropertySheetPageA
362 #define PropertySheet PropertySheetA
363 #endif
364
365 #ifdef _MSC_VER
366 #pragma warning(pop)
367 #endif
368
369 #ifdef __cplusplus
370 }
371 #endif
372 #endif