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