1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #include <winapifamily.h>
7 
8 #ifndef _INC_COMMDLG
9 #define _INC_COMMDLG
10 
11 #include <_mingw_unicode.h>
12 
13 #ifdef DEFINE_GUID
14 DEFINE_GUID(IID_IPrintDialogCallback,0x5852a2c3,0x6530,0x11d1,0xb6,0xa3,0x0,0x0,0xf8,0x75,0x7b,0xf9);
15 DEFINE_GUID(IID_IPrintDialogServices,0x509aaeda,0x5639,0x11d1,0xb6,0xa1,0x0,0x0,0xf8,0x75,0x7b,0xf9);
16 #endif
17 
18 #ifndef GUID_DEFS_ONLY
19 #include <prsht.h>
20 #if !defined(_WIN64)
21 #include <pshpack1.h>
22 #endif
23 
24 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #ifndef WINCOMMDLGAPI
31 #ifndef _COMDLG32_
32 #define WINCOMMDLGAPI DECLSPEC_IMPORT
33 #else
34 #define WINCOMMDLGAPI
35 #endif
36 #endif
37 
38 #ifndef SNDMSG
39 #ifdef __cplusplus
40 #define SNDMSG ::SendMessage
41 #else
42 #define SNDMSG SendMessage
43 #endif
44 #endif
45 
46   typedef UINT_PTR (CALLBACK *LPOFNHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
47 
48 #ifndef CDSIZEOF_STRUCT
49 #define CDSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
50 #endif
51 
52   typedef struct tagOFN_NT4A {
53     DWORD lStructSize;
54     HWND hwndOwner;
55     HINSTANCE hInstance;
56     LPCSTR lpstrFilter;
57     LPSTR lpstrCustomFilter;
58     DWORD nMaxCustFilter;
59     DWORD nFilterIndex;
60     LPSTR lpstrFile;
61     DWORD nMaxFile;
62     LPSTR lpstrFileTitle;
63     DWORD nMaxFileTitle;
64     LPCSTR lpstrInitialDir;
65     LPCSTR lpstrTitle;
66     DWORD Flags;
67     WORD nFileOffset;
68     WORD nFileExtension;
69     LPCSTR lpstrDefExt;
70     LPARAM lCustData;
71     LPOFNHOOKPROC lpfnHook;
72     LPCSTR lpTemplateName;
73   } OPENFILENAME_NT4A,*LPOPENFILENAME_NT4A;
74   typedef struct tagOFN_NT4W {
75     DWORD lStructSize;
76     HWND hwndOwner;
77     HINSTANCE hInstance;
78     LPCWSTR lpstrFilter;
79     LPWSTR lpstrCustomFilter;
80     DWORD nMaxCustFilter;
81     DWORD nFilterIndex;
82     LPWSTR lpstrFile;
83     DWORD nMaxFile;
84     LPWSTR lpstrFileTitle;
85     DWORD nMaxFileTitle;
86     LPCWSTR lpstrInitialDir;
87     LPCWSTR lpstrTitle;
88     DWORD Flags;
89     WORD nFileOffset;
90     WORD nFileExtension;
91     LPCWSTR lpstrDefExt;
92     LPARAM lCustData;
93     LPOFNHOOKPROC lpfnHook;
94     LPCWSTR lpTemplateName;
95   } OPENFILENAME_NT4W,*LPOPENFILENAME_NT4W;
96 
97   __MINGW_TYPEDEF_AW(OPENFILENAME_NT4)
98   __MINGW_TYPEDEF_AW(LPOPENFILENAME_NT4)
99 
100   typedef struct tagOFNA {
101     DWORD lStructSize;
102     HWND hwndOwner;
103     HINSTANCE hInstance;
104     LPCSTR lpstrFilter;
105     LPSTR lpstrCustomFilter;
106     DWORD nMaxCustFilter;
107     DWORD nFilterIndex;
108     LPSTR lpstrFile;
109     DWORD nMaxFile;
110     LPSTR lpstrFileTitle;
111     DWORD nMaxFileTitle;
112     LPCSTR lpstrInitialDir;
113     LPCSTR lpstrTitle;
114     DWORD Flags;
115     WORD nFileOffset;
116     WORD nFileExtension;
117     LPCSTR lpstrDefExt;
118     LPARAM lCustData;
119     LPOFNHOOKPROC lpfnHook;
120     LPCSTR lpTemplateName;
121     void *pvReserved;
122     DWORD dwReserved;
123     DWORD FlagsEx;
124   } OPENFILENAMEA,*LPOPENFILENAMEA;
125   typedef struct tagOFNW {
126     DWORD lStructSize;
127     HWND hwndOwner;
128     HINSTANCE hInstance;
129     LPCWSTR lpstrFilter;
130     LPWSTR lpstrCustomFilter;
131     DWORD nMaxCustFilter;
132     DWORD nFilterIndex;
133     LPWSTR lpstrFile;
134     DWORD nMaxFile;
135     LPWSTR lpstrFileTitle;
136     DWORD nMaxFileTitle;
137     LPCWSTR lpstrInitialDir;
138     LPCWSTR lpstrTitle;
139     DWORD Flags;
140     WORD nFileOffset;
141     WORD nFileExtension;
142     LPCWSTR lpstrDefExt;
143     LPARAM lCustData;
144     LPOFNHOOKPROC lpfnHook;
145     LPCWSTR lpTemplateName;
146     void *pvReserved;
147     DWORD dwReserved;
148     DWORD FlagsEx;
149   } OPENFILENAMEW,*LPOPENFILENAMEW;
150 
151   __MINGW_TYPEDEF_AW(OPENFILENAME)
152   __MINGW_TYPEDEF_AW(LPOPENFILENAME)
153 
154 #define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName)
155 #define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName)
156 
157 #define OPENFILENAME_SIZE_VERSION_400 __MINGW_NAME_AW(OPENFILENAME_SIZE_VERSION_400)
158 
159   WINCOMMDLGAPI WINBOOL WINAPI GetOpenFileNameA(LPOPENFILENAMEA);
160   WINCOMMDLGAPI WINBOOL WINAPI GetOpenFileNameW(LPOPENFILENAMEW);
161 
162 #define GetOpenFileName __MINGW_NAME_AW(GetOpenFileName)
163 
164   WINCOMMDLGAPI WINBOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA);
165   WINCOMMDLGAPI WINBOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW);
166 
167 #define GetSaveFileName __MINGW_NAME_AW(GetSaveFileName)
168 
169   WINCOMMDLGAPI short WINAPI GetFileTitleA(LPCSTR,LPSTR,WORD);
170   WINCOMMDLGAPI short WINAPI GetFileTitleW(LPCWSTR,LPWSTR,WORD);
171 
172 #define GetFileTitle __MINGW_NAME_AW(GetFileTitle)
173 
174 #define OFN_READONLY 0x1
175 #define OFN_OVERWRITEPROMPT 0x2
176 #define OFN_HIDEREADONLY 0x4
177 #define OFN_NOCHANGEDIR 0x8
178 #define OFN_SHOWHELP 0x10
179 #define OFN_ENABLEHOOK 0x20
180 #define OFN_ENABLETEMPLATE 0x40
181 #define OFN_ENABLETEMPLATEHANDLE 0x80
182 #define OFN_NOVALIDATE 0x100
183 #define OFN_ALLOWMULTISELECT 0x200
184 #define OFN_EXTENSIONDIFFERENT 0x400
185 #define OFN_PATHMUSTEXIST 0x800
186 #define OFN_FILEMUSTEXIST 0x1000
187 #define OFN_CREATEPROMPT 0x2000
188 #define OFN_SHAREAWARE 0x4000
189 #define OFN_NOREADONLYRETURN 0x8000
190 #define OFN_NOTESTFILECREATE 0x10000
191 #define OFN_NONETWORKBUTTON 0x20000
192 #define OFN_NOLONGNAMES 0x40000
193 #define OFN_EXPLORER 0x80000
194 #define OFN_NODEREFERENCELINKS 0x100000
195 #define OFN_LONGNAMES 0x200000
196 #define OFN_ENABLEINCLUDENOTIFY 0x400000
197 #define OFN_ENABLESIZING 0x800000
198 #define OFN_DONTADDTORECENT 0x2000000
199 #define OFN_FORCESHOWHIDDEN 0x10000000
200 #define OFN_EX_NOPLACESBAR 0x1
201 #define OFN_SHAREFALLTHROUGH 2
202 #define OFN_SHARENOWARN 1
203 #define OFN_SHAREWARN 0
204 
205   typedef UINT_PTR (CALLBACK *LPCCHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
206 
207   typedef struct _OFNOTIFYA {
208     NMHDR hdr;
209     LPOPENFILENAMEA lpOFN;
210     LPSTR pszFile;
211   } OFNOTIFYA,*LPOFNOTIFYA;
212 
213   typedef struct _OFNOTIFYW {
214     NMHDR hdr;
215     LPOPENFILENAMEW lpOFN;
216     LPWSTR pszFile;
217   } OFNOTIFYW,*LPOFNOTIFYW;
218 
219   __MINGW_TYPEDEF_AW(OFNOTIFY)
220   __MINGW_TYPEDEF_AW(LPOFNOTIFY)
221 
222   typedef struct _OFNOTIFYEXA {
223     NMHDR hdr;
224     LPOPENFILENAMEA lpOFN;
225     LPVOID psf;
226     LPVOID pidl;
227   } OFNOTIFYEXA,*LPOFNOTIFYEXA;
228 
229   typedef struct _OFNOTIFYEXW {
230     NMHDR hdr;
231     LPOPENFILENAMEW lpOFN;
232     LPVOID psf;
233     LPVOID pidl;
234   } OFNOTIFYEXW,*LPOFNOTIFYEXW;
235 
236   __MINGW_TYPEDEF_AW(OFNOTIFYEX)
237   __MINGW_TYPEDEF_AW(LPOFNOTIFYEX)
238 
239 #define CDN_FIRST (0U-601U)
240 #define CDN_LAST (0U-699U)
241 
242 #define CDN_INITDONE (CDN_FIRST)
243 #define CDN_SELCHANGE (CDN_FIRST - 1)
244 #define CDN_FOLDERCHANGE (CDN_FIRST - 2)
245 #define CDN_SHAREVIOLATION (CDN_FIRST - 3)
246 #define CDN_HELP (CDN_FIRST - 4)
247 #define CDN_FILEOK (CDN_FIRST - 5)
248 #define CDN_TYPECHANGE (CDN_FIRST - 6)
249 #define CDN_INCLUDEITEM (CDN_FIRST - 7)
250 
251 #define CDM_FIRST (WM_USER + 100)
252 #define CDM_LAST (WM_USER + 200)
253 
254 #define CDM_GETSPEC (CDM_FIRST)
255 #define CommDlg_OpenSave_GetSpecA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
256 #define CommDlg_OpenSave_GetSpecW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
257 
258 #define CommDlg_OpenSave_GetSpec __MINGW_NAME_AW(CommDlg_OpenSave_GetSpec)
259 
260 #define CDM_GETFILEPATH (CDM_FIRST + 1)
261 #define CommDlg_OpenSave_GetFilePathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
262 #define CommDlg_OpenSave_GetFilePathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
263 
264 #define CommDlg_OpenSave_GetFilePath __MINGW_NAME_AW(CommDlg_OpenSave_GetFilePath)
265 
266 #define CDM_GETFOLDERPATH (CDM_FIRST + 2)
267 #define CommDlg_OpenSave_GetFolderPathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
268 #define CommDlg_OpenSave_GetFolderPathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
269 
270 #define CommDlg_OpenSave_GetFolderPath __MINGW_NAME_AW(CommDlg_OpenSave_GetFolderPath)
271 
272 #define CDM_GETFOLDERIDLIST (CDM_FIRST + 3)
273 #define CommDlg_OpenSave_GetFolderIDList(_hdlg,_pidl,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERIDLIST,(WPARAM)_cbmax,(LPARAM)(LPVOID)_pidl)
274 #define CDM_SETCONTROLTEXT (CDM_FIRST + 4)
275 #define CommDlg_OpenSave_SetControlText(_hdlg,_id,_text) (void)SNDMSG(_hdlg,CDM_SETCONTROLTEXT,(WPARAM)_id,(LPARAM)(LPSTR)_text)
276 #define CDM_HIDECONTROL (CDM_FIRST + 5)
277 #define CommDlg_OpenSave_HideControl(_hdlg,_id) (void)SNDMSG(_hdlg,CDM_HIDECONTROL,(WPARAM)_id,0)
278 #define CDM_SETDEFEXT (CDM_FIRST + 6)
279 #define CommDlg_OpenSave_SetDefExt(_hdlg,_pszext) (void)SNDMSG(_hdlg,CDM_SETDEFEXT,0,(LPARAM)(LPSTR)_pszext)
280 
281   typedef struct tagCHOOSECOLORA {
282     DWORD lStructSize;
283     HWND hwndOwner;
284     HWND hInstance;
285     COLORREF rgbResult;
286     COLORREF *lpCustColors;
287     DWORD Flags;
288     LPARAM lCustData;
289     LPCCHOOKPROC lpfnHook;
290     LPCSTR lpTemplateName;
291   } CHOOSECOLORA,*LPCHOOSECOLORA;
292   typedef struct tagCHOOSECOLORW {
293     DWORD lStructSize;
294     HWND hwndOwner;
295     HWND hInstance;
296     COLORREF rgbResult;
297     COLORREF *lpCustColors;
298     DWORD Flags;
299     LPARAM lCustData;
300     LPCCHOOKPROC lpfnHook;
301     LPCWSTR lpTemplateName;
302   } CHOOSECOLORW,*LPCHOOSECOLORW;
303 
304   __MINGW_TYPEDEF_AW(CHOOSECOLOR)
305   __MINGW_TYPEDEF_AW(LPCHOOSECOLOR)
306 
307   WINCOMMDLGAPI WINBOOL WINAPI ChooseColorA(LPCHOOSECOLORA);
308   WINCOMMDLGAPI WINBOOL WINAPI ChooseColorW(LPCHOOSECOLORW);
309 
310 #define ChooseColor __MINGW_NAME_AW(ChooseColor)
311 
312 #define CC_RGBINIT 0x1
313 #define CC_FULLOPEN 0x2
314 #define CC_PREVENTFULLOPEN 0x4
315 #define CC_SHOWHELP 0x8
316 #define CC_ENABLEHOOK 0x10
317 #define CC_ENABLETEMPLATE 0x20
318 #define CC_ENABLETEMPLATEHANDLE 0x40
319 #define CC_SOLIDCOLOR 0x80
320 #define CC_ANYCOLOR 0x100
321 
322   typedef UINT_PTR (CALLBACK *LPFRHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
323 
324   typedef struct tagFINDREPLACEA {
325     DWORD lStructSize;
326     HWND hwndOwner;
327     HINSTANCE hInstance;
328     DWORD Flags;
329     LPSTR lpstrFindWhat;
330     LPSTR lpstrReplaceWith;
331     WORD wFindWhatLen;
332     WORD wReplaceWithLen;
333     LPARAM lCustData;
334     LPFRHOOKPROC lpfnHook;
335     LPCSTR lpTemplateName;
336   } FINDREPLACEA,*LPFINDREPLACEA;
337 
338   typedef struct tagFINDREPLACEW {
339     DWORD lStructSize;
340     HWND hwndOwner;
341     HINSTANCE hInstance;
342     DWORD Flags;
343     LPWSTR lpstrFindWhat;
344     LPWSTR lpstrReplaceWith;
345     WORD wFindWhatLen;
346     WORD wReplaceWithLen;
347     LPARAM lCustData;
348     LPFRHOOKPROC lpfnHook;
349     LPCWSTR lpTemplateName;
350   } FINDREPLACEW,*LPFINDREPLACEW;
351 
352   __MINGW_TYPEDEF_AW(FINDREPLACE)
353   __MINGW_TYPEDEF_AW(LPFINDREPLACE)
354 
355 #define FR_DOWN 0x1
356 #define FR_WHOLEWORD 0x2
357 #define FR_MATCHCASE 0x4
358 #define FR_FINDNEXT 0x8
359 #define FR_REPLACE 0x10
360 #define FR_REPLACEALL 0x20
361 #define FR_DIALOGTERM 0x40
362 #define FR_SHOWHELP 0x80
363 #define FR_ENABLEHOOK 0x100
364 #define FR_ENABLETEMPLATE 0x200
365 #define FR_NOUPDOWN 0x400
366 #define FR_NOMATCHCASE 0x800
367 #define FR_NOWHOLEWORD 0x1000
368 #define FR_ENABLETEMPLATEHANDLE 0x2000
369 #define FR_HIDEUPDOWN 0x4000
370 #define FR_HIDEMATCHCASE 0x8000
371 #define FR_HIDEWHOLEWORD 0x10000
372 #define FR_RAW 0x20000
373 #define FR_MATCHDIAC 0x20000000
374 #define FR_MATCHKASHIDA 0x40000000
375 #define FR_MATCHALEFHAMZA 0x80000000
376 
377   WINCOMMDLGAPI HWND WINAPI FindTextA(LPFINDREPLACEA);
378   WINCOMMDLGAPI HWND WINAPI FindTextW(LPFINDREPLACEW);
379 
380 #define FindText __MINGW_NAME_AW(FindText)
381 
382   WINCOMMDLGAPI HWND WINAPI ReplaceTextA(LPFINDREPLACEA);
383   WINCOMMDLGAPI HWND WINAPI ReplaceTextW(LPFINDREPLACEW);
384 
385 #define ReplaceText __MINGW_NAME_AW(ReplaceText)
386 
387   typedef UINT_PTR (CALLBACK *LPCFHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
388 
389   typedef struct tagCHOOSEFONTA {
390     DWORD lStructSize;
391     HWND hwndOwner;
392     HDC hDC;
393     LPLOGFONTA lpLogFont;
394     INT iPointSize;
395     DWORD Flags;
396     COLORREF rgbColors;
397     LPARAM lCustData;
398     LPCFHOOKPROC lpfnHook;
399     LPCSTR lpTemplateName;
400     HINSTANCE hInstance;
401     LPSTR lpszStyle;
402     WORD nFontType;
403     WORD ___MISSING_ALIGNMENT__;
404     INT nSizeMin;
405     INT nSizeMax;
406   } CHOOSEFONTA,*LPCHOOSEFONTA;
407 
408   typedef struct tagCHOOSEFONTW {
409     DWORD lStructSize;
410     HWND hwndOwner;
411     HDC hDC;
412     LPLOGFONTW lpLogFont;
413     INT iPointSize;
414     DWORD Flags;
415     COLORREF rgbColors;
416     LPARAM lCustData;
417     LPCFHOOKPROC lpfnHook;
418     LPCWSTR lpTemplateName;
419     HINSTANCE hInstance;
420     LPWSTR lpszStyle;
421     WORD nFontType;
422     WORD ___MISSING_ALIGNMENT__;
423     INT nSizeMin;
424     INT nSizeMax;
425   } CHOOSEFONTW,*LPCHOOSEFONTW;
426 
427   __MINGW_TYPEDEF_AW(CHOOSEFONT)
428   __MINGW_TYPEDEF_AW(LPCHOOSEFONT)
429 
430   WINCOMMDLGAPI WINBOOL WINAPI ChooseFontA(LPCHOOSEFONTA);
431   WINCOMMDLGAPI WINBOOL WINAPI ChooseFontW(LPCHOOSEFONTW);
432 
433 #define ChooseFont __MINGW_NAME_AW(ChooseFont)
434 
435 #define CF_SCREENFONTS 0x1
436 #define CF_PRINTERFONTS 0x2
437 #define CF_BOTH (CF_SCREENFONTS | CF_PRINTERFONTS)
438 #define CF_SHOWHELP __MSABI_LONG(0x4)
439 #define CF_ENABLEHOOK __MSABI_LONG(0x8)
440 #define CF_ENABLETEMPLATE __MSABI_LONG(0x10)
441 #define CF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x20)
442 #define CF_INITTOLOGFONTSTRUCT __MSABI_LONG(0x40)
443 #define CF_USESTYLE __MSABI_LONG(0x80)
444 #define CF_EFFECTS __MSABI_LONG(0x100)
445 #define CF_APPLY __MSABI_LONG(0x200)
446 #define CF_ANSIONLY __MSABI_LONG(0x400)
447 #define CF_SCRIPTSONLY CF_ANSIONLY
448 #define CF_NOVECTORFONTS __MSABI_LONG(0x800)
449 #define CF_NOOEMFONTS CF_NOVECTORFONTS
450 #define CF_NOSIMULATIONS __MSABI_LONG(0x1000)
451 #define CF_LIMITSIZE __MSABI_LONG(0x2000)
452 #define CF_FIXEDPITCHONLY __MSABI_LONG(0x4000)
453 #define CF_WYSIWYG __MSABI_LONG(0x8000)
454 #define CF_FORCEFONTEXIST __MSABI_LONG(0x10000)
455 #define CF_SCALABLEONLY __MSABI_LONG(0x20000)
456 #define CF_TTONLY __MSABI_LONG(0x40000)
457 #define CF_NOFACESEL __MSABI_LONG(0x80000)
458 #define CF_NOSTYLESEL __MSABI_LONG(0x100000)
459 #define CF_NOSIZESEL __MSABI_LONG(0x200000)
460 #define CF_SELECTSCRIPT __MSABI_LONG(0x400000)
461 #define CF_NOSCRIPTSEL __MSABI_LONG(0x800000)
462 #define CF_NOVERTFONTS __MSABI_LONG(0x1000000)
463 #if WINVER >= 0x0601
464 #define CF_INACTIVEFONTS __MSABI_LONG (0x02000000)
465 #endif
466 
467 #define SIMULATED_FONTTYPE 0x8000
468 #define PRINTER_FONTTYPE 0x4000
469 #define SCREEN_FONTTYPE 0x2000
470 #define BOLD_FONTTYPE 0x100
471 #define ITALIC_FONTTYPE 0x200
472 #define REGULAR_FONTTYPE 0x400
473 
474 #ifdef WINNT
475 #define PS_OPENTYPE_FONTTYPE 0x10000
476 #define TT_OPENTYPE_FONTTYPE 0x20000
477 #define TYPE1_FONTTYPE 0x40000
478 #if WINVER >= 0x0601
479 #define SYMBOL_FONTTYPE 0x80000
480 #endif
481 #endif
482 
483 #define WM_CHOOSEFONT_GETLOGFONT (WM_USER + 1)
484 #define WM_CHOOSEFONT_SETLOGFONT (WM_USER + 101)
485 #define WM_CHOOSEFONT_SETFLAGS (WM_USER + 102)
486 
487 #define LBSELCHSTRINGA "commdlg_LBSelChangedNotify"
488 #define SHAREVISTRINGA "commdlg_ShareViolation"
489 #define FILEOKSTRINGA "commdlg_FileNameOK"
490 #define COLOROKSTRINGA "commdlg_ColorOK"
491 #define SETRGBSTRINGA "commdlg_SetRGBColor"
492 #define HELPMSGSTRINGA "commdlg_help"
493 #define FINDMSGSTRINGA "commdlg_FindReplace"
494 
495 #define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
496 #define SHAREVISTRINGW L"commdlg_ShareViolation"
497 #define FILEOKSTRINGW L"commdlg_FileNameOK"
498 #define COLOROKSTRINGW L"commdlg_ColorOK"
499 #define SETRGBSTRINGW L"commdlg_SetRGBColor"
500 #define HELPMSGSTRINGW L"commdlg_help"
501 #define FINDMSGSTRINGW L"commdlg_FindReplace"
502 
503 #define LBSELCHSTRING __MINGW_NAME_AW(LBSELCHSTRING)
504 #define SHAREVISTRING __MINGW_NAME_AW(SHAREVISTRING)
505 #define FILEOKSTRING __MINGW_NAME_AW(FILEOKSTRING)
506 #define COLOROKSTRING __MINGW_NAME_AW(COLOROKSTRING)
507 #define SETRGBSTRING __MINGW_NAME_AW(SETRGBSTRING)
508 #define HELPMSGSTRING __MINGW_NAME_AW(HELPMSGSTRING)
509 #define FINDMSGSTRING __MINGW_NAME_AW(FINDMSGSTRING)
510 
511 #define CD_LBSELNOITEMS -1
512 #define CD_LBSELCHANGE 0
513 #define CD_LBSELSUB 1
514 #define CD_LBSELADD 2
515 
516   typedef UINT_PTR (CALLBACK *LPPRINTHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
517   typedef UINT_PTR (CALLBACK *LPSETUPHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
518 
519   typedef struct tagPDA {
520     DWORD lStructSize;
521     HWND hwndOwner;
522     HGLOBAL hDevMode;
523     HGLOBAL hDevNames;
524     HDC hDC;
525     DWORD Flags;
526     WORD nFromPage;
527     WORD nToPage;
528     WORD nMinPage;
529     WORD nMaxPage;
530     WORD nCopies;
531     HINSTANCE hInstance;
532     LPARAM lCustData;
533     LPPRINTHOOKPROC lpfnPrintHook;
534     LPSETUPHOOKPROC lpfnSetupHook;
535     LPCSTR lpPrintTemplateName;
536     LPCSTR lpSetupTemplateName;
537     HGLOBAL hPrintTemplate;
538     HGLOBAL hSetupTemplate;
539   } PRINTDLGA,*LPPRINTDLGA;
540 
541   typedef struct tagPDW {
542     DWORD lStructSize;
543     HWND hwndOwner;
544     HGLOBAL hDevMode;
545     HGLOBAL hDevNames;
546     HDC hDC;
547     DWORD Flags;
548     WORD nFromPage;
549     WORD nToPage;
550     WORD nMinPage;
551     WORD nMaxPage;
552     WORD nCopies;
553     HINSTANCE hInstance;
554     LPARAM lCustData;
555     LPPRINTHOOKPROC lpfnPrintHook;
556     LPSETUPHOOKPROC lpfnSetupHook;
557     LPCWSTR lpPrintTemplateName;
558     LPCWSTR lpSetupTemplateName;
559     HGLOBAL hPrintTemplate;
560     HGLOBAL hSetupTemplate;
561   } PRINTDLGW,*LPPRINTDLGW;
562 
563   __MINGW_TYPEDEF_AW(PRINTDLG)
564   __MINGW_TYPEDEF_AW(LPPRINTDLG)
565 
566   WINCOMMDLGAPI WINBOOL WINAPI PrintDlgA(LPPRINTDLGA);
567   WINCOMMDLGAPI WINBOOL WINAPI PrintDlgW(LPPRINTDLGW);
568 
569 #define PrintDlg __MINGW_NAME_AW(PrintDlg)
570 
571 #ifdef STDMETHOD
572 #undef INTERFACE
573 #define INTERFACE IPrintDialogCallback
574 
DECLARE_INTERFACE_(IPrintDialogCallback,IUnknown)575   DECLARE_INTERFACE_(IPrintDialogCallback,IUnknown) {
576 #ifndef __cplusplus
577     STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
578     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
579     STDMETHOD_(ULONG,Release) (THIS) PURE;
580 #endif
581     STDMETHOD(InitDone) (THIS) PURE;
582     STDMETHOD(SelectionChange) (THIS) PURE;
583     STDMETHOD(HandleMessage) (THIS_ HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pResult) PURE;
584   };
585 
586 #undef INTERFACE
587 #define INTERFACE IPrintDialogServices
DECLARE_INTERFACE_(IPrintDialogServices,IUnknown)588   DECLARE_INTERFACE_(IPrintDialogServices,IUnknown) {
589 #ifndef __cplusplus
590     STDMETHOD(QueryInterface) (THIS_ REFIID riid,LPVOID *ppvObj) PURE;
591     STDMETHOD_(ULONG,AddRef) (THIS) PURE;
592     STDMETHOD_(ULONG,Release) (THIS) PURE;
593 #endif
594     STDMETHOD(GetCurrentDevMode) (THIS_ LPDEVMODE pDevMode,UINT *pcbSize) PURE;
595     STDMETHOD(GetCurrentPrinterName) (THIS_ LPTSTR pPrinterName,UINT *pcchSize) PURE;
596     STDMETHOD(GetCurrentPortName) (THIS_ LPTSTR pPortName,UINT *pcchSize) PURE;
597   };
598 
599   typedef struct tagPRINTPAGERANGE {
600     DWORD nFromPage;
601     DWORD nToPage;
602   } PRINTPAGERANGE,*LPPRINTPAGERANGE;
603 
604   typedef struct tagPDEXA {
605     DWORD lStructSize;
606     HWND hwndOwner;
607     HGLOBAL hDevMode;
608     HGLOBAL hDevNames;
609     HDC hDC;
610     DWORD Flags;
611     DWORD Flags2;
612     DWORD ExclusionFlags;
613     DWORD nPageRanges;
614     DWORD nMaxPageRanges;
615     LPPRINTPAGERANGE lpPageRanges;
616     DWORD nMinPage;
617     DWORD nMaxPage;
618     DWORD nCopies;
619     HINSTANCE hInstance;
620     LPCSTR lpPrintTemplateName;
621     LPUNKNOWN lpCallback;
622     DWORD nPropertyPages;
623     HPROPSHEETPAGE *lphPropertyPages;
624     DWORD nStartPage;
625     DWORD dwResultAction;
626   } PRINTDLGEXA,*LPPRINTDLGEXA;
627 
628   typedef struct tagPDEXW {
629     DWORD lStructSize;
630     HWND hwndOwner;
631     HGLOBAL hDevMode;
632     HGLOBAL hDevNames;
633     HDC hDC;
634     DWORD Flags;
635     DWORD Flags2;
636     DWORD ExclusionFlags;
637     DWORD nPageRanges;
638     DWORD nMaxPageRanges;
639     LPPRINTPAGERANGE lpPageRanges;
640     DWORD nMinPage;
641     DWORD nMaxPage;
642     DWORD nCopies;
643     HINSTANCE hInstance;
644     LPCWSTR lpPrintTemplateName;
645     LPUNKNOWN lpCallback;
646     DWORD nPropertyPages;
647     HPROPSHEETPAGE *lphPropertyPages;
648     DWORD nStartPage;
649     DWORD dwResultAction;
650   } PRINTDLGEXW,*LPPRINTDLGEXW;
651 
652   __MINGW_TYPEDEF_AW(PRINTDLGEX)
653   __MINGW_TYPEDEF_AW(LPPRINTDLGEX)
654 
655   WINCOMMDLGAPI HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
656   WINCOMMDLGAPI HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
657 
658 #define PrintDlgEx __MINGW_NAME_AW(PrintDlgEx)
659 #endif
660 
661 #define PD_ALLPAGES 0x0
662 #define PD_SELECTION 0x1
663 #define PD_PAGENUMS 0x2
664 #define PD_NOSELECTION 0x4
665 #define PD_NOPAGENUMS 0x8
666 #define PD_COLLATE 0x10
667 #define PD_PRINTTOFILE 0x20
668 #define PD_PRINTSETUP 0x40
669 #define PD_NOWARNING 0x80
670 #define PD_RETURNDC 0x100
671 #define PD_RETURNIC 0x200
672 #define PD_RETURNDEFAULT 0x400
673 #define PD_SHOWHELP 0x800
674 #define PD_ENABLEPRINTHOOK 0x1000
675 #define PD_ENABLESETUPHOOK 0x2000
676 #define PD_ENABLEPRINTTEMPLATE 0x4000
677 #define PD_ENABLESETUPTEMPLATE 0x8000
678 #define PD_ENABLEPRINTTEMPLATEHANDLE 0x10000
679 #define PD_ENABLESETUPTEMPLATEHANDLE 0x20000
680 #define PD_USEDEVMODECOPIES 0x40000
681 #define PD_USEDEVMODECOPIESANDCOLLATE 0x40000
682 #define PD_DISABLEPRINTTOFILE 0x80000
683 #define PD_HIDEPRINTTOFILE 0x100000
684 #define PD_NONETWORKBUTTON 0x200000
685 #define PD_CURRENTPAGE 0x400000
686 #define PD_NOCURRENTPAGE 0x800000
687 #define PD_EXCLUSIONFLAGS 0x1000000
688 #define PD_USELARGETEMPLATE 0x10000000
689 
690 #define PD_EXCL_COPIESANDCOLLATE (DM_COPIES | DM_COLLATE)
691 #define START_PAGE_GENERAL 0xffffffff
692 
693 #define PD_RESULT_CANCEL 0
694 #define PD_RESULT_PRINT 1
695 #define PD_RESULT_APPLY 2
696 
697   typedef struct tagDEVNAMES {
698     WORD wDriverOffset;
699     WORD wDeviceOffset;
700     WORD wOutputOffset;
701     WORD wDefault;
702   } DEVNAMES,*LPDEVNAMES;
703 
704 #define DN_DEFAULTPRN 0x1
705 
706   WINCOMMDLGAPI DWORD WINAPI CommDlgExtendedError(VOID);
707 
708 #define WM_PSD_PAGESETUPDLG (WM_USER)
709 #define WM_PSD_FULLPAGERECT (WM_USER+1)
710 #define WM_PSD_MINMARGINRECT (WM_USER+2)
711 #define WM_PSD_MARGINRECT (WM_USER+3)
712 #define WM_PSD_GREEKTEXTRECT (WM_USER+4)
713 #define WM_PSD_ENVSTAMPRECT (WM_USER+5)
714 #define WM_PSD_YAFULLPAGERECT (WM_USER+6)
715 
716   typedef UINT_PTR (CALLBACK *LPPAGEPAINTHOOK)(HWND,UINT,WPARAM,LPARAM);
717   typedef UINT_PTR (CALLBACK *LPPAGESETUPHOOK)(HWND,UINT,WPARAM,LPARAM);
718 
719   typedef struct tagPSDA {
720     DWORD lStructSize;
721     HWND hwndOwner;
722     HGLOBAL hDevMode;
723     HGLOBAL hDevNames;
724     DWORD Flags;
725     POINT ptPaperSize;
726     RECT rtMinMargin;
727     RECT rtMargin;
728     HINSTANCE hInstance;
729     LPARAM lCustData;
730     LPPAGESETUPHOOK lpfnPageSetupHook;
731     LPPAGEPAINTHOOK lpfnPagePaintHook;
732     LPCSTR lpPageSetupTemplateName;
733     HGLOBAL hPageSetupTemplate;
734   } PAGESETUPDLGA,*LPPAGESETUPDLGA;
735 
736   typedef struct tagPSDW {
737     DWORD lStructSize;
738     HWND hwndOwner;
739     HGLOBAL hDevMode;
740     HGLOBAL hDevNames;
741     DWORD Flags;
742     POINT ptPaperSize;
743     RECT rtMinMargin;
744     RECT rtMargin;
745     HINSTANCE hInstance;
746     LPARAM lCustData;
747     LPPAGESETUPHOOK lpfnPageSetupHook;
748     LPPAGEPAINTHOOK lpfnPagePaintHook;
749     LPCWSTR lpPageSetupTemplateName;
750     HGLOBAL hPageSetupTemplate;
751   } PAGESETUPDLGW,*LPPAGESETUPDLGW;
752 
753   __MINGW_TYPEDEF_AW(PAGESETUPDLG)
754   __MINGW_TYPEDEF_AW(LPPAGESETUPDLG)
755 
756   WINCOMMDLGAPI WINBOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA);
757   WINCOMMDLGAPI WINBOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW);
758 
759 #define PageSetupDlg __MINGW_NAME_AW(PageSetupDlg)
760 
761 #define PSD_DEFAULTMINMARGINS 0x0
762 #define PSD_INWININIINTLMEASURE 0x0
763 #define PSD_MINMARGINS 0x1
764 #define PSD_MARGINS 0x2
765 #define PSD_INTHOUSANDTHSOFINCHES 0x4
766 #define PSD_INHUNDREDTHSOFMILLIMETERS 0x8
767 #define PSD_DISABLEMARGINS 0x10
768 #define PSD_DISABLEPRINTER 0x20
769 #define PSD_NOWARNING 0x80
770 #define PSD_DISABLEORIENTATION 0x100
771 #define PSD_RETURNDEFAULT 0x400
772 #define PSD_DISABLEPAPER 0x200
773 #define PSD_SHOWHELP 0x800
774 #define PSD_ENABLEPAGESETUPHOOK 0x2000
775 #define PSD_ENABLEPAGESETUPTEMPLATE 0x8000
776 #define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x20000
777 #define PSD_ENABLEPAGEPAINTHOOK 0x40000
778 #define PSD_DISABLEPAGEPAINTING 0x80000
779 #define PSD_NONETWORKBUTTON 0x200000
780 
781 #ifdef __cplusplus
782 }
783 #endif
784 
785 #endif
786 
787 #ifndef _WIN64
788 #include <poppack.h>
789 #endif
790 #endif
791 #endif
792