root/trunk/win32/commdlg.d

Revision 317, 20.7 kB (checked in by smjg, 3 years ago)

Done consts in commctrl; updated and polished commdlg

Line 
1 /***********************************************************************\
2 *                               commdlg.d                               *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *             Translated from MinGW API for MS-Windows 3.12             *
7 *                                                                       *
8 *                       Placed into public domain                       *
9 \***********************************************************************/
10 module win32.commdlg;
11 pragma(lib, "comdlg32.lib");
12
13 private import win32.w32api;
14 import win32.windef, win32.winuser;
15 import win32.wingdi; // for LPLOGFONTA
16
17 const TCHAR[]
18     LBSELCHSTRING = "commdlg_LBSelChangedNotify",
19     SHAREVISTRING = "commdlg_ShareViolation",
20     FILEOKSTRING  = "commdlg_FileNameOK",
21     COLOROKSTRING = "commdlg_ColorOK",
22     SETRGBSTRING  = "commdlg_SetRGBColor",
23     HELPMSGSTRING = "commdlg_help",
24     FINDMSGSTRING = "commdlg_FindReplace";
25
26 enum : UINT {
27     CDN_FIRST          = -601, // also in commctrl.h
28     CDN_LAST           = -699,
29     CDN_INITDONE       = CDN_FIRST,
30     CDN_SELCHANGE      = CDN_FIRST - 1,
31     CDN_FOLDERCHANGE   = CDN_FIRST - 2,
32     CDN_SHAREVIOLATION = CDN_FIRST - 3,
33     CDN_HELP           = CDN_FIRST - 4,
34     CDN_FILEOK         = CDN_FIRST - 5,
35     CDN_TYPECHANGE     = CDN_FIRST - 6
36 }
37
38 enum : UINT {
39     CDM_FIRST           = WM_USER + 100,
40     CDM_LAST            = WM_USER + 200,
41     CDM_GETSPEC         = CDM_FIRST,
42     CDM_GETFILEPATH,
43     CDM_GETFOLDERPATH,
44     CDM_GETFOLDERIDLIST,
45     CDM_SETCONTROLTEXT,
46     CDM_HIDECONTROL,
47     CDM_SETDEFEXT    // = CDM_FIRST + 6
48 }
49
50 // flags for ChooseColor
51 enum : DWORD {
52     CC_RGBINIT              = 0x0001,
53     CC_FULLOPEN             = 0x0002,
54     CC_PREVENTFULLOPEN      = 0x0004,
55     CC_SHOWHELP             = 0x0008,
56     CC_ENABLEHOOK           = 0x0010,
57     CC_ENABLETEMPLATE       = 0x0020,
58     CC_ENABLETEMPLATEHANDLE = 0x0040,
59     CC_SOLIDCOLOR           = 0x0080,
60     CC_ANYCOLOR             = 0x0100
61 }
62
63 // flags for ChooseFont
64 enum : DWORD {
65     CF_SCREENFONTS          = 0x00000001,
66     CF_PRINTERFONTS         = 0x00000002,
67     CF_BOTH                 = 0x00000003,
68     CF_SHOWHELP             = 0x00000004,
69     CF_ENABLEHOOK           = 0x00000008,
70     CF_ENABLETEMPLATE       = 0x00000010,
71     CF_ENABLETEMPLATEHANDLE = 0x00000020,
72     CF_INITTOLOGFONTSTRUCT  = 0x00000040,
73     CF_USESTYLE             = 0x00000080,
74     CF_EFFECTS              = 0x00000100,
75     CF_APPLY                = 0x00000200,
76     CF_ANSIONLY             = 0x00000400,
77     CF_SCRIPTSONLY          = CF_ANSIONLY,
78     CF_NOVECTORFONTS        = 0x00000800,
79     CF_NOOEMFONTS           = 0x00000800,
80     CF_NOSIMULATIONS        = 0x00001000,
81     CF_LIMITSIZE            = 0x00002000,
82     CF_FIXEDPITCHONLY       = 0x00004000,
83     CF_WYSIWYG              = 0x00008000,
84     CF_FORCEFONTEXIST       = 0x00010000,
85     CF_SCALABLEONLY         = 0x00020000,
86     CF_TTONLY               = 0x00040000,
87     CF_NOFACESEL            = 0x00080000,
88     CF_NOSTYLESEL           = 0x00100000,
89     CF_NOSIZESEL            = 0x00200000,
90     CF_SELECTSCRIPT         = 0x00400000,
91     CF_NOSCRIPTSEL          = 0x00800000,
92     CF_NOVERTFONTS          = 0x01000000
93 }
94
95 // Font type for ChooseFont
96 enum : WORD {
97     BOLD_FONTTYPE      = 0x0100,
98     ITALIC_FONTTYPE    = 0x0200,
99     REGULAR_FONTTYPE   = 0x0400,
100     SCREEN_FONTTYPE    = 0x2000,
101     PRINTER_FONTTYPE   = 0x4000,
102     SIMULATED_FONTTYPE = 0x8000
103 }
104
105 enum : UINT {
106     WM_CHOOSEFONT_GETLOGFONT = WM_USER +   1,
107     WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101,
108     WM_CHOOSEFONT_SETFLAGS   = WM_USER + 102
109 }
110
111 // flags for OpenFileName
112 enum : DWORD {
113     OFN_SHAREWARN            = 0,
114     OFN_SHARENOWARN          = 0x000001,
115     OFN_READONLY             = 0x000001,
116     OFN_SHAREFALLTHROUGH     = 0x000002,
117     OFN_OVERWRITEPROMPT      = 0x000002,
118     OFN_HIDEREADONLY         = 0x000004,
119     OFN_NOCHANGEDIR          = 0x000008,
120     OFN_SHOWHELP             = 0x000010,
121     OFN_ENABLEHOOK           = 0x000020,
122     OFN_ENABLETEMPLATE       = 0x000040,
123     OFN_ENABLETEMPLATEHANDLE = 0x000080,
124     OFN_NOVALIDATE           = 0x000100,
125     OFN_ALLOWMULTISELECT     = 0x000200,
126     OFN_EXTENSIONDIFFERENT   = 0x000400,
127     OFN_PATHMUSTEXIST        = 0x000800,
128     OFN_FILEMUSTEXIST        = 0x001000,
129     OFN_CREATEPROMPT         = 0x002000,
130     OFN_SHAREAWARE           = 0x004000,
131     OFN_NOREADONLYRETURN     = 0x008000,
132     OFN_NOTESTFILECREATE     = 0x010000,
133     OFN_NONETWORKBUTTON      = 0x020000,
134     OFN_NOLONGNAMES          = 0x040000,
135     OFN_EXPLORER             = 0x080000,
136     OFN_NODEREFERENCELINKS   = 0x100000,
137     OFN_LONGNAMES            = 0x200000,
138     OFN_ENABLESIZING         = 0x800000
139 }
140
141 enum : DWORD {
142     FR_DOWN                 = 0x00000001,
143     FR_WHOLEWORD            = 0x00000002,
144     FR_MATCHCASE            = 0x00000004,
145     FR_FINDNEXT             = 0x00000008,
146     FR_REPLACE              = 0x00000010,
147     FR_REPLACEALL           = 0x00000020,
148     FR_DIALOGTERM           = 0x00000040,
149     FR_SHOWHELP             = 0x00000080,
150     FR_ENABLEHOOK           = 0x00000100,
151     FR_ENABLETEMPLATE       = 0x00000200,
152     FR_NOUPDOWN             = 0x00000400,
153     FR_NOMATCHCASE          = 0x00000800,
154     FR_NOWHOLEWORD          = 0x00001000,
155     FR_ENABLETEMPLATEHANDLE = 0x00002000,
156     FR_HIDEUPDOWN           = 0x00004000,
157     FR_HIDEMATCHCASE        = 0x00008000,
158     FR_HIDEWHOLEWORD        = 0x00010000,
159     FR_MATCHDIAC            = 0x20000000,
160     FR_MATCHKASHIDA         = 0x40000000,
161     FR_MATCHALEFHAMZA       = 0x80000000
162 }
163
164 enum : DWORD {
165     PD_ALLPAGES                   = 0,
166     PD_SELECTION                  = 0x000001,
167     PD_PAGENUMS                   = 0x000002,
168     PD_NOSELECTION                = 0x000004,
169     PD_NOPAGENUMS                 = 0x000008,
170     PD_COLLATE                    = 0x000010,
171     PD_PRINTTOFILE                = 0x000020,
172     PD_PRINTSETUP                 = 0x000040,
173     PD_NOWARNING                  = 0x000080,
174     PD_RETURNDC                   = 0x000100,
175     PD_RETURNIC                   = 0x000200,
176     PD_RETURNDEFAULT              = 0x000400,
177     PD_SHOWHELP                   = 0x000800,
178     PD_ENABLEPRINTHOOK            = 0x001000,
179     PD_ENABLESETUPHOOK            = 0x002000,
180     PD_ENABLEPRINTTEMPLATE        = 0x004000,
181     PD_ENABLESETUPTEMPLATE        = 0x008000,
182     PD_ENABLEPRINTTEMPLATEHANDLE  = 0x010000,
183     PD_ENABLESETUPTEMPLATEHANDLE  = 0x020000,
184     PD_USEDEVMODECOPIES           = 0x040000,
185     PD_USEDEVMODECOPIESANDCOLLATE = 0x040000,
186     PD_DISABLEPRINTTOFILE         = 0x080000,
187     PD_HIDEPRINTTOFILE            = 0x100000,
188     PD_NONETWORKBUTTON            = 0x200000
189 }
190
191 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
192     enum : DWORD {
193         PD_CURRENTPAGE      = 0x00400000,
194         PD_NOCURRENTPAGE    = 0x00800000,
195         PD_EXCLUSIONFLAGS   = 0x01000000,
196         PD_USELARGETEMPLATE = 0x10000000,
197     }
198
199     enum : HRESULT {
200         PD_RESULT_CANCEL,
201         PD_RESULT_PRINT,
202         PD_RESULT_APPLY
203     }
204
205     const DWORD START_PAGE_GENERAL = 0xFFFFFFFF;
206 }
207
208 enum {
209     PSD_DEFAULTMINMARGINS             = 0,
210     PSD_INWININIINTLMEASURE           = 0,
211     PSD_MINMARGINS                    = 0x000001,
212     PSD_MARGINS                       = 0x000002,
213     PSD_INTHOUSANDTHSOFINCHES         = 0x000004,
214     PSD_INHUNDREDTHSOFMILLIMETERS     = 0x000008,
215     PSD_DISABLEMARGINS                = 0x000010,
216     PSD_DISABLEPRINTER                = 0x000020,
217     PSD_NOWARNING                     = 0x000080,
218     PSD_DISABLEORIENTATION            = 0x000100,
219     PSD_DISABLEPAPER                  = 0x000200,
220     PSD_RETURNDEFAULT                 = 0x000400,
221     PSD_SHOWHELP                      = 0x000800,
222     PSD_ENABLEPAGESETUPHOOK           = 0x002000,
223     PSD_ENABLEPAGESETUPTEMPLATE       = 0x008000,
224     PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x020000,
225     PSD_ENABLEPAGEPAINTHOOK           = 0x040000,
226     PSD_DISABLEPAGEPAINTING           = 0x080000
227 }
228
229 enum : UINT {
230     WM_PSD_PAGESETUPDLG = WM_USER,
231     WM_PSD_FULLPAGERECT,
232     WM_PSD_MINMARGINRECT,
233     WM_PSD_MARGINRECT,
234     WM_PSD_GREEKTEXTRECT,
235     WM_PSD_ENVSTAMPRECT,
236     WM_PSD_YAFULLPAGERECT // = WM_USER + 6
237 }
238
239 enum : int {
240     CD_LBSELNOITEMS = -1,
241     CD_LBSELCHANGE,
242     CD_LBSELSUB,
243     CD_LBSELADD
244 }
245
246 const WORD DN_DEFAULTPRN = 1;
247
248 /+
249 // Both MinGW and the windows docs indicate that there are macros for the send messages
250 // the controls. These seem to be totally unnecessary -- and at least one of MinGW or
251 // Windows Docs is buggy!
252
253 int CommDlg_OpenSave_GetSpec(HWND hWndControl, LPARAM lparam, WPARAM wParam) {
254     return SendMessage(hWndControl, CDM_GETSPEC, wParam, lParam);
255 }
256
257 int CommDlg_OpenSave_GetFilePath(HWND hWndControl, LPARAM lparam, WPARAM wParam) {
258     return SendMessage(hWndControl, CDM_GETFILEPATH, wParam, lParam);
259 }
260
261 int CommDlg_OpenSave_GetFolderPath(HWND hWndControl, LPARAM lparam, WPARAM wParam) {
262     return SendMessage(hWndControl, CDM_GETFOLDERPATH, wParam, lParam);
263 }
264
265 int CommDlg_OpenSave_GetFolderIDList(HWND hWndControl, LPARAM lparam, WPARAM wParam) {
266     return SendMessage(hWndControl, CDM_GETFOLDERIDLIST, wParam, lParam);
267 }
268
269 void CommDlg_OpenSave_SetControlText(HWND hWndControl, LPARAM lparam, WPARAM wParam) {
270     return SendMessage(hWndControl, CDM_SETCONTROLTEXT, wParam, lParam);
271 }
272
273 void CommDlg_OpenSave_HideControl(HWND hWndControl, WPARAM wParam) {
274     return SendMessage(hWndControl, CDM_HIDECONTROL, wParam, 0);
275 }
276
277 void CommDlg_OpenSave_SetDefExt(HWND hWndControl, TCHAR* lparam) {
278     return SendMessage(hWndControl, CDM_SETCONTROLTEXT, 0, cast(LPARAM)lParam);
279 }
280
281 // These aliases seem even more unnecessary
282 alias CommDlg_OpenSave_GetSpec
283     CommDlg_OpenSave_GetSpecA, CommDlg_OpenSave_GetSpecW;
284 alias CommDlg_OpenSave_GetFilePath
285     CommDlg_OpenSave_GetFilePathA, CommDlg_OpenSave_GetFilePathW;
286 alias CommDlg_OpenSave_GetFolderPath
287     CommDlg_OpenSave_GetFolderPathA, CommDlg_OpenSave_GetFolderPathW;
288 +/
289
290 // Callbacks.
291 extern(Windows) {
292 alias UINT function (HWND, UINT, WPARAM, LPARAM)
293     LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC,
294     LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC;
295 }
296
297 align (1):
298
299 struct CHOOSECOLORA {
300     DWORD        lStructSize = CHOOSECOLORA.sizeof;
301     HWND         hwndOwner;
302     HWND         hInstance;
303     COLORREF     rgbResult;
304     COLORREF*    lpCustColors;
305     DWORD        Flags;
306     LPARAM       lCustData;
307     LPCCHOOKPROC lpfnHook;
308     LPCSTR       lpTemplateName;
309 }
310 alias CHOOSECOLORA* LPCHOOSECOLORA;
311
312 struct CHOOSECOLORW {
313     DWORD        lStructSize = CHOOSECOLORW.sizeof;
314     HWND         hwndOwner;
315     HWND         hInstance;
316     COLORREF     rgbResult;
317     COLORREF*    lpCustColors;
318     DWORD        Flags;
319     LPARAM       lCustData;
320     LPCCHOOKPROC lpfnHook;
321     LPCWSTR      lpTemplateName;
322 }
323 alias CHOOSECOLORW* LPCHOOSECOLORW;
324
325 align (4) struct CHOOSEFONTA {
326     DWORD        lStructSize = CHOOSEFONTA.sizeof;
327     HWND         hwndOwner;
328     HDC          hDC;
329     LPLOGFONTA   lpLogFont;
330     INT          iPointSize;
331     DWORD        Flags;
332     DWORD        rgbColors;
333     LPARAM       lCustData;
334     LPCFHOOKPROC lpfnHook;
335     LPCSTR       lpTemplateName;
336     HINSTANCE    hInstance;
337     LPSTR        lpszStyle;
338     WORD         nFontType;
339     //WORD         ___MISSING_ALIGNMENT__;
340     INT          nSizeMin;
341     INT          nSizeMax;
342 }
343 alias CHOOSEFONTA* LPCHOOSEFONTA;
344
345 align (4) struct CHOOSEFONTW {
346     DWORD        lStructSize = CHOOSEFONTW.sizeof;
347     HWND         hwndOwner;
348     HDC          hDC;
349     LPLOGFONTW   lpLogFont;
350     INT          iPointSize;
351     DWORD        Flags;
352     DWORD        rgbColors;
353     LPARAM       lCustData;
354     LPCFHOOKPROC lpfnHook;
355     LPCWSTR      lpTemplateName;
356     HINSTANCE    hInstance;
357     LPWSTR       lpszStyle;
358     WORD         nFontType;
359     //WORD         ___MISSING_ALIGNMENT__;
360     INT          nSizeMin;
361     INT          nSizeMax;
362 }
363 alias CHOOSEFONTW* LPCHOOSEFONTW;
364
365 struct DEVNAMES {
366     WORD wDriverOffset;
367     WORD wDeviceOffset;
368     WORD wOutputOffset;
369     WORD wDefault;
370 }
371 alias DEVNAMES* LPDEVNAMES;
372
373 struct FINDREPLACEA {
374     DWORD        lStructSize = FINDREPLACEA.sizeof;
375     HWND         hwndOwner;
376     HINSTANCE    hInstance;
377     DWORD        Flags;
378     LPSTR        lpstrFindWhat;
379     LPSTR        lpstrReplaceWith;
380     WORD         wFindWhatLen;
381     WORD         wReplaceWithLen;
382     LPARAM       lCustData;
383     LPFRHOOKPROC lpfnHook;
384     LPCSTR       lpTemplateName;
385 }
386 alias FINDREPLACEA* LPFINDREPLACEA;
387
388 struct FINDREPLACEW {
389     DWORD        lStructSize = FINDREPLACEW.sizeof;
390     HWND         hwndOwner;
391     HINSTANCE    hInstance;
392     DWORD        Flags;
393     LPWSTR       lpstrFindWhat;
394     LPWSTR       lpstrReplaceWith;
395     WORD         wFindWhatLen;
396     WORD         wReplaceWithLen;
397     LPARAM       lCustData;
398     LPFRHOOKPROC lpfnHook;
399     LPCWSTR      lpTemplateName;
400 }
401 alias FINDREPLACEW* LPFINDREPLACEW;
402
403 struct OPENFILENAMEA {
404     DWORD         lStructSize = OPENFILENAMEA.sizeof;
405     HWND          hwndOwner;
406     HINSTANCE     hInstance;
407     LPCSTR        lpstrFilter;
408     LPSTR         lpstrCustomFilter;
409     DWORD         nMaxCustFilter;
410     DWORD         nFilterIndex;
411     LPSTR         lpstrFile;
412     DWORD         nMaxFile;
413     LPSTR         lpstrFileTitle;
414     DWORD         nMaxFileTitle;
415     LPCSTR        lpstrInitialDir;
416     LPCSTR        lpstrTitle;
417     DWORD         Flags;
418     WORD          nFileOffset;
419     WORD          nFileExtension;
420     LPCSTR        lpstrDefExt;
421     DWORD         lCustData;
422     LPOFNHOOKPROC lpfnHook;
423     LPCSTR        lpTemplateName;
424 }
425 alias OPENFILENAMEA* LPOPENFILENAMEA;
426
427 struct OPENFILENAMEW {
428     DWORD         lStructSize = OPENFILENAMEW.sizeof;
429     HWND          hwndOwner;
430     HINSTANCE     hInstance;
431     LPCWSTR       lpstrFilter;
432     LPWSTR        lpstrCustomFilter;
433     DWORD         nMaxCustFilter;
434     DWORD         nFilterIndex;
435     LPWSTR        lpstrFile;
436     DWORD         nMaxFile;
437     LPWSTR        lpstrFileTitle;
438     DWORD         nMaxFileTitle;
439     LPCWSTR       lpstrInitialDir;
440     LPCWSTR       lpstrTitle;
441     DWORD         Flags;
442     WORD          nFileOffset;
443     WORD          nFileExtension;
444     LPCWSTR       lpstrDefExt;
445     DWORD         lCustData;
446     LPOFNHOOKPROC lpfnHook;
447     LPCWSTR       lpTemplateName;
448 }
449 alias OPENFILENAMEW* LPOPENFILENAMEW;
450
451 const size_t OPENFILENAME_SIZE_VERSION_400 = 76;
452
453 struct OFNOTIFYA {
454     NMHDR           hdr;
455     LPOPENFILENAMEA lpOFN;
456     LPSTR           pszFile;
457 }
458 alias OFNOTIFYA* LPOFNOTIFYA;
459
460 struct OFNOTIFYW {
461     NMHDR           hdr;
462     LPOPENFILENAMEW lpOFN;
463     LPWSTR          pszFile;
464 }
465 alias OFNOTIFYW* LPOFNOTIFYW;
466
467 struct PAGESETUPDLGA {
468     DWORD           lStructSize = PAGESETUPDLGA.sizeof;
469     HWND            hwndOwner;
470     HGLOBAL         hDevMode;
471     HGLOBAL         hDevNames;
472     DWORD           Flags;
473     POINT           ptPaperSize;
474     RECT            rtMinMargin;
475     RECT            rtMargin;
476     HINSTANCE       hInstance;
477     LPARAM          lCustData;
478     LPPAGESETUPHOOK lpfnPageSetupHook;
479     LPPAGEPAINTHOOK lpfnPagePaintHook;
480     LPCSTR          lpPageSetupTemplateName;
481     HGLOBAL         hPageSetupTemplate;
482 }
483 alias PAGESETUPDLGA* LPPAGESETUPDLGA;
484
485 struct PAGESETUPDLGW {
486     DWORD           lStructSize = PAGESETUPDLGW.sizeof;
487     HWND            hwndOwner;
488     HGLOBAL         hDevMode;
489     HGLOBAL         hDevNames;
490     DWORD           Flags;
491     POINT           ptPaperSize;
492     RECT            rtMinMargin;
493     RECT            rtMargin;
494     HINSTANCE       hInstance;
495     LPARAM          lCustData;
496     LPPAGESETUPHOOK lpfnPageSetupHook;
497     LPPAGEPAINTHOOK lpfnPagePaintHook;
498     LPCWSTR         lpPageSetupTemplateName;
499     HGLOBAL         hPageSetupTemplate;
500 }
501 alias PAGESETUPDLGW* LPPAGESETUPDLGW;
502
503 struct PRINTDLGA {
504     DWORD           lStructSize = PRINTDLGA.sizeof;
505     HWND            hwndOwner;
506     HANDLE          hDevMode;
507     HANDLE          hDevNames;
508     HDC             hDC;
509     DWORD           Flags;
510     WORD            nFromPage;
511     WORD            nToPage;
512     WORD            nMinPage;
513     WORD            nMaxPage;
514     WORD            nCopies;
515     HINSTANCE       hInstance;
516     DWORD           lCustData;
517     LPPRINTHOOKPROC lpfnPrintHook;
518     LPSETUPHOOKPROC lpfnSetupHook;
519     LPCSTR          lpPrintTemplateName;
520     LPCSTR          lpSetupTemplateName;
521     HANDLE          hPrintTemplate;
522     HANDLE          hSetupTemplate;
523 }
524 alias PRINTDLGA* LPPRINTDLGA;
525
526 struct PRINTDLGW {
527     DWORD           lStructSize = PRINTDLGW.sizeof;
528     HWND            hwndOwner;
529     HANDLE          hDevMode;
530     HANDLE          hDevNames;
531     HDC             hDC;
532     DWORD           Flags;
533     WORD            nFromPage;
534     WORD            nToPage;
535     WORD            nMinPage;
536     WORD            nMaxPage;
537     WORD            nCopies;
538     HINSTANCE       hInstance;
539     DWORD           lCustData;
540     LPPRINTHOOKPROC lpfnPrintHook;
541     LPSETUPHOOKPROC lpfnSetupHook;
542     LPCWSTR         lpPrintTemplateName;
543     LPCWSTR         lpSetupTemplateName;
544     HANDLE          hPrintTemplate;
545     HANDLE          hSetupTemplate;
546 }
547 alias PRINTDLGW* LPPRINTDLGW;
548
549 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
550     import win32.unknwn; // for LPUNKNOWN
551     import win32.prsht;  // for HPROPSHEETPAGE
552
553     struct PRINTPAGERANGE {
554         DWORD  nFromPage;
555         DWORD  nToPage;
556     }
557     alias PRINTPAGERANGE* LPPRINTPAGERANGE;
558
559     struct PRINTDLGEXA {
560         DWORD            lStructSize = PRINTDLGEXA.sizeof;
561         HWND             hwndOwner;
562         HGLOBAL          hDevMode;
563         HGLOBAL          hDevNames;
564         HDC              hDC;
565         DWORD            Flags;
566         DWORD            Flags2;
567         DWORD            ExclusionFlags;
568         DWORD            nPageRanges;
569         DWORD            nMaxPageRanges;
570         LPPRINTPAGERANGE lpPageRanges;
571         DWORD            nMinPage;
572         DWORD            nMaxPage;
573         DWORD            nCopies;
574         HINSTANCE        hInstance;
575         LPCSTR           lpPrintTemplateName;
576         LPUNKNOWN        lpCallback;
577         DWORD            nPropertyPages;
578         HPROPSHEETPAGE*  lphPropertyPages;
579         DWORD            nStartPage;
580         DWORD            dwResultAction;
581     }
582     alias PRINTDLGEXA* LPPRINTDLGEXA;
583
584     struct PRINTDLGEXW {
585         DWORD            lStructSize = PRINTDLGEXW.sizeof;
586         HWND             hwndOwner;
587         HGLOBAL          hDevMode;
588         HGLOBAL          hDevNames;
589         HDC              hDC;
590         DWORD            Flags;
591         DWORD            Flags2;
592         DWORD            ExclusionFlags;
593         DWORD            nPageRanges;
594         DWORD            nMaxPageRanges;
595         LPPRINTPAGERANGE lpPageRanges;
596         DWORD            nMinPage;
597         DWORD            nMaxPage;
598         DWORD            nCopies;
599         HINSTANCE        hInstance;
600         LPCWSTR          lpPrintTemplateName;
601         LPUNKNOWN        lpCallback;
602         DWORD            nPropertyPages;
603         HPROPSHEETPAGE*  lphPropertyPages;
604         DWORD            nStartPage;
605         DWORD            dwResultAction;
606     }
607     alias PRINTDLGEXW* LPPRINTDLGEXW;
608
609 } // _WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500
610
611 extern (Windows) {
612     BOOL ChooseColorA(LPCHOOSECOLORA);
613     BOOL ChooseColorW(LPCHOOSECOLORW);
614     BOOL ChooseFontA(LPCHOOSEFONTA);
615     BOOL ChooseFontW(LPCHOOSEFONTW);
616     DWORD CommDlgExtendedError();
617     HWND FindTextA(LPFINDREPLACEA);
618     HWND FindTextW(LPFINDREPLACEW);
619     short GetFileTitleA(LPCSTR, LPSTR, WORD);
620     short GetFileTitleW(LPCWSTR, LPWSTR, WORD);
621     BOOL GetOpenFileNameA(LPOPENFILENAMEA);
622     BOOL GetOpenFileNameW(LPOPENFILENAMEW);
623     BOOL GetSaveFileNameA(LPOPENFILENAMEA);
624     BOOL GetSaveFileNameW(LPOPENFILENAMEW);
625     BOOL PageSetupDlgA(LPPAGESETUPDLGA);
626     BOOL PageSetupDlgW(LPPAGESETUPDLGW);
627     BOOL PrintDlgA(LPPRINTDLGA);
628     BOOL PrintDlgW(LPPRINTDLGW);
629     HWND ReplaceTextA(LPFINDREPLACEA);
630     HWND ReplaceTextW(LPFINDREPLACEW);
631
632     static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
633         HRESULT PrintDlgExA(LPPRINTDLGEXA);
634         HRESULT PrintDlgExW(LPPRINTDLGEXW);
635     }
636 }
637
638 version (Unicode) {
639     alias CHOOSECOLORW CHOOSECOLOR;
640     alias CHOOSEFONTW CHOOSEFONT;
641     alias FINDREPLACEW FINDREPLACE;
642     alias OPENFILENAMEW OPENFILENAME;
643     alias OFNOTIFYW OFNOTIFY;
644     alias PAGESETUPDLGW PAGESETUPDLG;
645     alias PRINTDLGW PRINTDLG;
646
647     alias ChooseColorW ChooseColor;
648     alias ChooseFontW ChooseFont;
649     alias FindTextW FindText;
650     alias GetFileTitleW GetFileTitle;
651     alias GetOpenFileNameW GetOpenFileName;
652     alias GetSaveFileNameW GetSaveFileName;
653     alias PageSetupDlgW PageSetupDlg;
654     alias PrintDlgW PrintDlg;
655     alias ReplaceTextW ReplaceText;
656
657     static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
658         alias PRINTDLGEXW PRINTDLGEX;
659         alias PrintDlgExW PrintDlgEx;
660     }
661
662 } else { // UNICODE
663
664     alias CHOOSECOLORA CHOOSECOLOR;
665     alias CHOOSEFONTA CHOOSEFONT;
666     alias FINDREPLACEA FINDREPLACE;
667     alias OPENFILENAMEA OPENFILENAME;
668     alias OFNOTIFYA OFNOTIFY;
669     alias PAGESETUPDLGA PAGESETUPDLG;
670     alias PRINTDLGA PRINTDLG;
671
672     alias ChooseColorA ChooseColor;
673     alias ChooseFontA ChooseFont;
674     alias FindTextA FindText;
675     alias GetFileTitleA GetFileTitle;
676     alias GetOpenFileNameA GetOpenFileName;
677     alias GetSaveFileNameA GetSaveFileName;
678     alias PageSetupDlgA PageSetupDlg;
679     alias PrintDlgA PrintDlg;
680     alias ReplaceTextA ReplaceText;
681
682     static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
683         alias PRINTDLGEXA PRINTDLGEX;
684         alias PrintDlgExA PrintDlgEx;
685     }
686
687 } // UNICODE
688
689 alias CHOOSECOLOR* LPCHOOSECOLOR;
690 alias CHOOSEFONT* LPCHOOSEFONT;
691 alias FINDREPLACE* LPFINDREPLACE;
692 alias OPENFILENAME* LPOPENFILENAME;
693 alias OFNOTIFY* LPOFNOTIFY;
694 alias PAGESETUPDLG* LPPAGESETUPDLG;
695 alias PRINTDLG* LPPRINTDLG;
696 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
697     alias PRINTDLGEX* LPPRINTDLGEX;
698 }
Note: See TracBrowser for help on using the browser.