Show
Ignore:
Timestamp:
11/06/08 13:12:13 (4 years ago)
Author:
smjg
Message:

Done consts in commctrl; updated and polished commdlg

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/win32/commdlg.d

    r155 r317  
    44*                       Windows API header module                       * 
    55*                                                                       * 
    6 *                 Translated from MinGW Windows headers                 * 
     6*             Translated from MinGW API for MS-Windows 3.12             * 
    77*                                                                       * 
    88*                       Placed into public domain                       * 
     
    1515import win32.wingdi; // for LPLOGFONTA 
    1616 
    17 const TCHAR [] 
     17const TCHAR[] 
    1818    LBSELCHSTRING = "commdlg_LBSelChangedNotify", 
    1919    SHAREVISTRING = "commdlg_ShareViolation", 
     
    2424    FINDMSGSTRING = "commdlg_FindReplace"; 
    2525 
    26 const UINT 
     26enum : UINT { 
    2727    CDN_FIRST          = -601, // also in commctrl.h 
    2828    CDN_LAST           = -699, 
    2929    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 const CDM_FIRST           = WM_USER+100; 
    38 const CDM_LAST            = WM_USER+200; 
    39 const CDM_GETSPEC         = CDM_FIRST; 
    40 const CDM_GETFILEPATH     = CDM_FIRST+1; 
    41 const CDM_GETFOLDERPATH   = CDM_FIRST+2; 
    42 const CDM_GETFOLDERIDLIST = CDM_FIRST+3; 
    43 const CDM_SETCONTROLTEXT  = CDM_FIRST+4; 
    44 const CDM_HIDECONTROL     = CDM_FIRST+5; 
    45 const CDM_SETDEFEXT       = CDM_FIRST+6; 
     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 
     38enum : 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
    4649 
    4750// flags for ChooseColor 
    4851enum : DWORD { 
    49     CC_RGBINIT              = 1, 
    50     CC_FULLOPEN             = 2, 
    51     CC_PREVENTFULLOPEN      = 4, 
    52     CC_SHOWHELP             = 8, 
    53     CC_ENABLEHOOK           = 16
    54     CC_ENABLETEMPLATE       = 32
    55     CC_ENABLETEMPLATEHANDLE = 64
    56     CC_SOLIDCOLOR           = 128
    57     CC_ANYCOLOR             = 256 
     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 
    5861} 
    5962 
    6063// flags for ChooseFont 
    6164enum : DWORD { 
    62     CF_SCREENFONTS          = 1, 
    63     CF_PRINTERFONTS         = 2, 
    64     CF_BOTH                 = 3, 
    65     CF_SHOWHELP             = 4, 
    66     CF_ENABLEHOOK           = 8, 
    67     CF_ENABLETEMPLATE       = 16
    68     CF_ENABLETEMPLATEHANDLE = 32
    69     CF_INITTOLOGFONTSTRUCT  = 64
    70     CF_USESTYLE             = 128
    71     CF_EFFECTS              = 256
    72     CF_APPLY                = 512
    73     CF_ANSIONLY             = 1024
     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
    7477    CF_SCRIPTSONLY          = CF_ANSIONLY, 
    75     CF_NOVECTORFONTS        = 2048
    76     CF_NOOEMFONTS           = 2048
    77     CF_NOSIMULATIONS        = 4096
    78     CF_LIMITSIZE            = 8192
    79     CF_FIXEDPITCHONLY       = 16384
    80     CF_WYSIWYG              = 32768
    81     CF_FORCEFONTEXIST       = 65536
    82     CF_SCALABLEONLY         = 131072
    83     CF_TTONLY               = 262144
    84     CF_NOFACESEL            = 524288
    85     CF_NOSTYLESEL           = 1048576
    86     CF_NOSIZESEL            = 2097152
    87     CF_SELECTSCRIPT         = 4194304
    88     CF_NOSCRIPTSEL          = 8388608
    89     CF_NOVERTFONTS          = 0x1000000 
     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 
    9093} 
    9194 
    9295// Font type for ChooseFont 
    9396enum : WORD { 
    94     BOLD_FONTTYPE      = 0x100, 
    95     ITALIC_FONTTYPE    = 0x200, 
    96     REGULAR_FONTTYPE   = 0x400, 
     97    BOLD_FONTTYPE      = 0x0100, 
     98    ITALIC_FONTTYPE    = 0x0200, 
     99    REGULAR_FONTTYPE   = 0x0400, 
    97100    SCREEN_FONTTYPE    = 0x2000, 
    98101    PRINTER_FONTTYPE   = 0x4000, 
     
    100103} 
    101104 
    102 const WM_CHOOSEFONT_GETLOGFONT = WM_USER + 1; 
    103 const WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101; 
    104 const WM_CHOOSEFONT_SETFLAGS   = WM_USER + 102; 
     105enum : UINT { 
     106    WM_CHOOSEFONT_GETLOGFONT = WM_USER +   1, 
     107    WM_CHOOSEFONT_SETLOGFONT = WM_USER + 101, 
     108    WM_CHOOSEFONT_SETFLAGS   = WM_USER + 102 
     109
    105110 
    106111// flags for OpenFileName 
    107112enum : DWORD { 
    108     OFN_ALLOWMULTISELECT = 512, 
    109     OFN_CREATEPROMPT = 0x2000, 
    110     OFN_ENABLEHOOK = 32, 
    111     OFN_ENABLESIZING = 0x800000, 
    112     OFN_ENABLETEMPLATE = 64, 
    113     OFN_ENABLETEMPLATEHANDLE = 128, 
    114     OFN_EXPLORER = 0x80000, 
    115     OFN_EXTENSIONDIFFERENT = 0x400, 
    116     OFN_FILEMUSTEXIST = 0x1000, 
    117     OFN_HIDEREADONLY = 4, 
    118     OFN_LONGNAMES = 0x200000, 
    119     OFN_NOCHANGEDIR = 8, 
    120     OFN_NODEREFERENCELINKS = 0x100000, 
    121     OFN_NOLONGNAMES = 0x40000, 
    122     OFN_NONETWORKBUTTON = 0x20000, 
    123     OFN_NOREADONLYRETURN = 0x8000, 
    124     OFN_NOTESTFILECREATE = 0x10000, 
    125     OFN_NOVALIDATE = 256, 
    126     OFN_OVERWRITEPROMPT = 2, 
    127     OFN_PATHMUSTEXIST = 0x800, 
    128     OFN_READONLY = 1, 
    129     OFN_SHAREAWARE = 0x4000, 
    130     OFN_SHOWHELP = 16, 
    131     OFN_SHAREFALLTHROUGH = 2, 
    132     OFN_SHARENOWARN = 1, 
    133     OFN_SHAREWARN = 0, 
    134 
    135  
    136 const FR_DIALOGTERM=64; 
    137 const FR_DOWN=1; 
    138 const FR_ENABLEHOOK=256; 
    139 const FR_ENABLETEMPLATE=512; 
    140 const FR_ENABLETEMPLATEHANDLE=0x2000; 
    141 const FR_FINDNEXT=8; 
    142 const FR_HIDEUPDOWN=0x4000; 
    143 const FR_HIDEMATCHCASE=0x8000; 
    144 const FR_HIDEWHOLEWORD=0x10000; 
    145 const FR_MATCHALEFHAMZA=0x80000000; 
    146 const FR_MATCHCASE=4; 
    147 const FR_MATCHDIAC=0x20000000; 
    148 const FR_MATCHKASHIDA=0x40000000; 
    149 const FR_NOMATCHCASE=0x800; 
    150 const FR_NOUPDOWN=0x400; 
    151 const FR_NOWHOLEWORD=4096; 
    152 const FR_REPLACE=16; 
    153 const FR_REPLACEALL=32; 
    154 const FR_SHOWHELP=128; 
    155 const FR_WHOLEWORD=2; 
    156  
    157 const PD_ALLPAGES=0; 
    158 const PD_SELECTION=1; 
    159 const PD_PAGENUMS=2; 
    160 const PD_NOSELECTION=4; 
    161 const PD_NOPAGENUMS=8; 
    162 const PD_COLLATE=16; 
    163 const PD_PRINTTOFILE=32; 
    164 const PD_PRINTSETUP=64; 
    165 const PD_NOWARNING=128; 
    166 const PD_RETURNDC=256; 
    167 const PD_RETURNIC=512; 
    168 const PD_RETURNDEFAULT=1024; 
    169 const PD_SHOWHELP=2048; 
    170 const PD_ENABLEPRINTHOOK=4096; 
    171 const PD_ENABLESETUPHOOK=8192; 
    172 const PD_ENABLEPRINTTEMPLATE=16384; 
    173 const PD_ENABLESETUPTEMPLATE=32768; 
    174 const PD_ENABLEPRINTTEMPLATEHANDLE=65536; 
    175 const PD_ENABLESETUPTEMPLATEHANDLE=0x20000; 
    176 const PD_USEDEVMODECOPIES=0x40000; 
    177 const PD_USEDEVMODECOPIESANDCOLLATE=0x40000; 
    178 const PD_DISABLEPRINTTOFILE=0x80000; 
    179 const PD_HIDEPRINTTOFILE=0x100000; 
    180 const PD_NONETWORKBUTTON=0x200000; 
    181  
    182 const PSD_DEFAULTMINMARGINS=0; 
    183 const PSD_INWININIINTLMEASURE=0; 
    184 const PSD_MINMARGINS=1; 
    185 const PSD_MARGINS=2; 
    186 const PSD_INTHOUSANDTHSOFINCHES=4; 
    187 const PSD_INHUNDREDTHSOFMILLIMETERS=8; 
    188 const PSD_DISABLEMARGINS=16; 
    189 const PSD_DISABLEPRINTER=32; 
    190 const PSD_NOWARNING=128; 
    191 const PSD_DISABLEORIENTATION=256; 
    192 const PSD_DISABLEPAPER=512; 
    193 const PSD_RETURNDEFAULT=1024; 
    194 const PSD_SHOWHELP=2048; 
    195 const PSD_ENABLEPAGESETUPHOOK=8192; 
    196 const PSD_ENABLEPAGESETUPTEMPLATE=0x8000; 
    197 const PSD_ENABLEPAGESETUPTEMPLATEHANDLE=0x20000; 
    198 const PSD_ENABLEPAGEPAINTHOOK=0x40000; 
    199 const PSD_DISABLEPAGEPAINTING=0x80000; 
    200  
    201 const WM_PSD_PAGESETUPDLG   = WM_USER; 
    202 const WM_PSD_FULLPAGERECT   = WM_USER+1; 
    203 const WM_PSD_MINMARGINRECT  = WM_USER+2; 
    204 const WM_PSD_MARGINRECT     = WM_USER+3; 
    205 const WM_PSD_GREEKTEXTRECT  = WM_USER+4; 
    206 const WM_PSD_ENVSTAMPRECT   = WM_USER+5; 
    207 const WM_PSD_YAFULLPAGERECT = WM_USER+6; 
    208  
    209 const CD_LBSELNOITEMS = -1; 
    210 const CD_LBSELCHANGE  = 0; 
    211 const CD_LBSELSUB     = 1; 
    212 const CD_LBSELADD     = 2; 
    213  
    214 const DN_DEFAULTPRN=1; 
     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 
     141enum : 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 
     164enum : 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 
     191static 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 
     208enum { 
     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 
     229enum : 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 
     239enum : int { 
     240    CD_LBSELNOITEMS = -1, 
     241    CD_LBSELCHANGE, 
     242    CD_LBSELSUB, 
     243    CD_LBSELADD 
     244
     245 
     246const WORD DN_DEFAULTPRN = 1; 
    215247 
    216248/+ 
     
    258290// Callbacks. 
    259291extern(Windows) { 
    260 alias UINT function (HWND,UINT,WPARAM,LPARAM) 
     292alias UINT function (HWND, UINT, WPARAM, LPARAM) 
    261293    LPCCHOOKPROC, LPCFHOOKPROC, LPFRHOOKPROC, LPOFNHOOKPROC, 
    262294    LPPAGEPAINTHOOK, LPPAGESETUPHOOK, LPSETUPHOOKPROC, LPPRINTHOOKPROC; 
     
    266298 
    267299struct CHOOSECOLORA { 
    268     DWORD        lStructSize
     300    DWORD        lStructSize = CHOOSECOLORA.sizeof
    269301    HWND         hwndOwner; 
    270302    HWND         hInstance; 
     
    279311 
    280312struct CHOOSECOLORW { 
    281     DWORD        lStructSize
     313    DWORD        lStructSize = CHOOSECOLORW.sizeof
    282314    HWND         hwndOwner; 
    283315    HWND         hInstance; 
     
    291323alias CHOOSECOLORW* LPCHOOSECOLORW; 
    292324 
    293 struct CHOOSEFONTA { 
    294     DWORD        lStructSize
     325align (4) struct CHOOSEFONTA { 
     326    DWORD        lStructSize = CHOOSEFONTA.sizeof
    295327    HWND         hwndOwner; 
    296328    HDC          hDC; 
     
    305337    LPSTR        lpszStyle; 
    306338    WORD         nFontType; 
    307     WORD         ___MISSING_ALIGNMENT__; 
     339    //WORD         ___MISSING_ALIGNMENT__; 
    308340    INT          nSizeMin; 
    309341    INT          nSizeMax; 
     
    311343alias CHOOSEFONTA* LPCHOOSEFONTA; 
    312344 
    313 struct CHOOSEFONTW { 
    314     DWORD        lStructSize
     345align (4) struct CHOOSEFONTW { 
     346    DWORD        lStructSize = CHOOSEFONTW.sizeof
    315347    HWND         hwndOwner; 
    316348    HDC          hDC; 
     
    325357    LPWSTR       lpszStyle; 
    326358    WORD         nFontType; 
    327     WORD         ___MISSING_ALIGNMENT__; 
     359    //WORD         ___MISSING_ALIGNMENT__; 
    328360    INT          nSizeMin; 
    329361    INT          nSizeMax; 
     
    340372 
    341373struct FINDREPLACEA { 
    342     DWORD lStructSize
    343     HWND hwndOwner; 
    344     HINSTANCE hInstance; 
    345     DWORD Flags; 
    346     LPSTR lpstrFindWhat; 
    347     LPSTR lpstrReplaceWith; 
    348     WORD wFindWhatLen; 
    349     WORD wReplaceWithLen; 
    350     LPARAM lCustData; 
     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; 
    351383    LPFRHOOKPROC lpfnHook; 
    352     LPCSTR lpTemplateName; 
     384    LPCSTR       lpTemplateName; 
    353385} 
    354386alias FINDREPLACEA* LPFINDREPLACEA; 
    355387 
    356388struct FINDREPLACEW { 
    357     DWORD lStructSize
    358     HWND hwndOwner; 
    359     HINSTANCE hInstance; 
    360     DWORD Flags; 
    361     LPWSTR lpstrFindWhat; 
    362     LPWSTR lpstrReplaceWith; 
    363     WORD wFindWhatLen; 
    364     WORD wReplaceWithLen; 
    365     LPARAM lCustData; 
     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; 
    366398    LPFRHOOKPROC lpfnHook; 
    367     LPCWSTR lpTemplateName; 
     399    LPCWSTR      lpTemplateName; 
    368400} 
    369401alias FINDREPLACEW* LPFINDREPLACEW; 
    370402 
    371403struct OPENFILENAMEA { 
    372     DWORD lStructSize
    373     HWND hwndOwner; 
    374     HINSTANCE hInstance; 
    375     LPCSTR lpstrFilter; 
    376     LPSTR lpstrCustomFilter; 
    377     DWORD nMaxCustFilter; 
    378     DWORD nFilterIndex; 
    379     LPSTR lpstrFile; 
    380     DWORD nMaxFile; 
    381     LPSTR lpstrFileTitle; 
    382     DWORD nMaxFileTitle; 
    383     LPCSTR lpstrInitialDir; 
    384     LPCSTR lpstrTitle; 
    385     DWORD Flags; 
    386     WORD nFileOffset; 
    387     WORD nFileExtension; 
    388     LPCSTR lpstrDefExt; 
    389     DWORD lCustData; 
     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; 
    390422    LPOFNHOOKPROC lpfnHook; 
    391     LPCSTR lpTemplateName; 
     423    LPCSTR        lpTemplateName; 
    392424} 
    393425alias OPENFILENAMEA* LPOPENFILENAMEA; 
    394426 
    395427struct OPENFILENAMEW { 
    396     DWORD lStructSize
    397     HWND hwndOwner; 
    398     HINSTANCE hInstance; 
    399     LPCWSTR lpstrFilter; 
    400     LPWSTR lpstrCustomFilter; 
    401     DWORD nMaxCustFilter; 
    402     DWORD nFilterIndex; 
    403     LPWSTR lpstrFile; 
    404     DWORD nMaxFile; 
    405     LPWSTR lpstrFileTitle; 
    406     DWORD nMaxFileTitle; 
    407     LPCWSTR lpstrInitialDir; 
    408     LPCWSTR lpstrTitle; 
    409     DWORD Flags; 
    410     WORD nFileOffset; 
    411     WORD nFileExtension; 
    412     LPCWSTR lpstrDefExt; 
    413     DWORD lCustData; 
     428    DWORD         lStructSize = OPENFILENAMEW.sizeof
     429    HWND          hwndOwner; 
     430    HINSTANCE     hInstance; 
     431    LPCWSTR       lpstrFilter; 
     432    LPWSTR        lpstrCustomFilter; 
     433    DWORD         nMaxCustFilter; 
     434    DWORD         nFilterIndex; 
     435    LPWSTR        lpstrFile; 
     436    DWORD         nMaxFile; 
     437    LPWSTR        lpstrFileTitle; 
     438    DWORD         nMaxFileTitle; 
     439    LPCWSTR       lpstrInitialDir; 
     440    LPCWSTR       lpstrTitle; 
     441    DWORD         Flags; 
     442    WORD          nFileOffset; 
     443    WORD          nFileExtension; 
     444    LPCWSTR       lpstrDefExt; 
     445    DWORD         lCustData; 
    414446    LPOFNHOOKPROC lpfnHook; 
    415     LPCWSTR lpTemplateName; 
     447    LPCWSTR       lpTemplateName; 
    416448} 
    417449alias OPENFILENAMEW* LPOPENFILENAMEW; 
    418450 
     451const size_t OPENFILENAME_SIZE_VERSION_400 = 76; 
     452 
    419453struct OFNOTIFYA { 
    420     NMHDR hdr; 
     454    NMHDR           hdr; 
    421455    LPOPENFILENAMEA lpOFN; 
    422     LPSTR pszFile; 
     456    LPSTR           pszFile; 
    423457} 
    424458alias OFNOTIFYA* LPOFNOTIFYA; 
    425459 
    426460struct OFNOTIFYW { 
    427     NMHDR hdr; 
     461    NMHDR           hdr; 
    428462    LPOPENFILENAMEW lpOFN; 
    429     LPWSTR pszFile; 
     463    LPWSTR          pszFile; 
    430464} 
    431465alias OFNOTIFYW* LPOFNOTIFYW; 
    432466 
    433467struct PAGESETUPDLGA { 
    434     DWORD lStructSize
    435     HWND hwndOwner; 
    436     HGLOBAL hDevMode; 
    437     HGLOBAL hDevNames; 
    438     DWORD Flags; 
    439     POINT ptPaperSize; 
    440     RECT rtMinMargin; 
    441     RECT rtMargin; 
    442     HINSTANCE hInstance; 
    443     LPARAM lCustData; 
     468    DWORD           lStructSize = PAGESETUPDLGA.sizeof
     469    HWND            hwndOwner; 
     470    HGLOBAL         hDevMode; 
     471    HGLOBAL         hDevNames; 
     472    DWORD           Flags; 
     473    POINT           ptPaperSize; 
     474    RECT            rtMinMargin; 
     475    RECT            rtMargin; 
     476    HINSTANCE       hInstance; 
     477    LPARAM          lCustData; 
    444478    LPPAGESETUPHOOK lpfnPageSetupHook; 
    445479    LPPAGEPAINTHOOK lpfnPagePaintHook; 
    446     LPCSTR lpPageSetupTemplateName; 
    447     HGLOBAL hPageSetupTemplate; 
     480    LPCSTR          lpPageSetupTemplateName; 
     481    HGLOBAL         hPageSetupTemplate; 
    448482} 
    449483alias PAGESETUPDLGA* LPPAGESETUPDLGA; 
    450484 
    451485struct PAGESETUPDLGW { 
    452     DWORD lStructSize
    453     HWND hwndOwner; 
    454     HGLOBAL hDevMode; 
    455     HGLOBAL hDevNames; 
    456     DWORD Flags; 
    457     POINT ptPaperSize; 
    458     RECT rtMinMargin; 
    459     RECT rtMargin; 
    460     HINSTANCE hInstance; 
    461     LPARAM lCustData; 
     486    DWORD           lStructSize = PAGESETUPDLGW.sizeof
     487    HWND            hwndOwner; 
     488    HGLOBAL         hDevMode; 
     489    HGLOBAL         hDevNames; 
     490    DWORD           Flags; 
     491    POINT           ptPaperSize; 
     492    RECT            rtMinMargin; 
     493    RECT            rtMargin; 
     494    HINSTANCE       hInstance; 
     495    LPARAM          lCustData; 
    462496    LPPAGESETUPHOOK lpfnPageSetupHook; 
    463497    LPPAGEPAINTHOOK lpfnPagePaintHook; 
    464     LPCWSTR lpPageSetupTemplateName; 
    465     HGLOBAL hPageSetupTemplate; 
     498    LPCWSTR         lpPageSetupTemplateName; 
     499    HGLOBAL         hPageSetupTemplate; 
    466500} 
    467501alias PAGESETUPDLGW* LPPAGESETUPDLGW; 
    468502 
    469503struct PRINTDLGA { 
    470     DWORD lStructSize
    471     HWND hwndOwner; 
    472     HANDLE hDevMode; 
    473     HANDLE hDevNames; 
    474     HDC hDC; 
    475     DWORD Flags; 
    476     WORD nFromPage; 
    477     WORD nToPage; 
    478     WORD nMinPage; 
    479     WORD nMaxPage; 
    480     WORD nCopies; 
    481     HINSTANCE hInstance; 
    482     DWORD lCustData; 
     504    DWORD           lStructSize = PRINTDLGA.sizeof
     505    HWND            hwndOwner; 
     506    HANDLE          hDevMode; 
     507    HANDLE          hDevNames; 
     508    HDC             hDC; 
     509    DWORD           Flags; 
     510    WORD            nFromPage; 
     511    WORD            nToPage; 
     512    WORD            nMinPage; 
     513    WORD            nMaxPage; 
     514    WORD            nCopies; 
     515    HINSTANCE       hInstance; 
     516    DWORD           lCustData; 
    483517    LPPRINTHOOKPROC lpfnPrintHook; 
    484518    LPSETUPHOOKPROC lpfnSetupHook; 
    485     LPCSTR lpPrintTemplateName; 
    486     LPCSTR lpSetupTemplateName; 
    487     HANDLE hPrintTemplate; 
    488     HANDLE hSetupTemplate; 
     519    LPCSTR          lpPrintTemplateName; 
     520    LPCSTR          lpSetupTemplateName; 
     521    HANDLE          hPrintTemplate; 
     522    HANDLE          hSetupTemplate; 
    489523} 
    490524alias PRINTDLGA* LPPRINTDLGA; 
    491525 
    492526struct PRINTDLGW { 
    493     DWORD lStructSize
    494     HWND hwndOwner; 
    495     HANDLE hDevMode; 
    496     HANDLE hDevNames; 
    497     HDC hDC; 
    498     DWORD Flags; 
    499     WORD nFromPage; 
    500     WORD nToPage; 
    501     WORD nMinPage; 
    502     WORD nMaxPage; 
    503     WORD nCopies; 
    504     HINSTANCE hInstance; 
    505     DWORD lCustData; 
     527    DWORD           lStructSize = PRINTDLGW.sizeof
     528    HWND            hwndOwner; 
     529    HANDLE          hDevMode; 
     530    HANDLE          hDevNames; 
     531    HDC             hDC; 
     532    DWORD           Flags; 
     533    WORD            nFromPage; 
     534    WORD            nToPage; 
     535    WORD            nMinPage; 
     536    WORD            nMaxPage; 
     537    WORD            nCopies; 
     538    HINSTANCE       hInstance; 
     539    DWORD           lCustData; 
    506540    LPPRINTHOOKPROC lpfnPrintHook; 
    507541    LPSETUPHOOKPROC lpfnSetupHook; 
    508     LPCWSTR lpPrintTemplateName; 
    509     LPCWSTR lpSetupTemplateName; 
    510     HANDLE hPrintTemplate; 
    511     HANDLE hSetupTemplate; 
     542    LPCWSTR         lpPrintTemplateName; 
     543    LPCWSTR         lpSetupTemplateName; 
     544    HANDLE          hPrintTemplate; 
     545    HANDLE          hSetupTemplate; 
    512546} 
    513547alias PRINTDLGW* LPPRINTDLGW; 
    514548 
    515 static if (WINVER >= 0x0500) { 
    516 import win32.unknwn; // for LPUNKNOWN 
    517 import win32.prsht;  // for HPROPSHEETPAGE 
    518  
    519 struct PRINTPAGERANGE { 
    520     DWORD  nFromPage; 
    521     DWORD  nToPage; 
    522 
    523 alias PRINTPAGERANGE* LPPRINTPAGERANGE; 
    524  
    525 struct PRINTDLGEXA { 
    526     DWORD lStructSize
    527     HWND hwndOwner; 
    528     HGLOBAL hDevMode; 
    529     HGLOBAL hDevNames; 
    530     HDC hDC; 
    531     DWORD Flags; 
    532     DWORD Flags2; 
    533     DWORD ExclusionFlags; 
    534     DWORD nPageRanges; 
    535     DWORD nMaxPageRanges; 
    536     LPPRINTPAGERANGE lpPageRanges; 
    537     DWORD nMinPage; 
    538     DWORD nMaxPage; 
    539     DWORD nCopies; 
    540     HINSTANCE hInstance; 
    541     LPCSTR lpPrintTemplateName; 
    542     LPUNKNOWN lpCallback; 
    543     DWORD nPropertyPages; 
    544     HPROPSHEETPAGE* lphPropertyPages; 
    545     DWORD nStartPage; 
    546     DWORD dwResultAction; 
    547 
    548 alias PRINTDLGEXA* LPPRINTDLGEXA; 
    549  
    550 struct PRINTDLGEXW { 
    551     DWORD lStructSize
    552     HWND hwndOwner; 
    553     HGLOBAL hDevMode; 
    554     HGLOBAL hDevNames; 
    555     HDC hDC; 
    556     DWORD Flags; 
    557     DWORD Flags2; 
    558     DWORD ExclusionFlags; 
    559     DWORD nPageRanges; 
    560     DWORD nMaxPageRanges; 
    561     LPPRINTPAGERANGE lpPageRanges; 
    562     DWORD nMinPage; 
    563     DWORD nMaxPage; 
    564     DWORD nCopies; 
    565     HINSTANCE hInstance; 
    566     LPCWSTR lpPrintTemplateName; 
    567     LPUNKNOWN lpCallback; 
    568     DWORD nPropertyPages; 
    569     HPROPSHEETPAGE* lphPropertyPages; 
    570     DWORD nStartPage; 
    571     DWORD dwResultAction; 
    572 
    573 alias PRINTDLGEXW* LPPRINTDLGEXW; 
    574  
    575 } // WINVER >= 0x0500 
    576  
    577 extern (Windows): 
    578  
    579 BOOL ChooseColorA(LPCHOOSECOLORA); 
    580 BOOL ChooseColorW(LPCHOOSECOLORW); 
    581 BOOL ChooseFontA(LPCHOOSEFONTA); 
    582 BOOL ChooseFontW(LPCHOOSEFONTW); 
    583 DWORD CommDlgExtendedError(); 
    584 HWND FindTextA(LPFINDREPLACEA); 
    585 HWND FindTextW(LPFINDREPLACEW); 
    586 short GetFileTitleA(LPCSTR,LPSTR,WORD); 
    587 short GetFileTitleW(LPCWSTR,LPWSTR,WORD); 
    588 BOOL GetOpenFileNameA(LPOPENFILENAMEA); 
    589 BOOL GetOpenFileNameW(LPOPENFILENAMEW); 
    590 BOOL GetSaveFileNameA(LPOPENFILENAMEA); 
    591 BOOL GetSaveFileNameW(LPOPENFILENAMEW); 
    592 BOOL PageSetupDlgA(LPPAGESETUPDLGA); 
    593 BOOL PageSetupDlgW(LPPAGESETUPDLGW); 
    594 BOOL PrintDlgA(LPPRINTDLGA); 
    595 BOOL PrintDlgW(LPPRINTDLGW); 
    596 HWND ReplaceTextA(LPFINDREPLACEA); 
    597 HWND ReplaceTextW(LPFINDREPLACEW); 
    598  
    599 static if (WINVER >= 0x0500) { 
    600     HRESULT PrintDlgExA(LPPRINTDLGEXA); 
    601     HRESULT PrintDlgExW(LPPRINTDLGEXW); 
    602 } 
    603  
    604 version(Unicode) { 
     549static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     550   import win32.unknwn; // for LPUNKNOWN 
     551   import win32.prsht;  // for HPROPSHEETPAGE 
     552 
     553   struct PRINTPAGERANGE { 
     554       DWORD  nFromPage; 
     555       DWORD  nToPage; 
     556   
     557   alias PRINTPAGERANGE* LPPRINTPAGERANGE; 
     558 
     559   struct PRINTDLGEXA { 
     560       DWORD            lStructSize = PRINTDLGEXA.sizeof
     561       HWND            hwndOwner; 
     562       HGLOBAL          hDevMode; 
     563       HGLOBAL          hDevNames; 
     564       HDC              hDC; 
     565       DWORD            Flags; 
     566       DWORD            Flags2; 
     567       DWORD            ExclusionFlags; 
     568       DWORD            nPageRanges; 
     569       DWORD            nMaxPageRanges; 
     570       LPPRINTPAGERANGE lpPageRanges; 
     571       DWORD            nMinPage; 
     572       DWORD            nMaxPage; 
     573       DWORD            nCopies; 
     574       HINSTANCE        hInstance; 
     575       LPCSTR          lpPrintTemplateName; 
     576       LPUNKNOWN        lpCallback; 
     577       DWORD            nPropertyPages; 
     578       HPROPSHEETPAGE* lphPropertyPages; 
     579       DWORD            nStartPage; 
     580       DWORD            dwResultAction; 
     581   
     582   alias PRINTDLGEXA* LPPRINTDLGEXA; 
     583 
     584   struct PRINTDLGEXW { 
     585       DWORD            lStructSize = PRINTDLGEXW.sizeof
     586       HWND            hwndOwner; 
     587       HGLOBAL          hDevMode; 
     588       HGLOBAL          hDevNames; 
     589       HDC              hDC; 
     590       DWORD            Flags; 
     591       DWORD            Flags2; 
     592       DWORD            ExclusionFlags; 
     593       DWORD            nPageRanges; 
     594       DWORD            nMaxPageRanges; 
     595       LPPRINTPAGERANGE lpPageRanges; 
     596       DWORD            nMinPage; 
     597       DWORD            nMaxPage; 
     598       DWORD            nCopies; 
     599       HINSTANCE        hInstance; 
     600       LPCWSTR          lpPrintTemplateName; 
     601       LPUNKNOWN        lpCallback; 
     602       DWORD            nPropertyPages; 
     603       HPROPSHEETPAGE* lphPropertyPages; 
     604       DWORD            nStartPage; 
     605       DWORD            dwResultAction; 
     606   
     607   alias PRINTDLGEXW* LPPRINTDLGEXW; 
     608 
     609} // _WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500 
     610 
     611extern (Windows) { 
     612    BOOL ChooseColorA(LPCHOOSECOLORA); 
     613   BOOL ChooseColorW(LPCHOOSECOLORW); 
     614   BOOL ChooseFontA(LPCHOOSEFONTA); 
     615   BOOL ChooseFontW(LPCHOOSEFONTW); 
     616   DWORD CommDlgExtendedError(); 
     617   HWND FindTextA(LPFINDREPLACEA); 
     618   HWND FindTextW(LPFINDREPLACEW); 
     619   short GetFileTitleA(LPCSTR, LPSTR, WORD); 
     620   short GetFileTitleW(LPCWSTR, LPWSTR, WORD); 
     621   BOOL GetOpenFileNameA(LPOPENFILENAMEA); 
     622   BOOL GetOpenFileNameW(LPOPENFILENAMEW); 
     623   BOOL GetSaveFileNameA(LPOPENFILENAMEA); 
     624   BOOL GetSaveFileNameW(LPOPENFILENAMEW); 
     625   BOOL PageSetupDlgA(LPPAGESETUPDLGA); 
     626   BOOL PageSetupDlgW(LPPAGESETUPDLGW); 
     627   BOOL PrintDlgA(LPPRINTDLGA); 
     628   BOOL PrintDlgW(LPPRINTDLGW); 
     629   HWND ReplaceTextA(LPFINDREPLACEA); 
     630   HWND ReplaceTextW(LPFINDREPLACEW); 
     631 
     632    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     633        HRESULT PrintDlgExA(LPPRINTDLGEXA); 
     634       HRESULT PrintDlgExW(LPPRINTDLGEXW); 
     635    } 
     636} 
     637 
     638version (Unicode) { 
    605639    alias CHOOSECOLORW CHOOSECOLOR; 
    606640    alias CHOOSEFONTW CHOOSEFONT; 
     
    621655    alias ReplaceTextW ReplaceText; 
    622656 
    623     static if (WINVER >= 0x0500) { 
     657    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
    624658        alias PRINTDLGEXW PRINTDLGEX; 
    625659        alias PrintDlgExW PrintDlgEx; 
    626     } // WINVER >= 0x0500 
     660    } 
    627661 
    628662} else { // UNICODE 
     
    646680    alias ReplaceTextA ReplaceText; 
    647681 
    648     static if (WINVER >= 0x0500) { 
     682    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
    649683        alias PRINTDLGEXA PRINTDLGEX; 
    650684        alias PrintDlgExA PrintDlgEx; 
    651     } // WINVER >= 0x0500 
     685    } 
    652686 
    653687} // UNICODE 
     
    660694alias PAGESETUPDLG* LPPAGESETUPDLG; 
    661695alias PRINTDLG* LPPRINTDLG; 
    662 static if (WINVER >= 0x0500) { 
     696static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
    663697    alias PRINTDLGEX* LPPRINTDLGEX; 
    664698}