Home | History | Annotate | Download | only in include
      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 
    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
    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