1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Vladimir Vlasov
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_prsht.d)
9  */
10 /// Automatically imported and edited from the druntime module
11 /// core.sys.windows.prsht for the auto-generated win32 package.
12 module win32.prsht;
13 //version (Windows):
14 @system:
15 
16 version (ANSI) {} else version = Unicode;
17 version (Win32_UseLib) pragma(lib, "comctl32");
18 
19 import win32.w32api, win32.windef, win32.winuser;
20 
21 enum MAXPROPPAGES = 100;
22 
23 enum {
24     PSP_DEFAULT      = 0x00000000,
25     PSP_DLGINDIRECT  = 0x00000001,
26     PSP_USEHICON     = 0x00000002,
27     PSP_USEICONID    = 0x00000004,
28     PSP_USETITLE     = 0x00000008,
29     PSP_RTLREADING   = 0x00000010,
30     PSP_HASHELP      = 0x00000020,
31     PSP_USEREFPARENT = 0x00000040,
32     PSP_USECALLBACK  = 0x00000080,
33     PSP_PREMATURE    = 0x00000400
34 }
35 
36 static if (_WIN32_IE >= 0x400) {
37     enum {
38         PSP_HIDEHEADER        = 0x00000800,
39         PSP_USEHEADERTITLE    = 0x00001000,
40         PSP_USEHEADERSUBTITLE = 0x00002000
41     }
42 }
43 
44 enum {
45     PSPCB_RELEASE = 1,
46     PSPCB_CREATE
47 }
48 
49 enum {
50     PSH_DEFAULT           = 0x00000000,
51     PSH_PROPTITLE         = 0x00000001,
52     PSH_USEHICON          = 0x00000002,
53     PSH_USEICONID         = 0x00000004,
54     PSH_PROPSHEETPAGE     = 0x00000008,
55     PSH_WIZARDHASFINISH   = 0x00000010,
56     PSH_WIZARD            = 0x00000020,
57     PSH_USEPSTARTPAGE     = 0x00000040,
58     PSH_NOAPPLYNOW        = 0x00000080,
59     PSH_USECALLBACK       = 0x00000100,
60     PSH_HASHELP           = 0x00000200,
61     PSH_MODELESS          = 0x00000400,
62     PSH_RTLREADING        = 0x00000800,
63     PSH_WIZARDCONTEXTHELP = 0x00001000
64 }
65 
66 static if (_WIN32_IE >= 0x400) {
67     enum {
68         PSH_WATERMARK        = 0x00008000,
69         PSH_USEHBMWATERMARK  = 0x00010000,
70         PSH_USEHPLWATERMARK  = 0x00020000,
71         PSH_STRETCHWATERMARK = 0x00040000,
72         PSH_HEADER           = 0x00080000,
73         PSH_USEHBMHEADER     = 0x00100000,
74         PSH_USEPAGELANG      = 0x00200000
75     }
76     static if (_WIN32_IE < 0x0500) {
77         enum {
78             PSH_WIZARD97 = 0x00002000
79         }
80     } else {
81         enum {
82             PSH_WIZARD97 = 0x01000000
83         }
84     }
85 }
86 
87 static if (_WIN32_IE >= 0x500) {
88     enum {
89         PSH_WIZARD_LITE   = 0x00400000,
90         PSH_NOCONTEXTHELP = 0x02000000
91     }
92 }
93 
94 enum {
95     PSCB_INITIALIZED = 1,
96     PSCB_PRECREATE
97 }
98 
99 enum {
100     PSN_FIRST       = (-200),
101     PSN_LAST        = (-299),
102     PSN_SETACTIVE   = (-200),
103     PSN_KILLACTIVE  = (-201),
104     PSN_APPLY       = (-202),
105     PSN_RESET       = (-203),
106     PSN_HELP        = (-205),
107     PSN_WIZBACK     = (-206),
108     PSN_WIZNEXT     = (-207),
109     PSN_WIZFINISH   = (-208),
110     PSN_QUERYCANCEL = (-209)
111 }
112 static if (_WIN32_IE >= 0x400) {
113     enum {
114         PSN_GETOBJECT = (-210)
115     }
116 }
117 static if (_WIN32_IE >= 0x500) {
118     enum {
119         PSN_TRANSLATEACCELERATOR = (-212),
120         PSN_QUERYINITIALFOCUS    = (-213)
121     }
122 }
123 
124 enum {
125     PSNRET_NOERROR,
126     PSNRET_INVALID,
127     PSNRET_INVALID_NOCHANGEPAGE,
128     PSNRET_MESSAGEHANDLED
129 }
130 
131 enum {
132     ID_PSRESTARTWINDOWS = 0x2,
133     ID_PSREBOOTSYSTEM   = ID_PSRESTARTWINDOWS | 0x1
134 }
135 
136 enum {
137     WIZ_CXDLG  = 276,
138     WIZ_CYDLG  = 140,
139     WIZ_CXBMP  = 80,
140     WIZ_BODYX  = 92,
141     WIZ_BODYCX = 184
142 }
143 
144 enum {
145     PROP_SM_CXDLG  = 212,
146     PROP_SM_CYDLG  = 188,
147     PROP_MED_CXDLG = 227,
148     PROP_MED_CYDLG = 215,
149     PROP_LG_CXDLG  = 252,
150     PROP_LG_CYDLG  = 218
151 }
152 
153 enum {
154     PSBTN_BACK,
155     PSBTN_NEXT,
156     PSBTN_FINISH,
157     PSBTN_OK,
158     PSBTN_APPLYNOW,
159     PSBTN_CANCEL,
160     PSBTN_HELP,
161     PSBTN_MAX = 6
162 }
163 
164 enum {
165     PSWIZB_BACK           = 1,
166     PSWIZB_NEXT           = 2,
167     PSWIZB_FINISH         = 4,
168     PSWIZB_DISABLEDFINISH = 8
169 }
170 
171 enum {
172     PSM_SETCURSEL = WM_USER + 101,
173     PSM_REMOVEPAGE,
174     PSM_ADDPAGE,
175     PSM_CHANGED,
176     PSM_RESTARTWINDOWS,
177     PSM_REBOOTSYSTEM,
178     PSM_CANCELTOCLOSE,
179     PSM_QUERYSIBLINGS,
180     PSM_UNCHANGED,
181     PSM_APPLY,
182     PSM_SETTITLEA,
183     PSM_SETWIZBUTTONS,
184     PSM_PRESSBUTTON,
185     PSM_SETCURSELID,
186     PSM_SETFINISHTEXTA,
187     PSM_GETTABCONTROL,
188     PSM_ISDIALOGMESSAGE,
189     PSM_GETCURRENTPAGEHWND,
190     PSM_INSERTPAGE,
191     PSM_SETTITLEW,
192     PSM_SETFINISHTEXTW // = WM_USER + 121,
193 }
194 
195 extern (Windows) {
196     alias UINT function(HWND, UINT, LPPROPSHEETPAGEA) LPFNPSPCALLBACKA;
197     alias UINT function(HWND, UINT, LPPROPSHEETPAGEW) LPFNPSPCALLBACKW;
198     alias int function(HWND, UINT, LPARAM) PFNPROPSHEETCALLBACK;
199 }
200 
201 align(4):
202 
203 struct PROPSHEETPAGEA {
204     DWORD dwSize = PROPSHEETPAGEA.sizeof;
205     DWORD dwFlags;
206     HINSTANCE hInstance;
207     union {
208         LPCSTR         pszTemplate;
209         LPCDLGTEMPLATE pResource;
210     }
211     union {
212         HICON  hIcon;
213         LPCSTR pszIcon;
214     }
215     LPCSTR  pszTitle;
216     DLGPROC pfnDlgProc;
217     LPARAM  lParam;
218     LPFNPSPCALLBACKA pfnCallback;
219     UINT*     pcRefParent;
220     static if (_WIN32_IE >= 0x400) {
221         LPCSTR pszHeaderTitle;
222         LPCSTR pszHeaderSubTitle;
223     }
224 }
225 alias PROPSHEETPAGEA*        LPPROPSHEETPAGEA;
226 alias const(PROPSHEETPAGEA)* LPCPROPSHEETPAGEA;
227 
228 struct PROPSHEETPAGEW {
229     DWORD     dwSize = PROPSHEETPAGEW.sizeof;
230     DWORD     dwFlags;
231     HINSTANCE hInstance;
232     union {
233         LPCWSTR        pszTemplate;
234         LPCDLGTEMPLATE pResource;
235     }
236     union {
237         HICON   hIcon;
238         LPCWSTR pszIcon;
239     }
240     LPCWSTR   pszTitle;
241     DLGPROC   pfnDlgProc;
242     LPARAM    lParam;
243     LPFNPSPCALLBACKW pfnCallback;
244     UINT*     pcRefParent;
245     static if (_WIN32_IE >= 0x400) {
246         LPCWSTR pszHeaderTitle;
247         LPCWSTR pszHeaderSubTitle;
248     }
249 }
250 alias PROPSHEETPAGEW*        LPPROPSHEETPAGEW;
251 alias const(PROPSHEETPAGEW)* LPCPROPSHEETPAGEW;
252 
253 mixin DECLARE_HANDLE!("HPROPSHEETPAGE");
254 
255 struct PROPSHEETHEADERA {
256     DWORD dwSize = PROPSHEETHEADERA.sizeof;
257     DWORD dwFlags;
258     HWND  hwndParent;
259     HINSTANCE hInstance;
260     union {
261         HICON   hIcon;
262         LPCSTR  pszIcon;
263     }
264     LPCSTR pszCaption;
265     UINT   nPages;
266     union {
267         UINT   nStartPage;
268         LPCSTR pStartPage;
269     }
270     union {
271         LPCPROPSHEETPAGEA ppsp;
272         HPROPSHEETPAGE*   phpage;
273     }
274     PFNPROPSHEETCALLBACK pfnCallback;
275     static if (_WIN32_IE >= 0x400) {
276         union {
277             HBITMAP hbmWatermark;
278             LPCSTR  pszbmWatermark;
279         }
280         HPALETTE hplWatermark;
281         union {
282             HBITMAP hbmHeader;
283             LPCSTR  pszbmHeader;
284         }
285     }
286 }
287 alias PROPSHEETHEADERA*        LPPROPSHEETHEADERA;
288 alias const(PROPSHEETHEADERA)* LPCPROPSHEETHEADERA;
289 
290 struct PROPSHEETHEADERW {
291     DWORD     dwSize = PROPSHEETHEADERW.sizeof;
292     DWORD     dwFlags;
293     HWND      hwndParent;
294     HINSTANCE hInstance;
295     union {
296         HICON   hIcon;
297         LPCWSTR pszIcon;
298     }
299     LPCWSTR   pszCaption;
300     UINT      nPages;
301     union {
302         UINT    nStartPage;
303         LPCWSTR pStartPage;
304     }
305     union {
306         LPCPROPSHEETPAGEW ppsp;
307         HPROPSHEETPAGE*   phpage;
308     }
309     PFNPROPSHEETCALLBACK pfnCallback;
310     static if (_WIN32_IE >= 0x400) {
311         union {
312             HBITMAP hbmWatermark;
313             LPCWSTR pszbmWatermark;
314         }
315         HPALETTE hplWatermark;
316         union {
317             HBITMAP hbmHeader;
318             LPCWSTR pszbmHeader;
319         }
320     }
321 }
322 alias PROPSHEETHEADERW*        LPPROPSHEETHEADERW;
323 alias const(PROPSHEETHEADERW)* LPCPROPSHEETHEADERW;
324 
325 extern (Windows) {
326     alias BOOL function(HPROPSHEETPAGE, LPARAM) LPFNADDPROPSHEETPAGE;
327     alias BOOL function(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM)
328       LPFNADDPROPSHEETPAGES;
329 }
330 
331 struct PSHNOTIFY {
332     NMHDR  hdr;
333     LPARAM lParam;
334 }
335 alias PSHNOTIFY* LPPSHNOTIFY;
336 
337 extern (Windows) {
338     HPROPSHEETPAGE CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
339     HPROPSHEETPAGE CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
340     BOOL DestroyPropertySheetPage(HPROPSHEETPAGE);
341     INT_PTR PropertySheetA(LPCPROPSHEETHEADERA);
342     INT_PTR PropertySheetW(LPCPROPSHEETHEADERW);
343 }
344 
345 version (Unicode) {
346     alias LPFNPSPCALLBACKW         LPFNPSPCALLBACK;
347     alias PROPSHEETPAGEW           PROPSHEETPAGE;
348     alias LPPROPSHEETPAGEW         LPPROPSHEETPAGE;
349     alias LPCPROPSHEETPAGEW        LPCPROPSHEETPAGE;
350     alias PROPSHEETHEADERW         PROPSHEETHEADER;
351     alias LPPROPSHEETHEADERW       LPPROPSHEETHEADER;
352     alias LPCPROPSHEETHEADERW      LPCPROPSHEETHEADER;
353     alias PSM_SETTITLEW            PSM_SETTITLE;
354     alias PSM_SETFINISHTEXTW       PSM_SETFINISHTEXT;
355     alias CreatePropertySheetPageW CreatePropertySheetPage;
356     alias PropertySheetW           PropertySheet;
357 } else {
358     alias LPFNPSPCALLBACKA         LPFNPSPCALLBACK;
359     alias PROPSHEETPAGEA           PROPSHEETPAGE;
360     alias LPPROPSHEETPAGEA         LPPROPSHEETPAGE;
361     alias LPCPROPSHEETPAGEA        LPCPROPSHEETPAGE;
362     alias PROPSHEETHEADERA         PROPSHEETHEADER;
363     alias LPPROPSHEETHEADERA       LPPROPSHEETHEADER;
364     alias LPCPROPSHEETHEADERA      LPCPROPSHEETHEADER;
365     alias PSM_SETTITLEA            PSM_SETTITLE;
366     alias PSM_SETFINISHTEXTA       PSM_SETFINISHTEXT;
367     alias CreatePropertySheetPageA CreatePropertySheetPage;
368     alias PropertySheetA           PropertySheet;
369 }
370 
371 BOOL PropSheet_SetCurSel()(HWND hPropSheetDlg, HPROPSHEETPAGE hpage,
372       HPROPSHEETPAGE index) {
373     return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSEL,
374       cast(WPARAM) index, cast(LPARAM) hpage);
375 }
376 
377 VOID PropSheet_RemovePage()(HWND hPropSheetDlg, int index, HPROPSHEETPAGE hpage) {
378     SendMessage(hPropSheetDlg, PSM_REMOVEPAGE, index, cast(LPARAM) hpage);
379 }
380 
381 BOOL PropSheet_AddPage()(HWND hPropSheetDlg, HPROPSHEETPAGE hpage) {
382         return cast(BOOL) SendMessage(hPropSheetDlg, PSM_ADDPAGE,
383           0, cast(LPARAM) hpage);
384 }
385 
386 VOID PropSheet_Changed()(HWND hPropSheetDlg, HWND hwndPage) {
387     SendMessage(hPropSheetDlg, PSM_CHANGED, cast(WPARAM) hwndPage, 0);
388 }
389 
390 VOID PropSheet_RestartWindows()(HWND hPropSheetDlg) {
391     SendMessage(hPropSheetDlg, PSM_RESTARTWINDOWS, 0, 0);
392 }
393 
394 VOID PropSheet_RebootSystem()(HWND hPropSheetDlg) {
395     SendMessage(hPropSheetDlg, PSM_REBOOTSYSTEM, 0, 0);
396 }
397 
398 VOID PropSheet_CancelToClose()(HWND hPropSheetDlg) {
399     SendMessage(hPropSheetDlg, PSM_CANCELTOCLOSE, 0, 0);
400 }
401 
402 int PropSheet_QuerySiblings()(HWND hPropSheetDlg, WPARAM param1, LPARAM param2) {
403     return cast(int) SendMessage(hPropSheetDlg, PSM_QUERYSIBLINGS, param1, param2);
404 }
405 
406 VOID PropSheet_UnChanged()(HWND hPropSheetDlg, HWND hwndPage) {
407     SendMessage(hPropSheetDlg, PSM_UNCHANGED, cast(WPARAM) hwndPage, 0);
408 }
409 
410 BOOL PropSheet_Apply()(HWND hPropSheetDlg) {
411     return cast(BOOL) SendMessage(hPropSheetDlg, PSM_APPLY, 0, 0);
412 }
413 
414 VOID PropSheet_SetTitle()(HWND hPropSheetDlg, DWORD wStyle, LPTSTR lpszText) {
415     SendMessage(hPropSheetDlg, PSM_SETTITLE, wStyle, cast(LPARAM) lpszText);
416 }
417 
418 VOID PropSheet_SetWizButtons()(HWND hPropSheetDlg, DWORD dwFlags) {
419     PostMessage(hPropSheetDlg, PSM_SETWIZBUTTONS, 0, cast(LPARAM) dwFlags);
420 }
421 
422 BOOL PropSheet_PressButton()(HWND hPropSheetDlg, int iButton) {
423     return cast(BOOL) SendMessage(hPropSheetDlg, PSM_PRESSBUTTON, iButton, 0);
424 }
425 
426 BOOL PropSheet_SetCurSelByID()(HWND hPropSheetDlg, int id) {
427     return cast(BOOL) SendMessage(hPropSheetDlg, PSM_SETCURSELID, 0, id);
428 }
429 
430 VOID PropSheet_SetFinishText()(HWND hPropSheetDlg, LPTSTR lpszText) {
431     SendMessage(hPropSheetDlg, PSM_SETFINISHTEXT, 0, cast(LPARAM) lpszText);
432 }
433 
434 HWND PropSheet_GetTabControl()(HWND hPropSheetDlg) {
435     return cast(HWND) SendMessage(hPropSheetDlg, PSM_GETTABCONTROL, 0, 0);
436 }
437 
438 BOOL PropSheet_IsDialogMessage()(HWND hDlg, LPMSG pMsg) {
439     return cast(BOOL) SendMessage(hDlg, PSM_ISDIALOGMESSAGE,
440       0, cast(LPARAM) pMsg);
441 }
442 
443 HWND PropSheet_GetCurrentPageHwnd()(HWND hDlg) {
444     return cast(HWND) SendMessage(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0);
445 }
446 
447 BOOL PropSheet_InsertPage()(HWND hPropSheetDlg, WPARAM wInsertAfter,
448       HPROPSHEETPAGE hpage) {
449     return cast(BOOL) SendMessage(hPropSheetDlg, PSM_INSERTPAGE,
450       wInsertAfter, cast(LPARAM) hpage);
451 }