Differences From Artifact [6d620068807bb293]:
- File        
src/win32/commdlg.d
- 2011-02-23 12:53:16 - part of checkin [c2b7a98c21] on branch trunk - Initial import (user: kinaba) [annotate]
 
 
To Artifact [dce8014c88d4101f]:
- File        
src/win32/commdlg.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
 
 
            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  +\***********************************************************************/
     1     10   module win32.commdlg;
     2         -
     3         -// Translated from Microsoft Platform SDK August 2001 Edition
     4         -// by Y.Tomino
     5         -
     6         -import win32.windef;
     7         -import win32.winuser;
     8         -// inline #include <cderr.h>
     9         -// ----
    10         -
    11         -// #ifndef _INC_CDERR
    12         -// #define _INC_CDERR
    13         -
    14         -// #if _MSC_VER > 1000
    15         -// #pragma once
    16         -// #endif
    17         -
    18         -enum : uint { CDERR_DIALOGFAILURE = 0xFFFF }
    19         -
    20         -enum : uint { CDERR_GENERALCODES = 0x0000 }
    21         -enum : uint { CDERR_STRUCTSIZE = 0x0001 }
    22         -enum : uint { CDERR_INITIALIZATION = 0x0002 }
    23         -enum : uint { CDERR_NOTEMPLATE = 0x0003 }
    24         -enum : uint { CDERR_NOHINSTANCE = 0x0004 }
    25         -enum : uint { CDERR_LOADSTRFAILURE = 0x0005 }
    26         -enum : uint { CDERR_FINDRESFAILURE = 0x0006 }
    27         -enum : uint { CDERR_LOADRESFAILURE = 0x0007 }
    28         -enum : uint { CDERR_LOCKRESFAILURE = 0x0008 }
    29         -enum : uint { CDERR_MEMALLOCFAILURE = 0x0009 }
    30         -enum : uint { CDERR_MEMLOCKFAILURE = 0x000A }
    31         -enum : uint { CDERR_NOHOOK = 0x000B }
    32         -enum : uint { CDERR_REGISTERMSGFAIL = 0x000C }
    33         -
    34         -enum : uint { PDERR_PRINTERCODES = 0x1000 }
    35         -enum : uint { PDERR_SETUPFAILURE = 0x1001 }
    36         -enum : uint { PDERR_PARSEFAILURE = 0x1002 }
    37         -enum : uint { PDERR_RETDEFFAILURE = 0x1003 }
    38         -enum : uint { PDERR_LOADDRVFAILURE = 0x1004 }
    39         -enum : uint { PDERR_GETDEVMODEFAIL = 0x1005 }
    40         -enum : uint { PDERR_INITFAILURE = 0x1006 }
    41         -enum : uint { PDERR_NODEVICES = 0x1007 }
    42         -enum : uint { PDERR_NODEFAULTPRN = 0x1008 }
    43         -enum : uint { PDERR_DNDMMISMATCH = 0x1009 }
    44         -enum : uint { PDERR_CREATEICFAILURE = 0x100A }
    45         -enum : uint { PDERR_PRINTERNOTFOUND = 0x100B }
    46         -enum : uint { PDERR_DEFAULTDIFFERENT = 0x100C }
    47         -
    48         -enum : uint { CFERR_CHOOSEFONTCODES = 0x2000 }
    49         -enum : uint { CFERR_NOFONTS = 0x2001 }
    50         -enum : uint { CFERR_MAXLESSTHANMIN = 0x2002 }
    51         -
    52         -enum : uint { FNERR_FILENAMECODES = 0x3000 }
    53         -enum : uint { FNERR_SUBCLASSFAILURE = 0x3001 }
    54         -enum : uint { FNERR_INVALIDFILENAME = 0x3002 }
    55         -enum : uint { FNERR_BUFFERTOOSMALL = 0x3003 }
    56         -
    57         -enum : uint { FRERR_FINDREPLACECODES = 0x4000 }
    58         -enum : uint { FRERR_BUFFERLENGTHZERO = 0x4001 }
    59         -
    60         -enum : uint { CCERR_CHOOSECOLORCODES = 0x5000 }
    61         -
    62         -// #endif  /* !_INC_CDERR */
    63         -// ----
    64         -
    65         -// #ifndef _INC_COMMDLG
    66         -// #define _INC_COMMDLG
    67         -
    68         -// #if(WINVER >= 0x0500)
    69         -
    70         -// #ifdef DEFINE_GUID
    71         -
    72         -// ...
    73         -
    74         -// ...
    75         -
    76         -// #endif
    77         -
    78         -// #endif /* WINVER >= 0x0500 */
    79         -
    80         -// #ifndef GUID_DEFS_ONLY
    81         -
    82         -// #include <prsht.h>
    83         -
    84         -// #if !defined(_WIN64)
    85         -align(1):
    86         -// #endif
    87         -
    88         -// #ifdef __cplusplus
    89         -// extern "C" {            /* Assume C declarations for C++ */
    90         -// #endif  /* __cplusplus */
    91         -
    92         -// #ifndef WINCOMMDLGAPI
    93         -// #if !defined(_COMDLG32_)
    94         -// #define WINCOMMDLGAPI DECLSPEC_IMPORT
    95         -// #else
    96         -// #...
    97         -// #endif
    98         -// #endif // WINCOMMDLGAPI
    99         -
   100         -// #if(WINVER >= 0x0400)
   101         -// #ifndef SNDMSG
   102         -// #ifdef __cplusplus
   103         -// #ifndef _MAC
   104         -// #define SNDMSG ::SendMessage
   105         -// #else
   106         -// #...
   107         -// #endif
   108         -// #else   /* __cplusplus */
   109         -// #ifndef _MAC
   110         -// #...
   111         -// #else
   112         -// #...
   113         -// #endif
   114         -// #endif  /* __cplusplus */
   115         -// #endif  // ifndef SNDMSG
   116         -// #endif /* WINVER >= 0x0400 */
   117         -
   118         -// #ifdef _MAC
   119         -// ...
   120         -// #endif
   121         -
   122         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPOFNHOOKPROC;
   123         -
   124         -// #ifndef CDSIZEOF_STRUCT
   125         -// #define CDSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
   126         -// #endif
   127         -
   128         -// #ifndef DUMMYUNIONNAME
   129         -// #ifdef NONAMELESSUNION
   130         -// #...
   131         -// #endif // NONAMELESSUNION
   132         -// #endif // DUMMYUNIONNAME
   133         -
   134         -struct tagOFN_NT4A {
   135         -  DWORD lStructSize;
   136         -  HWND hwndOwner;
   137         -  HINSTANCE hInstance;
   138         -  LPCSTR lpstrFilter;
   139         -  LPSTR lpstrCustomFilter;
   140         -  DWORD nMaxCustFilter;
   141         -  DWORD nFilterIndex;
   142         -  LPSTR lpstrFile;
   143         -  DWORD nMaxFile;
   144         -  LPSTR lpstrFileTitle;
   145         -  DWORD nMaxFileTitle;
   146         -  LPCSTR lpstrInitialDir;
   147         -  LPCSTR lpstrTitle;
   148         -  DWORD Flags;
   149         -  WORD nFileOffset;
   150         -  WORD nFileExtension;
   151         -  LPCSTR lpstrDefExt;
   152         -  LPARAM lCustData;
   153         -  LPOFNHOOKPROC lpfnHook;
   154         -  LPCSTR lpTemplateName;
           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  +    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) {
          426  +        void          *pvReserved;
          427  +        DWORD         dwReserved;
          428  +        DWORD         FlagsEx;
          429  +    }
          430  +}
          431  +alias OPENFILENAMEA* LPOPENFILENAMEA;
          432  +
          433  +struct OPENFILENAMEW {
          434  + DWORD         lStructSize = OPENFILENAMEW.sizeof;
          435  + HWND          hwndOwner;
          436  + HINSTANCE     hInstance;
          437  + LPCWSTR       lpstrFilter;
          438  + LPWSTR        lpstrCustomFilter;
          439  + DWORD         nMaxCustFilter;
          440  + DWORD         nFilterIndex;
          441  + LPWSTR        lpstrFile;
          442  + DWORD         nMaxFile;
          443  + LPWSTR        lpstrFileTitle;
          444  + DWORD         nMaxFileTitle;
          445  + LPCWSTR       lpstrInitialDir;
          446  + LPCWSTR       lpstrTitle;
          447  + DWORD         Flags;
          448  + WORD          nFileOffset;
          449  + WORD          nFileExtension;
          450  + LPCWSTR       lpstrDefExt;
          451  + DWORD         lCustData;
          452  + LPOFNHOOKPROC lpfnHook;
          453  + LPCWSTR       lpTemplateName;
          454  +
          455  +    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) {
          456  +        void          *pvReserved;
          457  +        DWORD         dwReserved;
          458  +        DWORD         FlagsEx;
          459  +    }
          460  +}
          461  +alias OPENFILENAMEW* LPOPENFILENAMEW;
          462  +
          463  +const size_t OPENFILENAME_SIZE_VERSION_400 = 76;
          464  +
          465  +struct OFNOTIFYA {
          466  + NMHDR           hdr;
          467  + LPOPENFILENAMEA lpOFN;
          468  + LPSTR           pszFile;
          469  +}
          470  +alias OFNOTIFYA* LPOFNOTIFYA;
          471  +
          472  +struct OFNOTIFYW {
          473  + NMHDR           hdr;
          474  + LPOPENFILENAMEW lpOFN;
          475  + LPWSTR          pszFile;
          476  +}
          477  +alias OFNOTIFYW* LPOFNOTIFYW;
          478  +
          479  +struct PAGESETUPDLGA {
          480  + DWORD           lStructSize = PAGESETUPDLGA.sizeof;
          481  + HWND            hwndOwner;
          482  + HGLOBAL         hDevMode;
          483  + HGLOBAL         hDevNames;
          484  + DWORD           Flags;
          485  + POINT           ptPaperSize;
          486  + RECT            rtMinMargin;
          487  + RECT            rtMargin;
          488  + HINSTANCE       hInstance;
          489  + LPARAM          lCustData;
          490  + LPPAGESETUPHOOK lpfnPageSetupHook;
          491  + LPPAGEPAINTHOOK lpfnPagePaintHook;
          492  + LPCSTR          lpPageSetupTemplateName;
          493  + HGLOBAL         hPageSetupTemplate;
          494  +}
          495  +alias PAGESETUPDLGA* LPPAGESETUPDLGA;
          496  +
          497  +struct PAGESETUPDLGW {
          498  + DWORD           lStructSize = PAGESETUPDLGW.sizeof;
          499  + HWND            hwndOwner;
          500  + HGLOBAL         hDevMode;
          501  + HGLOBAL         hDevNames;
          502  + DWORD           Flags;
          503  + POINT           ptPaperSize;
          504  + RECT            rtMinMargin;
          505  + RECT            rtMargin;
          506  + HINSTANCE       hInstance;
          507  + LPARAM          lCustData;
          508  + LPPAGESETUPHOOK lpfnPageSetupHook;
          509  + LPPAGEPAINTHOOK lpfnPagePaintHook;
          510  + LPCWSTR         lpPageSetupTemplateName;
          511  + HGLOBAL         hPageSetupTemplate;
   155    512   }
   156         -alias tagOFN_NT4A OPENFILENAME_NT4A;
   157         -alias tagOFN_NT4A* LPOPENFILENAME_NT4A;
   158         -
   159         -struct tagOFN_NT4W {
   160         -  DWORD lStructSize;
   161         -  HWND hwndOwner;
   162         -  HINSTANCE hInstance;
   163         -  LPCWSTR lpstrFilter;
   164         -  LPWSTR lpstrCustomFilter;
   165         -  DWORD nMaxCustFilter;
   166         -  DWORD nFilterIndex;
   167         -  LPWSTR lpstrFile;
   168         -  DWORD nMaxFile;
   169         -  LPWSTR lpstrFileTitle;
   170         -  DWORD nMaxFileTitle;
   171         -  LPCWSTR lpstrInitialDir;
   172         -  LPCWSTR lpstrTitle;
   173         -  DWORD Flags;
   174         -  WORD nFileOffset;
   175         -  WORD nFileExtension;
   176         -  LPCWSTR lpstrDefExt;
   177         -  LPARAM lCustData;
   178         -  LPOFNHOOKPROC lpfnHook;
   179         -  LPCWSTR lpTemplateName;
   180         -}
   181         -alias tagOFN_NT4W OPENFILENAME_NT4W;
   182         -alias tagOFN_NT4W* LPOPENFILENAME_NT4W;
   183         -
   184         -// #ifdef UNICODE
   185         -alias OPENFILENAME_NT4W OPENFILENAME_NT4;
   186         -alias LPOPENFILENAME_NT4W LPOPENFILENAME_NT4;
   187         -// #else
   188         -// ...
   189         -// #endif // UNICODE
   190         -
   191         -struct tagOFNA {
   192         -  DWORD lStructSize;
   193         -  HWND hwndOwner;
   194         -  HINSTANCE hInstance;
   195         -  LPCSTR lpstrFilter;
   196         -  LPSTR lpstrCustomFilter;
   197         -  DWORD nMaxCustFilter;
   198         -  DWORD nFilterIndex;
   199         -  LPSTR lpstrFile;
   200         -  DWORD nMaxFile;
   201         -  LPSTR lpstrFileTitle;
   202         -  DWORD nMaxFileTitle;
   203         -  LPCSTR lpstrInitialDir;
   204         -  LPCSTR lpstrTitle;
   205         -  DWORD Flags;
   206         -  WORD nFileOffset;
   207         -  WORD nFileExtension;
   208         -  LPCSTR lpstrDefExt;
   209         -  LPARAM lCustData;
   210         -  LPOFNHOOKPROC lpfnHook;
   211         -  LPCSTR lpTemplateName;
   212         -// #ifdef _MAC
   213         -// ...
   214         -// #endif
   215         -// #if (_WIN32_WINNT >= 0x0500)
   216         -  void *  pvReserved;
   217         -  DWORD dwReserved;
   218         -  DWORD FlagsEx;
   219         -// #endif // (_WIN32_WINNT >= 0x0500)
   220         -}
   221         -alias tagOFNA OPENFILENAMEA;
   222         -alias tagOFNA* LPOPENFILENAMEA;
   223         -
   224         -struct tagOFNW {
   225         -  DWORD lStructSize;
   226         -  HWND hwndOwner;
   227         -  HINSTANCE hInstance;
   228         -  LPCWSTR lpstrFilter;
   229         -  LPWSTR lpstrCustomFilter;
   230         -  DWORD nMaxCustFilter;
   231         -  DWORD nFilterIndex;
   232         -  LPWSTR lpstrFile;
   233         -  DWORD nMaxFile;
   234         -  LPWSTR lpstrFileTitle;
   235         -  DWORD nMaxFileTitle;
   236         -  LPCWSTR lpstrInitialDir;
   237         -  LPCWSTR lpstrTitle;
   238         -  DWORD Flags;
   239         -  WORD nFileOffset;
   240         -  WORD nFileExtension;
   241         -  LPCWSTR lpstrDefExt;
   242         -  LPARAM lCustData;
   243         -  LPOFNHOOKPROC lpfnHook;
   244         -  LPCWSTR lpTemplateName;
   245         -// #ifdef _MAC
   246         -// ...
   247         -// #endif
   248         -// #if (_WIN32_WINNT >= 0x0500)
   249         -  void *  pvReserved;
   250         -  DWORD dwReserved;
   251         -  DWORD FlagsEx;
   252         -// #endif // (_WIN32_WINNT >= 0x0500)
          513  +alias PAGESETUPDLGW* LPPAGESETUPDLGW;
          514  +
          515  +struct PRINTDLGA {
          516  + DWORD           lStructSize = PRINTDLGA.sizeof;
          517  + HWND            hwndOwner;
          518  + HANDLE          hDevMode;
          519  + HANDLE          hDevNames;
          520  + HDC             hDC;
          521  + DWORD           Flags;
          522  + WORD            nFromPage;
          523  + WORD            nToPage;
          524  + WORD            nMinPage;
          525  + WORD            nMaxPage;
          526  + WORD            nCopies;
          527  + HINSTANCE       hInstance;
          528  + DWORD           lCustData;
          529  + LPPRINTHOOKPROC lpfnPrintHook;
          530  + LPSETUPHOOKPROC lpfnSetupHook;
          531  + LPCSTR          lpPrintTemplateName;
          532  + LPCSTR          lpSetupTemplateName;
          533  + HANDLE          hPrintTemplate;
          534  + HANDLE          hSetupTemplate;
   253    535   }
   254         -alias tagOFNW OPENFILENAMEW;
   255         -alias tagOFNW* LPOPENFILENAMEW;
   256         -
   257         -// #ifdef UNICODE
   258         -alias OPENFILENAMEW OPENFILENAME;
   259         -alias LPOPENFILENAMEW LPOPENFILENAME;
   260         -// #else
   261         -// ...
   262         -// #endif // UNICODE
   263         -
   264         -// #if (_WIN32_WINNT >= 0x0500)
   265         -// #define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName)
   266         -// #define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName)
   267         -// #ifdef UNICODE
   268         -// #define OPENFILENAME_SIZE_VERSION_400 OPENFILENAME_SIZE_VERSION_400W
   269         -// #else
   270         -// #...
   271         -// #endif // !UNICODE
   272         -// #endif // (_WIN32_WINNT >= 0x0500)
   273         -
   274         -extern(Windows) export BOOL GetOpenFileNameA(LPOPENFILENAMEA);
   275         -extern(Windows) export BOOL GetOpenFileNameW(LPOPENFILENAMEW);
   276         -// #ifdef UNICODE
   277         -alias GetOpenFileNameW GetOpenFileName;
   278         -// #else
   279         -// #...
   280         -// #endif // !UNICODE
   281         -extern(Windows) export BOOL GetSaveFileNameA(LPOPENFILENAMEA);
   282         -extern(Windows) export BOOL GetSaveFileNameW(LPOPENFILENAMEW);
   283         -// #ifdef UNICODE
   284         -alias GetSaveFileNameW GetSaveFileName;
   285         -// #else
   286         -// #...
   287         -// #endif // !UNICODE
   288         -
   289         -extern(Windows) export short GetFileTitleA(LPCSTR, LPSTR, WORD);
   290         -extern(Windows) export short GetFileTitleW(LPCWSTR, LPWSTR, WORD);
   291         -// #ifdef UNICODE
   292         -alias GetFileTitleW GetFileTitle;
   293         -// #else
   294         -// #...
   295         -// #endif // !UNICODE
   296         -
   297         -enum : uint { OFN_READONLY = 0x00000001 }
   298         -enum : uint { OFN_OVERWRITEPROMPT = 0x00000002 }
   299         -enum : uint { OFN_HIDEREADONLY = 0x00000004 }
   300         -enum : uint { OFN_NOCHANGEDIR = 0x00000008 }
   301         -enum : uint { OFN_SHOWHELP = 0x00000010 }
   302         -enum : uint { OFN_ENABLEHOOK = 0x00000020 }
   303         -enum : uint { OFN_ENABLETEMPLATE = 0x00000040 }
   304         -enum : uint { OFN_ENABLETEMPLATEHANDLE = 0x00000080 }
   305         -enum : uint { OFN_NOVALIDATE = 0x00000100 }
   306         -enum : uint { OFN_ALLOWMULTISELECT = 0x00000200 }
   307         -enum : uint { OFN_EXTENSIONDIFFERENT = 0x00000400 }
   308         -enum : uint { OFN_PATHMUSTEXIST = 0x00000800 }
   309         -enum : uint { OFN_FILEMUSTEXIST = 0x00001000 }
   310         -enum : uint { OFN_CREATEPROMPT = 0x00002000 }
   311         -enum : uint { OFN_SHAREAWARE = 0x00004000 }
   312         -enum : uint { OFN_NOREADONLYRETURN = 0x00008000 }
   313         -enum : uint { OFN_NOTESTFILECREATE = 0x00010000 }
   314         -enum : uint { OFN_NONETWORKBUTTON = 0x00020000 }
   315         -enum : uint { OFN_NOLONGNAMES = 0x00040000 }
   316         -// #if(WINVER >= 0x0400)
   317         -enum : uint { OFN_EXPLORER = 0x00080000 }
   318         -enum : uint { OFN_NODEREFERENCELINKS = 0x00100000 }
   319         -enum : uint { OFN_LONGNAMES = 0x00200000 }
   320         -enum : uint { OFN_ENABLEINCLUDENOTIFY = 0x00400000 }
   321         -enum : uint { OFN_ENABLESIZING = 0x00800000 }
   322         -// #endif /* WINVER >= 0x0400 */
   323         -// #if (_WIN32_WINNT >= 0x0500)
   324         -enum : uint { OFN_DONTADDTORECENT = 0x02000000 }
   325         -enum : uint { OFN_FORCESHOWHIDDEN = 0x10000000 }
   326         -// #endif // (_WIN32_WINNT >= 0x0500)
   327         -
   328         -// #if (_WIN32_WINNT >= 0x0500)
   329         -enum : uint { OFN_EX_NOPLACESBAR = 0x00000001 }
   330         -// #endif // (_WIN32_WINNT >= 0x0500)
   331         -
   332         -enum : uint { OFN_SHAREFALLTHROUGH = 2 }
   333         -enum : uint { OFN_SHARENOWARN = 1 }
   334         -enum : uint { OFN_SHAREWARN = 0 }
   335         -
   336         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCCHOOKPROC;
   337         -
   338         -// #if(WINVER >= 0x0400)
   339         -
   340         -struct _OFNOTIFYA {
   341         -  NMHDR hdr;
   342         -  LPOPENFILENAMEA lpOFN;
   343         -  LPSTR pszFile;
          536  +alias PRINTDLGA* LPPRINTDLGA;
          537  +
          538  +struct PRINTDLGW {
          539  + DWORD           lStructSize = PRINTDLGW.sizeof;
          540  + HWND            hwndOwner;
          541  + HANDLE          hDevMode;
          542  + HANDLE          hDevNames;
          543  + HDC             hDC;
          544  + DWORD           Flags;
          545  + WORD            nFromPage;
          546  + WORD            nToPage;
          547  + WORD            nMinPage;
          548  + WORD            nMaxPage;
          549  + WORD            nCopies;
          550  + HINSTANCE       hInstance;
          551  + DWORD           lCustData;
          552  + LPPRINTHOOKPROC lpfnPrintHook;
          553  + LPSETUPHOOKPROC lpfnSetupHook;
          554  + LPCWSTR         lpPrintTemplateName;
          555  + LPCWSTR         lpSetupTemplateName;
          556  + HANDLE          hPrintTemplate;
          557  + HANDLE          hSetupTemplate;
   344    558   }
   345         -alias _OFNOTIFYA OFNOTIFYA;
   346         -alias _OFNOTIFYA* LPOFNOTIFYA;
   347         -
   348         -struct _OFNOTIFYW {
   349         -  NMHDR hdr;
   350         -  LPOPENFILENAMEW lpOFN;
   351         -  LPWSTR pszFile;
   352         -}
   353         -alias _OFNOTIFYW OFNOTIFYW;
   354         -alias _OFNOTIFYW* LPOFNOTIFYW;
   355         -
   356         -// #ifdef UNICODE
   357         -alias OFNOTIFYW OFNOTIFY;
   358         -alias LPOFNOTIFYW LPOFNOTIFY;
   359         -// #else
   360         -// ...
   361         -// #endif // UNICODE
   362         -
   363         -struct _OFNOTIFYEXA {
   364         -  NMHDR hdr;
   365         -  LPOPENFILENAMEA lpOFN;
   366         -  LPVOID psf;
   367         -  LPVOID pidl;
   368         -}
   369         -alias _OFNOTIFYEXA OFNOTIFYEXA;
   370         -alias _OFNOTIFYEXA* LPOFNOTIFYEXA;
          559  +alias PRINTDLGW* LPPRINTDLGW;
          560  +
          561  +static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
          562  + import win32.unknwn; // for LPUNKNOWN
          563  + import win32.prsht;  // for HPROPSHEETPAGE
          564  +
          565  + struct PRINTPAGERANGE {
          566  +  DWORD  nFromPage;
          567  +  DWORD  nToPage;
          568  + }
          569  + alias PRINTPAGERANGE* LPPRINTPAGERANGE;
          570  +
          571  + struct PRINTDLGEXA {
          572  +  DWORD            lStructSize = PRINTDLGEXA.sizeof;
          573  +  HWND             hwndOwner;
          574  +  HGLOBAL          hDevMode;
          575  +  HGLOBAL          hDevNames;
          576  +  HDC              hDC;
          577  +  DWORD            Flags;
          578  +  DWORD            Flags2;
          579  +  DWORD            ExclusionFlags;
          580  +  DWORD            nPageRanges;
          581  +  DWORD            nMaxPageRanges;
          582  +  LPPRINTPAGERANGE lpPageRanges;
          583  +  DWORD            nMinPage;
          584  +  DWORD            nMaxPage;
          585  +  DWORD            nCopies;
          586  +  HINSTANCE        hInstance;
          587  +  LPCSTR           lpPrintTemplateName;
          588  +  LPUNKNOWN        lpCallback;
          589  +  DWORD            nPropertyPages;
          590  +  HPROPSHEETPAGE*  lphPropertyPages;
          591  +  DWORD            nStartPage;
          592  +  DWORD            dwResultAction;
          593  + }
          594  + alias PRINTDLGEXA* LPPRINTDLGEXA;
          595  +
          596  + struct PRINTDLGEXW {
          597  +  DWORD            lStructSize = PRINTDLGEXW.sizeof;
          598  +  HWND             hwndOwner;
          599  +  HGLOBAL          hDevMode;
          600  +  HGLOBAL          hDevNames;
          601  +  HDC              hDC;
          602  +  DWORD            Flags;
          603  +  DWORD            Flags2;
          604  +  DWORD            ExclusionFlags;
          605  +  DWORD            nPageRanges;
          606  +  DWORD            nMaxPageRanges;
          607  +  LPPRINTPAGERANGE lpPageRanges;
          608  +  DWORD            nMinPage;
          609  +  DWORD            nMaxPage;
          610  +  DWORD            nCopies;
          611  +  HINSTANCE        hInstance;
          612  +  LPCWSTR          lpPrintTemplateName;
          613  +  LPUNKNOWN        lpCallback;
          614  +  DWORD            nPropertyPages;
          615  +  HPROPSHEETPAGE*  lphPropertyPages;
          616  +  DWORD            nStartPage;
          617  +  DWORD            dwResultAction;
          618  + }
          619  + alias PRINTDLGEXW* LPPRINTDLGEXW;
   371    620   
   372         -struct _OFNOTIFYEXW {
   373         -  NMHDR hdr;
   374         -  LPOPENFILENAMEW lpOFN;
   375         -  LPVOID psf;
   376         -  LPVOID pidl;
   377         -}
   378         -alias _OFNOTIFYEXW OFNOTIFYEXW;
   379         -alias _OFNOTIFYEXW* LPOFNOTIFYEXW;
   380         -
   381         -// #ifdef UNICODE
   382         -alias OFNOTIFYEXW OFNOTIFYEX;
   383         -alias LPOFNOTIFYEXW LPOFNOTIFYEX;
   384         -// #else
   385         -// ...
   386         -// #endif // UNICODE
          621  +} // _WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500
   387    622   
   388         -const uint CDN_FIRST = 0U-601U;
   389         -const uint CDN_LAST = 0U-699U;
   390         -
   391         -const uint CDN_INITDONE = CDN_FIRST - 0x0000;
   392         -const uint CDN_SELCHANGE = CDN_FIRST - 0x0001;
   393         -const uint CDN_FOLDERCHANGE = CDN_FIRST - 0x0002;
   394         -const uint CDN_SHAREVIOLATION = CDN_FIRST - 0x0003;
   395         -const uint CDN_HELP = CDN_FIRST - 0x0004;
   396         -const uint CDN_FILEOK = CDN_FIRST - 0x0005;
   397         -const uint CDN_TYPECHANGE = CDN_FIRST - 0x0006;
   398         -const uint CDN_INCLUDEITEM = CDN_FIRST - 0x0007;
   399         -
   400         -const uint CDM_FIRST = WM_USER + 100;
   401         -const uint CDM_LAST = WM_USER + 200;
   402         -
   403         -const uint CDM_GETSPEC = CDM_FIRST + 0x0000;
   404         -// #define CommDlg_OpenSave_GetSpecA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
   405         -// #define CommDlg_OpenSave_GetSpecW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETSPEC, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
   406         -// #ifdef UNICODE
   407         -// #define CommDlg_OpenSave_GetSpec CommDlg_OpenSave_GetSpecW
   408         -// #else
   409         -// #...
   410         -// #endif // !UNICODE
   411         -
   412         -const uint CDM_GETFILEPATH = CDM_FIRST + 0x0001;
   413         -// #define CommDlg_OpenSave_GetFilePathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
   414         -// #define CommDlg_OpenSave_GetFilePathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFILEPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
   415         -// #ifdef UNICODE
   416         -// #define CommDlg_OpenSave_GetFilePath CommDlg_OpenSave_GetFilePathW
   417         -// #else
   418         -// #...
   419         -// #endif // !UNICODE
   420         -
   421         -const uint CDM_GETFOLDERPATH = CDM_FIRST + 0x0002;
   422         -// #define CommDlg_OpenSave_GetFolderPathA(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPSTR)_psz)
   423         -// #define CommDlg_OpenSave_GetFolderPathW(_hdlg, _psz, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERPATH, (WPARAM)_cbmax, (LPARAM)(LPWSTR)_psz)
   424         -// #ifdef UNICODE
   425         -// #define CommDlg_OpenSave_GetFolderPath CommDlg_OpenSave_GetFolderPathW
   426         -// #else
   427         -// #...
   428         -// #endif // !UNICODE
          623  +extern (Windows) {
          624  + BOOL ChooseColorA(LPCHOOSECOLORA);
          625  + BOOL ChooseColorW(LPCHOOSECOLORW);
          626  + BOOL ChooseFontA(LPCHOOSEFONTA);
          627  + BOOL ChooseFontW(LPCHOOSEFONTW);
          628  + DWORD CommDlgExtendedError();
          629  + HWND FindTextA(LPFINDREPLACEA);
          630  + HWND FindTextW(LPFINDREPLACEW);
          631  + short GetFileTitleA(LPCSTR, LPSTR, WORD);
          632  + short GetFileTitleW(LPCWSTR, LPWSTR, WORD);
          633  + BOOL GetOpenFileNameA(LPOPENFILENAMEA);
          634  + BOOL GetOpenFileNameW(LPOPENFILENAMEW);
          635  + BOOL GetSaveFileNameA(LPOPENFILENAMEA);
          636  + BOOL GetSaveFileNameW(LPOPENFILENAMEW);
          637  + BOOL PageSetupDlgA(LPPAGESETUPDLGA);
          638  + BOOL PageSetupDlgW(LPPAGESETUPDLGW);
          639  + BOOL PrintDlgA(LPPRINTDLGA);
          640  + BOOL PrintDlgW(LPPRINTDLGW);
          641  + HWND ReplaceTextA(LPFINDREPLACEA);
          642  + HWND ReplaceTextW(LPFINDREPLACEW);
   429    643   
   430         -const uint CDM_GETFOLDERIDLIST = CDM_FIRST + 0x0003;
   431         -// #define CommDlg_OpenSave_GetFolderIDList(_hdlg, _pidl, _cbmax) (int)SNDMSG(_hdlg, CDM_GETFOLDERIDLIST, (WPARAM)_cbmax, (LPARAM)(LPVOID)_pidl)
   432         -
   433         -const uint CDM_SETCONTROLTEXT = CDM_FIRST + 0x0004;
   434         -// #define CommDlg_OpenSave_SetControlText(_hdlg, _id, _text) (void)SNDMSG(_hdlg, CDM_SETCONTROLTEXT, (WPARAM)_id, (LPARAM)(LPSTR)_text)
   435         -
   436         -const uint CDM_HIDECONTROL = CDM_FIRST + 0x0005;
   437         -// #define CommDlg_OpenSave_HideControl(_hdlg, _id) (void)SNDMSG(_hdlg, CDM_HIDECONTROL, (WPARAM)_id, 0)
   438         -
   439         -const uint CDM_SETDEFEXT = CDM_FIRST + 0x0006;
   440         -// #define CommDlg_OpenSave_SetDefExt(_hdlg, _pszext) (void)SNDMSG(_hdlg, CDM_SETDEFEXT, 0, (LPARAM)(LPSTR)_pszext)
   441         -// #endif /* WINVER >= 0x0400 */
   442         -
   443         -// #ifndef _MAC
   444         -struct tagCHOOSECOLORA {
   445         -  DWORD lStructSize;
   446         -  HWND hwndOwner;
   447         -  HWND hInstance;
   448         -  COLORREF rgbResult;
   449         -  COLORREF *    lpCustColors;
   450         -  DWORD Flags;
   451         -  LPARAM lCustData;
   452         -  LPCCHOOKPROC lpfnHook;
   453         -  LPCSTR lpTemplateName;
   454         -}
   455         -alias tagCHOOSECOLORA CHOOSECOLORA;
   456         -alias tagCHOOSECOLORA* LPCHOOSECOLORA;
   457         -
   458         -struct tagCHOOSECOLORW {
   459         -  DWORD lStructSize;
   460         -  HWND hwndOwner;
   461         -  HWND hInstance;
   462         -  COLORREF rgbResult;
   463         -  COLORREF *    lpCustColors;
   464         -  DWORD Flags;
   465         -  LPARAM lCustData;
   466         -  LPCCHOOKPROC lpfnHook;
   467         -  LPCWSTR lpTemplateName;
   468         -}
   469         -alias tagCHOOSECOLORW CHOOSECOLORW;
   470         -alias tagCHOOSECOLORW* LPCHOOSECOLORW;
   471         -
   472         -// #ifdef UNICODE
   473         -alias CHOOSECOLORW CHOOSECOLOR;
   474         -alias LPCHOOSECOLORW LPCHOOSECOLOR;
   475         -// #else
   476         -// ...
   477         -// #endif // UNICODE
   478         -// #else
   479         -// ...
   480         -// #ifdef UNICODE
   481         -// ...
   482         -// #else
   483         -// ...
   484         -// #endif // UNICODE
   485         -// #endif //_MAC
   486         -
   487         -extern(Windows) export BOOL ChooseColorA(LPCHOOSECOLORA);
   488         -extern(Windows) export BOOL ChooseColorW(LPCHOOSECOLORW);
   489         -// #ifdef UNICODE
   490         -alias ChooseColorW ChooseColor;
   491         -// #else
   492         -// #...
   493         -// #endif // !UNICODE
   494         -
   495         -enum : uint { CC_RGBINIT = 0x00000001 }
   496         -enum : uint { CC_FULLOPEN = 0x00000002 }
   497         -enum : uint { CC_PREVENTFULLOPEN = 0x00000004 }
   498         -enum : uint { CC_SHOWHELP = 0x00000008 }
   499         -enum : uint { CC_ENABLEHOOK = 0x00000010 }
   500         -enum : uint { CC_ENABLETEMPLATE = 0x00000020 }
   501         -enum : uint { CC_ENABLETEMPLATEHANDLE = 0x00000040 }
   502         -// #if(WINVER >= 0x0400)
   503         -enum : uint { CC_SOLIDCOLOR = 0x00000080 }
   504         -enum : uint { CC_ANYCOLOR = 0x00000100 }
   505         -// #endif /* WINVER >= 0x0400 */
   506         -
   507         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPFRHOOKPROC;
   508         -
   509         -struct tagFINDREPLACEA {
   510         -  DWORD lStructSize;
   511         -  HWND hwndOwner;
   512         -  HINSTANCE hInstance;
   513         -
   514         -  DWORD Flags;
   515         -  LPSTR lpstrFindWhat;
   516         -  LPSTR lpstrReplaceWith;
   517         -  WORD wFindWhatLen;
   518         -  WORD wReplaceWithLen;
   519         -  LPARAM lCustData;
   520         -  LPFRHOOKPROC lpfnHook;
   521         -  LPCSTR lpTemplateName;
   522         -}
   523         -alias tagFINDREPLACEA FINDREPLACEA;
   524         -alias tagFINDREPLACEA* LPFINDREPLACEA;
   525         -
   526         -struct tagFINDREPLACEW {
   527         -  DWORD lStructSize;
   528         -  HWND hwndOwner;
   529         -  HINSTANCE hInstance;
   530         -
   531         -  DWORD Flags;
   532         -  LPWSTR lpstrFindWhat;
   533         -  LPWSTR lpstrReplaceWith;
   534         -  WORD wFindWhatLen;
   535         -  WORD wReplaceWithLen;
   536         -  LPARAM lCustData;
   537         -  LPFRHOOKPROC lpfnHook;
   538         -  LPCWSTR lpTemplateName;
   539         -}
   540         -alias tagFINDREPLACEW FINDREPLACEW;
   541         -alias tagFINDREPLACEW* LPFINDREPLACEW;
   542         -
   543         -// #ifdef UNICODE
   544         -alias FINDREPLACEW FINDREPLACE;
   545         -alias LPFINDREPLACEW LPFINDREPLACE;
   546         -// #else
   547         -// ...
   548         -// #endif // UNICODE
   549         -
   550         -enum : uint { FR_DOWN = 0x00000001 }
   551         -enum : uint { FR_WHOLEWORD = 0x00000002 }
   552         -enum : uint { FR_MATCHCASE = 0x00000004 }
   553         -enum : uint { FR_FINDNEXT = 0x00000008 }
   554         -enum : uint { FR_REPLACE = 0x00000010 }
   555         -enum : uint { FR_REPLACEALL = 0x00000020 }
   556         -enum : uint { FR_DIALOGTERM = 0x00000040 }
   557         -enum : uint { FR_SHOWHELP = 0x00000080 }
   558         -enum : uint { FR_ENABLEHOOK = 0x00000100 }
   559         -enum : uint { FR_ENABLETEMPLATE = 0x00000200 }
   560         -enum : uint { FR_NOUPDOWN = 0x00000400 }
   561         -enum : uint { FR_NOMATCHCASE = 0x00000800 }
   562         -enum : uint { FR_NOWHOLEWORD = 0x00001000 }
   563         -enum : uint { FR_ENABLETEMPLATEHANDLE = 0x00002000 }
   564         -enum : uint { FR_HIDEUPDOWN = 0x00004000 }
   565         -enum : uint { FR_HIDEMATCHCASE = 0x00008000 }
   566         -enum : uint { FR_HIDEWHOLEWORD = 0x00010000 }
   567         -enum : uint { FR_RAW = 0x00020000 }
   568         -enum : uint { FR_MATCHDIAC = 0x20000000 }
   569         -enum : uint { FR_MATCHKASHIDA = 0x40000000 }
   570         -enum : uint { FR_MATCHALEFHAMZA = 0x80000000 }
   571         -
   572         -extern(Windows) export HWND FindTextA(LPFINDREPLACEA);
   573         -extern(Windows) export HWND FindTextW(LPFINDREPLACEW);
   574         -// #ifdef UNICODE
   575         -alias FindTextW FindText;
   576         -// #else
   577         -// #...
   578         -// #endif // !UNICODE
   579         -// #ifndef _MAC
   580         -extern(Windows) export HWND ReplaceTextA(LPFINDREPLACEA);
   581         -extern(Windows) export HWND ReplaceTextW(LPFINDREPLACEW);
   582         -// #ifdef UNICODE
   583         -alias ReplaceTextW ReplaceText;
   584         -// #else
   585         -// #...
   586         -// #endif // !UNICODE
   587         -// #else
   588         -// ...
   589         -// #ifdef UNICODE
   590         -// #...
   591         -// #else
   592         -// #...
   593         -// #endif // !UNICODE
   594         -// #endif
   595         -
   596         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPCFHOOKPROC;
   597         -
   598         -struct tagCHOOSEFONTA {
   599         -  DWORD lStructSize;
   600         -  HWND hwndOwner;
   601         -  HDC hDC;
   602         -  LPLOGFONTA lpLogFont;
   603         -  INT iPointSize;
   604         -  DWORD Flags;
   605         -  COLORREF rgbColors;
   606         -  LPARAM lCustData;
   607         -  LPCFHOOKPROC lpfnHook;
   608         -  LPCSTR lpTemplateName;
   609         -  HINSTANCE hInstance;
   610         -
   611         -  LPSTR lpszStyle;
   612         -
   613         -  WORD nFontType;
   614         -
   615         -  WORD ___MISSING_ALIGNMENT__;
   616         -  INT nSizeMin;
   617         -  INT nSizeMax;
   618         -
   619         -}
   620         -alias tagCHOOSEFONTA CHOOSEFONTA;
   621         -alias tagCHOOSEFONTA* LPCHOOSEFONTA;
   622         -
   623         -struct tagCHOOSEFONTW {
   624         -  DWORD lStructSize;
   625         -  HWND hwndOwner;
   626         -  HDC hDC;
   627         -  LPLOGFONTW lpLogFont;
   628         -  INT iPointSize;
   629         -  DWORD Flags;
   630         -  COLORREF rgbColors;
   631         -  LPARAM lCustData;
   632         -  LPCFHOOKPROC lpfnHook;
   633         -  LPCWSTR lpTemplateName;
   634         -  HINSTANCE hInstance;
   635         -
   636         -  LPWSTR lpszStyle;
   637         -
   638         -  WORD nFontType;
   639         -
   640         -  WORD ___MISSING_ALIGNMENT__;
   641         -  INT nSizeMin;
   642         -  INT nSizeMax;
   643         -
          644  + static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
          645  +  HRESULT PrintDlgExA(LPPRINTDLGEXA);
          646  +  HRESULT PrintDlgExW(LPPRINTDLGEXW);
          647  + }
   644    648   }
   645         -alias tagCHOOSEFONTW CHOOSEFONTW;
   646         -alias tagCHOOSEFONTW* LPCHOOSEFONTW;
          649  +
          650  +version (Unicode) {
          651  + alias CHOOSECOLORW CHOOSECOLOR;
          652  + alias CHOOSEFONTW CHOOSEFONT;
          653  + alias FINDREPLACEW FINDREPLACE;
          654  + alias OPENFILENAMEW OPENFILENAME;
          655  + alias OFNOTIFYW OFNOTIFY;
          656  + alias PAGESETUPDLGW PAGESETUPDLG;
          657  + alias PRINTDLGW PRINTDLG;
          658  +
          659  + alias ChooseColorW ChooseColor;
          660  + alias ChooseFontW ChooseFont;
          661  + alias FindTextW FindText;
          662  + alias GetFileTitleW GetFileTitle;
          663  + alias GetOpenFileNameW GetOpenFileName;
          664  + alias GetSaveFileNameW GetSaveFileName;
          665  + alias PageSetupDlgW PageSetupDlg;
          666  + alias PrintDlgW PrintDlg;
          667  + alias ReplaceTextW ReplaceText;
          668  +
          669  + static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
          670  +  alias PRINTDLGEXW PRINTDLGEX;
          671  +  alias PrintDlgExW PrintDlgEx;
          672  + }
          673  +
          674  +} else { // UNICODE
   647    675   
   648         -// #ifdef UNICODE
   649         -alias CHOOSEFONTW CHOOSEFONT;
   650         -alias LPCHOOSEFONTW LPCHOOSEFONT;
   651         -// #else
   652         -// ...
   653         -// #endif // UNICODE
          676  + alias CHOOSECOLORA CHOOSECOLOR;
          677  + alias CHOOSEFONTA CHOOSEFONT;
          678  + alias FINDREPLACEA FINDREPLACE;
          679  + alias OPENFILENAMEA OPENFILENAME;
          680  + alias OFNOTIFYA OFNOTIFY;
          681  + alias PAGESETUPDLGA PAGESETUPDLG;
          682  + alias PRINTDLGA PRINTDLG;
   654    683   
   655         -extern(Windows) export BOOL ChooseFontA(LPCHOOSEFONTA);
   656         -extern(Windows) export BOOL ChooseFontW(LPCHOOSEFONTW);
   657         -// #ifdef UNICODE
   658         -alias ChooseFontW ChooseFont;
   659         -// #else
   660         -// #...
   661         -// #endif // !UNICODE
          684  + alias ChooseColorA ChooseColor;
          685  + alias ChooseFontA ChooseFont;
          686  + alias FindTextA FindText;
          687  + alias GetFileTitleA GetFileTitle;
          688  + alias GetOpenFileNameA GetOpenFileName;
          689  + alias GetSaveFileNameA GetSaveFileName;
          690  + alias PageSetupDlgA PageSetupDlg;
          691  + alias PrintDlgA PrintDlg;
          692  + alias ReplaceTextA ReplaceText;
   662    693   
   663         -enum : uint { CF_SCREENFONTS = 0x00000001 }
   664         -enum : uint { CF_PRINTERFONTS = 0x00000002 }
   665         -const uint CF_BOTH = CF_SCREENFONTS | CF_PRINTERFONTS;
   666         -enum : uint { CF_SHOWHELP = 0x00000004 }
   667         -enum : uint { CF_ENABLEHOOK = 0x00000008 }
   668         -enum : uint { CF_ENABLETEMPLATE = 0x00000010 }
   669         -enum : uint { CF_ENABLETEMPLATEHANDLE = 0x00000020 }
   670         -enum : uint { CF_INITTOLOGFONTSTRUCT = 0x00000040 }
   671         -enum : uint { CF_USESTYLE = 0x00000080 }
   672         -enum : uint { CF_EFFECTS = 0x00000100 }
   673         -enum : uint { CF_APPLY = 0x00000200 }
   674         -enum : uint { CF_ANSIONLY = 0x00000400 }
   675         -// #if(WINVER >= 0x0400)
   676         -alias CF_ANSIONLY CF_SCRIPTSONLY;
   677         -// #endif /* WINVER >= 0x0400 */
   678         -enum : uint { CF_NOVECTORFONTS = 0x00000800 }
   679         -alias CF_NOVECTORFONTS CF_NOOEMFONTS;
   680         -enum : uint { CF_NOSIMULATIONS = 0x00001000 }
   681         -enum : uint { CF_LIMITSIZE = 0x00002000 }
   682         -enum : uint { CF_FIXEDPITCHONLY = 0x00004000 }
   683         -enum : uint { CF_WYSIWYG = 0x00008000 }
   684         -enum : uint { CF_FORCEFONTEXIST = 0x00010000 }
   685         -enum : uint { CF_SCALABLEONLY = 0x00020000 }
   686         -enum : uint { CF_TTONLY = 0x00040000 }
   687         -enum : uint { CF_NOFACESEL = 0x00080000 }
   688         -enum : uint { CF_NOSTYLESEL = 0x00100000 }
   689         -enum : uint { CF_NOSIZESEL = 0x00200000 }
   690         -// #if(WINVER >= 0x0400)
   691         -enum : uint { CF_SELECTSCRIPT = 0x00400000 }
   692         -enum : uint { CF_NOSCRIPTSEL = 0x00800000 }
   693         -enum : uint { CF_NOVERTFONTS = 0x01000000 }
   694         -// #endif /* WINVER >= 0x0400 */
          694  + static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
          695  +  alias PRINTDLGEXA PRINTDLGEX;
          696  +  alias PrintDlgExA PrintDlgEx;
          697  + }
   695    698   
   696         -enum : uint { SIMULATED_FONTTYPE = 0x8000 }
   697         -enum : uint { PRINTER_FONTTYPE = 0x4000 }
   698         -enum : uint { SCREEN_FONTTYPE = 0x2000 }
   699         -enum : uint { BOLD_FONTTYPE = 0x0100 }
   700         -enum : uint { ITALIC_FONTTYPE = 0x0200 }
   701         -enum : uint { REGULAR_FONTTYPE = 0x0400 }
          699  +} // UNICODE
   702    700   
   703         -// #ifdef WINNT
   704         -// #...
   705         -// #...
   706         -// #...
   707         -// #endif
   708         -
   709         -const uint WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1;
   710         -const uint WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101;
   711         -const uint WM_CHOOSEFONT_SETFLAGS = WM_USER + 102;
   712         -
   713         -const char[] LBSELCHSTRINGA = "commdlg_LBSelChangedNotify";
   714         -const char[] SHAREVISTRINGA = "commdlg_ShareViolation";
   715         -const char[] FILEOKSTRINGA = "commdlg_FileNameOK";
   716         -const char[] COLOROKSTRINGA = "commdlg_ColorOK";
   717         -const char[] SETRGBSTRINGA = "commdlg_SetRGBColor";
   718         -const char[] HELPMSGSTRINGA = "commdlg_help";
   719         -const char[] FINDMSGSTRINGA = "commdlg_FindReplace";
   720         -
   721         -const wchar[] LBSELCHSTRINGW = "commdlg_LBSelChangedNotify";
   722         -const wchar[] SHAREVISTRINGW = "commdlg_ShareViolation";
   723         -const wchar[] FILEOKSTRINGW = "commdlg_FileNameOK";
   724         -const wchar[] COLOROKSTRINGW = "commdlg_ColorOK";
   725         -const wchar[] SETRGBSTRINGW = "commdlg_SetRGBColor";
   726         -const wchar[] HELPMSGSTRINGW = "commdlg_help";
   727         -const wchar[] FINDMSGSTRINGW = "commdlg_FindReplace";
   728         -
   729         -// #ifdef UNICODE
   730         -alias LBSELCHSTRINGW LBSELCHSTRING;
   731         -alias SHAREVISTRINGW SHAREVISTRING;
   732         -alias FILEOKSTRINGW FILEOKSTRING;
   733         -alias COLOROKSTRINGW COLOROKSTRING;
   734         -alias SETRGBSTRINGW SETRGBSTRING;
   735         -alias HELPMSGSTRINGW HELPMSGSTRING;
   736         -alias FINDMSGSTRINGW FINDMSGSTRING;
   737         -// #else
   738         -// #...
   739         -// #...
   740         -// #...
   741         -// #...
   742         -// #...
   743         -// #...
   744         -// #...
   745         -// #endif
   746         -
   747         -enum { CD_LBSELNOITEMS = -1 }
   748         -enum : uint { CD_LBSELCHANGE = 0 }
   749         -enum : uint { CD_LBSELSUB = 1 }
   750         -enum : uint { CD_LBSELADD = 2 }
   751         -
   752         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPPRINTHOOKPROC;
   753         -extern(Windows) alias UINT_PTR function(HWND, UINT, WPARAM, LPARAM) LPSETUPHOOKPROC;
   754         -
   755         -struct tagPDA {
   756         -  DWORD lStructSize;
   757         -  HWND hwndOwner;
   758         -  HGLOBAL hDevMode;
   759         -  HGLOBAL hDevNames;
   760         -  HDC hDC;
   761         -  DWORD Flags;
   762         -  WORD nFromPage;
   763         -  WORD nToPage;
   764         -  WORD nMinPage;
   765         -  WORD nMaxPage;
   766         -  WORD nCopies;
   767         -  HINSTANCE hInstance;
   768         -  LPARAM lCustData;
   769         -  LPPRINTHOOKPROC lpfnPrintHook;
   770         -  LPSETUPHOOKPROC lpfnSetupHook;
   771         -  LPCSTR lpPrintTemplateName;
   772         -  LPCSTR lpSetupTemplateName;
   773         -  HGLOBAL hPrintTemplate;
   774         -  HGLOBAL hSetupTemplate;
   775         -}
   776         -alias tagPDA PRINTDLGA;
   777         -alias tagPDA* LPPRINTDLGA;
   778         -
   779         -struct tagPDW {
   780         -  DWORD lStructSize;
   781         -  HWND hwndOwner;
   782         -  HGLOBAL hDevMode;
   783         -  HGLOBAL hDevNames;
   784         -  HDC hDC;
   785         -  DWORD Flags;
   786         -  WORD nFromPage;
   787         -  WORD nToPage;
   788         -  WORD nMinPage;
   789         -  WORD nMaxPage;
   790         -  WORD nCopies;
   791         -  HINSTANCE hInstance;
   792         -  LPARAM lCustData;
   793         -  LPPRINTHOOKPROC lpfnPrintHook;
   794         -  LPSETUPHOOKPROC lpfnSetupHook;
   795         -  LPCWSTR lpPrintTemplateName;
   796         -  LPCWSTR lpSetupTemplateName;
   797         -  HGLOBAL hPrintTemplate;
   798         -  HGLOBAL hSetupTemplate;
   799         -}
   800         -alias tagPDW PRINTDLGW;
   801         -alias tagPDW* LPPRINTDLGW;
   802         -
   803         -// #ifdef UNICODE
   804         -alias PRINTDLGW PRINTDLG;
   805         -alias LPPRINTDLGW LPPRINTDLG;
   806         -// #else
   807         -// ...
   808         -// #endif // UNICODE
   809         -
   810         -extern(Windows) export BOOL PrintDlgA(LPPRINTDLGA);
   811         -extern(Windows) export BOOL PrintDlgW(LPPRINTDLGW);
   812         -// #ifdef UNICODE
   813         -alias PrintDlgW PrintDlg;
   814         -// #else
   815         -// #...
   816         -// #endif // !UNICODE
   817         -
   818         -// #if(WINVER >= 0x0500)
   819         -
   820         -// #ifdef STDMETHOD
   821         -
   822         -// #...
   823         -// #...
   824         -
   825         -// ...
   826         -
   827         -// ...
   828         -
   829         -// #...
   830         -// #...
   831         -
   832         -// ...
   833         -
   834         -// ...
   835         -
   836         -// ...
   837         -
   838         -// ...
   839         -// #ifdef UNICODE
   840         -// ...
   841         -// #else
   842         -// ...
   843         -// #endif // UNICODE
   844         -
   845         -// ...
   846         -// #ifdef UNICODE
   847         -// #...
   848         -// #else
   849         -// #...
   850         -// #endif // !UNICODE
   851         -
   852         -// #endif
   853         -
   854         -// #endif /* WINVER >= 0x0500 */
   855         -
   856         -enum : uint { PD_ALLPAGES = 0x00000000 }
   857         -enum : uint { PD_SELECTION = 0x00000001 }
   858         -enum : uint { PD_PAGENUMS = 0x00000002 }
   859         -enum : uint { PD_NOSELECTION = 0x00000004 }
   860         -enum : uint { PD_NOPAGENUMS = 0x00000008 }
   861         -enum : uint { PD_COLLATE = 0x00000010 }
   862         -enum : uint { PD_PRINTTOFILE = 0x00000020 }
   863         -enum : uint { PD_PRINTSETUP = 0x00000040 }
   864         -enum : uint { PD_NOWARNING = 0x00000080 }
   865         -enum : uint { PD_RETURNDC = 0x00000100 }
   866         -enum : uint { PD_RETURNIC = 0x00000200 }
   867         -enum : uint { PD_RETURNDEFAULT = 0x00000400 }
   868         -enum : uint { PD_SHOWHELP = 0x00000800 }
   869         -enum : uint { PD_ENABLEPRINTHOOK = 0x00001000 }
   870         -enum : uint { PD_ENABLESETUPHOOK = 0x00002000 }
   871         -enum : uint { PD_ENABLEPRINTTEMPLATE = 0x00004000 }
   872         -enum : uint { PD_ENABLESETUPTEMPLATE = 0x00008000 }
   873         -enum : uint { PD_ENABLEPRINTTEMPLATEHANDLE = 0x00010000 }
   874         -enum : uint { PD_ENABLESETUPTEMPLATEHANDLE = 0x00020000 }
   875         -enum : uint { PD_USEDEVMODECOPIES = 0x00040000 }
   876         -enum : uint { PD_USEDEVMODECOPIESANDCOLLATE = 0x00040000 }
   877         -enum : uint { PD_DISABLEPRINTTOFILE = 0x00080000 }
   878         -enum : uint { PD_HIDEPRINTTOFILE = 0x00100000 }
   879         -enum : uint { PD_NONETWORKBUTTON = 0x00200000 }
   880         -// #if(WINVER >= 0x0500)
   881         -enum : uint { PD_CURRENTPAGE = 0x00400000 }
   882         -enum : uint { PD_NOCURRENTPAGE = 0x00800000 }
   883         -enum : uint { PD_EXCLUSIONFLAGS = 0x01000000 }
   884         -enum : uint { PD_USELARGETEMPLATE = 0x10000000 }
   885         -// #endif /* WINVER >= 0x0500 */
   886         -
   887         -// #if(WINVER >= 0x0500)
   888         -
   889         -const uint PD_EXCL_COPIESANDCOLLATE = DM_COPIES | DM_COLLATE;
   890         -
   891         -enum : uint { START_PAGE_GENERAL = 0xffffffff }
   892         -
   893         -enum : uint { PD_RESULT_CANCEL = 0 }
   894         -enum : uint { PD_RESULT_PRINT = 1 }
   895         -enum : uint { PD_RESULT_APPLY = 2 }
   896         -
   897         -// #endif /* WINVER >= 0x0500 */
   898         -
   899         -struct tagDEVNAMES {
   900         -  WORD wDriverOffset;
   901         -  WORD wDeviceOffset;
   902         -  WORD wOutputOffset;
   903         -  WORD wDefault;
   904         -}
   905         -alias tagDEVNAMES DEVNAMES;
   906         -alias tagDEVNAMES* LPDEVNAMES;
   907         -
   908         -enum : uint { DN_DEFAULTPRN = 0x0001 }
   909         -
   910         -extern(Windows) export DWORD CommDlgExtendedError();
   911         -
   912         -// #if(WINVER >= 0x0400)
   913         -const uint WM_PSD_PAGESETUPDLG = WM_USER ;
   914         -const uint WM_PSD_FULLPAGERECT = WM_USER+1;
   915         -const uint WM_PSD_MINMARGINRECT = WM_USER+2;
   916         -const uint WM_PSD_MARGINRECT = WM_USER+3;
   917         -const uint WM_PSD_GREEKTEXTRECT = WM_USER+4;
   918         -const uint WM_PSD_ENVSTAMPRECT = WM_USER+5;
   919         -const uint WM_PSD_YAFULLPAGERECT = WM_USER+6;
   920         -
   921         -extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGEPAINTHOOK;
   922         -extern(Windows) alias UINT_PTR function( HWND, UINT, WPARAM, LPARAM ) LPPAGESETUPHOOK;
   923         -
   924         -struct tagPSDA {
   925         -  DWORD lStructSize;
   926         -  HWND hwndOwner;
   927         -  HGLOBAL hDevMode;
   928         -  HGLOBAL hDevNames;
   929         -  DWORD Flags;
   930         -  POINT ptPaperSize;
   931         -  RECT rtMinMargin;
   932         -  RECT rtMargin;
   933         -  HINSTANCE hInstance;
   934         -  LPARAM lCustData;
   935         -  LPPAGESETUPHOOK lpfnPageSetupHook;
   936         -  LPPAGEPAINTHOOK lpfnPagePaintHook;
   937         -  LPCSTR lpPageSetupTemplateName;
   938         -  HGLOBAL hPageSetupTemplate;
   939         -}
   940         -alias tagPSDA PAGESETUPDLGA;
   941         -alias tagPSDA* LPPAGESETUPDLGA;
   942         -
   943         -struct tagPSDW {
   944         -  DWORD lStructSize;
   945         -  HWND hwndOwner;
   946         -  HGLOBAL hDevMode;
   947         -  HGLOBAL hDevNames;
   948         -  DWORD Flags;
   949         -  POINT ptPaperSize;
   950         -  RECT rtMinMargin;
   951         -  RECT rtMargin;
   952         -  HINSTANCE hInstance;
   953         -  LPARAM lCustData;
   954         -  LPPAGESETUPHOOK lpfnPageSetupHook;
   955         -  LPPAGEPAINTHOOK lpfnPagePaintHook;
   956         -  LPCWSTR lpPageSetupTemplateName;
   957         -  HGLOBAL hPageSetupTemplate;
   958         -}
   959         -alias tagPSDW PAGESETUPDLGW;
   960         -alias tagPSDW* LPPAGESETUPDLGW;
   961         -
   962         -// #ifdef UNICODE
   963         -alias PAGESETUPDLGW PAGESETUPDLG;
   964         -alias LPPAGESETUPDLGW LPPAGESETUPDLG;
   965         -// #else
   966         -// ...
   967         -// #endif // UNICODE
   968         -
   969         -extern(Windows) export BOOL PageSetupDlgA( LPPAGESETUPDLGA );
   970         -extern(Windows) export BOOL PageSetupDlgW( LPPAGESETUPDLGW );
   971         -// #ifdef UNICODE
   972         -alias PageSetupDlgW PageSetupDlg;
   973         -// #else
   974         -// #...
   975         -// #endif // !UNICODE
   976         -
   977         -enum : uint { PSD_DEFAULTMINMARGINS = 0x00000000 }
   978         -enum : uint { PSD_INWININIINTLMEASURE = 0x00000000 }
   979         -
   980         -enum : uint { PSD_MINMARGINS = 0x00000001 }
   981         -enum : uint { PSD_MARGINS = 0x00000002 }
   982         -enum : uint { PSD_INTHOUSANDTHSOFINCHES = 0x00000004 }
   983         -enum : uint { PSD_INHUNDREDTHSOFMILLIMETERS = 0x00000008 }
   984         -enum : uint { PSD_DISABLEMARGINS = 0x00000010 }
   985         -enum : uint { PSD_DISABLEPRINTER = 0x00000020 }
   986         -enum : uint { PSD_NOWARNING = 0x00000080 }
   987         -enum : uint { PSD_DISABLEORIENTATION = 0x00000100 }
   988         -enum : uint { PSD_RETURNDEFAULT = 0x00000400 }
   989         -enum : uint { PSD_DISABLEPAPER = 0x00000200 }
   990         -enum : uint { PSD_SHOWHELP = 0x00000800 }
   991         -enum : uint { PSD_ENABLEPAGESETUPHOOK = 0x00002000 }
   992         -enum : uint { PSD_ENABLEPAGESETUPTEMPLATE = 0x00008000 }
   993         -enum : uint { PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 0x00020000 }
   994         -enum : uint { PSD_ENABLEPAGEPAINTHOOK = 0x00040000 }
   995         -enum : uint { PSD_DISABLEPAGEPAINTING = 0x00080000 }
   996         -enum : uint { PSD_NONETWORKBUTTON = 0x00200000 }
   997         -// #endif /* WINVER >= 0x0400 */
   998         -
   999         -// #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
  1000         -// #if ISOLATION_AWARE_ENABLED
  1001         -
  1002         -// #if !defined(ISOLATION_AWARE_INLINE)
  1003         -// #if defined(__cplusplus)
  1004         -// #...
  1005         -// #else
  1006         -// #...
  1007         -// #endif
  1008         -// #endif
  1009         -
  1010         -// ...
  1011         -
  1012         -// ...
  1013         -// #if defined(STDMETHOD) && (WINVER >= 0x0500)
  1014         -// ...
  1015         -// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */
  1016         -// ...
  1017         -
  1018         -// #if defined(UNICODE)
  1019         -
  1020         -// #...
  1021         -// #...
  1022         -// #...
  1023         -// #...
  1024         -// #...
  1025         -// #...
  1026         -// #...
  1027         -// #...
  1028         -// #...
  1029         -// #...
  1030         -
  1031         -// #else /* UNICODE */
  1032         -
  1033         -// #...
  1034         -// #...
  1035         -// #...
  1036         -// #...
  1037         -// #...
  1038         -// #...
  1039         -// #...
  1040         -// #...
  1041         -// #...
  1042         -// #...
  1043         -
  1044         -// #endif /* UNICODE */
  1045         -
  1046         -// ...
  1047         -
  1048         -// ...
  1049         -
  1050         -// ...
  1051         -
  1052         -// ...
  1053         -
  1054         -// ...
  1055         -
  1056         -// ...
  1057         -
  1058         -// ...
  1059         -
  1060         -// ...
  1061         -
  1062         -// ...
  1063         -
  1064         -// ...
  1065         -
  1066         -// ...
  1067         -
  1068         -// ...
  1069         -
  1070         -// ...
  1071         -
  1072         -// ...
  1073         -
  1074         -// ...
  1075         -
  1076         -// ...
  1077         -
  1078         -// #if defined(STDMETHOD) && (WINVER >= 0x0500)
  1079         -
  1080         -// ...
  1081         -
  1082         -// ...
  1083         -
  1084         -// ...
  1085         -
  1086         -// ...
  1087         -
  1088         -// #endif /* defined(STDMETHOD) && (WINVER >= 0x0500) */
  1089         -
  1090         -// ...
  1091         -
  1092         -// ...
  1093         -
  1094         -// ...
  1095         -
  1096         -// ...
  1097         -
  1098         -// #...
  1099         -// #...
  1100         -// #...
  1101         -// #...
  1102         -// #...
  1103         -// #...
  1104         -// #...
  1105         -// #...
  1106         -// #...
  1107         -// #...
  1108         -// #...
  1109         -// #...
  1110         -// #...
  1111         -// #...
  1112         -// #...
  1113         -// #...
  1114         -// #...
  1115         -// #...
  1116         -// #...
  1117         -// #...
  1118         -// #...
  1119         -
  1120         -// #endif /* ISOLATION_AWARE_ENABLED */
  1121         -// #endif /* RC */
  1122         -
  1123         -// #ifdef __cplusplus
  1124         -// }
  1125         -// #endif  /* __cplusplus */
  1126         -
  1127         -// #if !defined(_WIN64)
  1128         -align:
  1129         -// #endif
  1130         -// #endif  /* GUID_DEFS_ONLY */
  1131         -// #endif  /* !_INC_COMMDLG */
  1132         -
          701  +alias CHOOSECOLOR* LPCHOOSECOLOR;
          702  +alias CHOOSEFONT* LPCHOOSEFONT;
          703  +alias FINDREPLACE* LPFINDREPLACE;
          704  +alias OPENFILENAME* LPOPENFILENAME;
          705  +alias OFNOTIFY* LPOFNOTIFY;
          706  +alias PAGESETUPDLG* LPPAGESETUPDLG;
          707  +alias PRINTDLG* LPPRINTDLG;
          708  +static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
          709  + alias PRINTDLGEX* LPPRINTDLGEX;
          710  +}