Artifact Content

Not logged in

Artifact 3a4a470084abe4866391eab0d0aad21ebb5a14c0


     1  module win32.ansi.winuser;
     2  
     3  // Translated from Microsoft Platform SDK August 2001 Edition
     4  // by Y.Tomino (demoonlit@inter7.jp)
     5  
     6  import win32.ansi.winbase, win32.ansi.wingdi;
     7  enum : uint {
     8    QS_POSTMESSAGE = 0x0008,
     9    QS_TIMER       = 0x0010,
    10    QS_PAINT       = 0x0020,
    11    QS_SENDMESSAGE = 0x0040,
    12    QS_HOTKEY      = 0x0080,
    13    QS_INPUT       = 0x0407
    14  }
    15  
    16  // #ifndef _WINUSER_
    17  // #define _WINUSER_
    18  
    19  // #if !defined(_USER32_)
    20  // #define WINUSERAPI DECLSPEC_IMPORT
    21  // #else
    22  // #...
    23  // #endif
    24  
    25  // #ifdef _MAC
    26  // #...
    27  // #endif
    28  
    29  // #ifdef __cplusplus
    30  // extern "C" {
    31  // #endif /* __cplusplus */
    32  
    33  // #ifndef WINVER
    34  // #...
    35  // #endif /* !WINVER */
    36  
    37  // #include <stdarg.h>
    38  
    39  // #ifndef NOUSER
    40  
    41  alias HANDLE HDWP;
    42  alias VOID MENUTEMPLATEA;
    43  alias VOID MENUTEMPLATEW;
    44  // #ifdef UNICODE
    45  // ...
    46  // #else
    47  alias MENUTEMPLATEA MENUTEMPLATE;
    48  // #endif // UNICODE
    49  alias PVOID LPMENUTEMPLATEA;
    50  alias PVOID LPMENUTEMPLATEW;
    51  // #ifdef UNICODE
    52  // ...
    53  // #else
    54  alias LPMENUTEMPLATEA LPMENUTEMPLATE;
    55  // #endif // UNICODE
    56  
    57  extern(Windows) alias LRESULT function(HWND, UINT, WPARAM, LPARAM) WNDPROC;
    58  
    59  // #ifdef STRICT
    60  
    61  extern(Windows) alias INT_PTR function(HWND, UINT, WPARAM, LPARAM) DLGPROC;
    62  extern(Windows) alias VOID function(HWND, UINT, UINT_PTR, DWORD) TIMERPROC;
    63  extern(Windows) alias BOOL function(HDC, LPARAM, int) GRAYSTRINGPROC;
    64  extern(Windows) alias BOOL function(HWND, LPARAM) WNDENUMPROC;
    65  extern(Windows) alias LRESULT function(int code, WPARAM wParam, LPARAM lParam) HOOKPROC;
    66  extern(Windows) alias VOID function(HWND, UINT, ULONG_PTR, LRESULT) SENDASYNCPROC;
    67  
    68  extern(Windows) alias BOOL function(HWND, LPCSTR, HANDLE) PROPENUMPROCA;
    69  extern(Windows) alias BOOL function(HWND, LPCWSTR, HANDLE) PROPENUMPROCW;
    70  
    71  extern(Windows) alias BOOL function(HWND, LPSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXA;
    72  extern(Windows) alias BOOL function(HWND, LPWSTR, HANDLE, ULONG_PTR) PROPENUMPROCEXW;
    73  
    74  extern(Windows) alias int function(LPSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCA;
    75  extern(Windows) alias int function(LPWSTR lpch, int ichCurrent, int cch, int code) EDITWORDBREAKPROCW;
    76  
    77  // #if(WINVER >= 0x0400)
    78  extern(Windows) alias BOOL function(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy) DRAWSTATEPROC;
    79  // #endif /* WINVER >= 0x0400 */
    80  // #else /* !STRICT */
    81  
    82  // ...
    83  
    84  // ...
    85  
    86  // ...
    87  
    88  // ...
    89  
    90  // #if(WINVER >= 0x0400)
    91  // ...
    92  // #endif /* WINVER >= 0x0400 */
    93  // #endif /* !STRICT */
    94  
    95  // #ifdef UNICODE
    96  // ...
    97  // #else  /* !UNICODE */
    98  alias PROPENUMPROCA PROPENUMPROC;
    99  alias PROPENUMPROCEXA PROPENUMPROCEX;
   100  alias EDITWORDBREAKPROCA EDITWORDBREAKPROC;
   101  // #endif /* UNICODE */
   102  
   103  // #ifdef STRICT
   104  
   105  extern(Windows) alias BOOL function(LPSTR, LPARAM) NAMEENUMPROCA;
   106  extern(Windows) alias BOOL function(LPWSTR, LPARAM) NAMEENUMPROCW;
   107  
   108  alias NAMEENUMPROCA WINSTAENUMPROCA;
   109  alias NAMEENUMPROCA DESKTOPENUMPROCA;
   110  alias NAMEENUMPROCW WINSTAENUMPROCW;
   111  alias NAMEENUMPROCW DESKTOPENUMPROCW;
   112  
   113  // #else /* !STRICT */
   114  
   115  // ...
   116  
   117  // #endif /* !STRICT */
   118  
   119  // #ifdef UNICODE
   120  // ...
   121  
   122  // #else  /* !UNICODE */
   123  alias WINSTAENUMPROCA WINSTAENUMPROC;
   124  alias DESKTOPENUMPROCA DESKTOPENUMPROC;
   125  
   126  // #endif /* UNICODE */
   127  
   128  bit IS_INTRESOURCE(LPTSTR _r){ return ((cast(ULONG_PTR)(_r) >> 16) == 0); }
   129  LPSTR MAKEINTRESOURCEA(WORD i){ return cast(LPSTR)(cast(ULONG_PTR)(cast(WORD)(i))); }
   130  LPWSTR MAKEINTRESOURCEW(WORD i){ return cast(LPWSTR)(cast(ULONG_PTR)(cast(WORD)(i))); }
   131  // #ifdef UNICODE
   132  // #...
   133  // #else
   134  alias MAKEINTRESOURCEA MAKEINTRESOURCE;
   135  // #endif // !UNICODE
   136  
   137  // #ifndef NORESOURCE
   138  
   139  const LPTSTR RT_CURSOR = cast(LPTSTR)(1);
   140  const LPTSTR RT_BITMAP = cast(LPTSTR)(2);
   141  const LPTSTR RT_ICON = cast(LPTSTR)(3);
   142  const LPTSTR RT_MENU = cast(LPTSTR)(4);
   143  const LPTSTR RT_DIALOG = cast(LPTSTR)(5);
   144  const LPTSTR RT_STRING = cast(LPTSTR)(6);
   145  const LPTSTR RT_FONTDIR = cast(LPTSTR)(7);
   146  const LPTSTR RT_FONT = cast(LPTSTR)(8);
   147  const LPTSTR RT_ACCELERATOR = cast(LPTSTR)(9);
   148  const LPTSTR RT_RCDATA = cast(LPTSTR)(10);
   149  const LPTSTR RT_MESSAGETABLE = cast(LPTSTR)(11);
   150  
   151  enum : uint { DIFFERENCE = 11 }
   152  const LPTSTR RT_GROUP_CURSOR = cast(LPTSTR)(cast(ULONG_PTR)RT_CURSOR + DIFFERENCE);
   153  const LPTSTR RT_GROUP_ICON = cast(LPTSTR)(cast(ULONG_PTR)RT_ICON + DIFFERENCE);
   154  const LPTSTR RT_VERSION = cast(LPTSTR)(16);
   155  const LPTSTR RT_DLGINCLUDE = cast(LPTSTR)(17);
   156  // #if(WINVER >= 0x0400)
   157  const LPTSTR RT_PLUGPLAY = cast(LPTSTR)(19);
   158  const LPTSTR RT_VXD = cast(LPTSTR)(20);
   159  const LPTSTR RT_ANICURSOR = cast(LPTSTR)(21);
   160  const LPTSTR RT_ANIICON = cast(LPTSTR)(22);
   161  // #endif /* WINVER >= 0x0400 */
   162  const LPTSTR RT_HTML = cast(LPTSTR)(23);
   163  // #ifdef RC_INVOKED
   164  // #...
   165  // #...
   166  // #...
   167  // #...
   168  // #...
   169  // #...
   170  // #else  /* RC_INVOKED */
   171  const LPTSTR RT_MANIFEST = cast(LPTSTR)(24);
   172  const LPTSTR CREATEPROCESS_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1);
   173  const LPTSTR ISOLATIONAWARE_MANIFEST_RESOURCE_ID = cast(LPTSTR)(2);
   174  const LPTSTR ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = cast(LPTSTR)(3);
   175  const LPTSTR MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)( 1 );
   176  const LPTSTR MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = cast(LPTSTR)(16 );
   177  // #endif /* RC_INVOKED */
   178  
   179  // #endif /* !NORESOURCE */
   180  
   181  extern(Windows) export int wvsprintfA(
   182    LPSTR,
   183    LPCSTR,
   184    va_list arglist);
   185  extern(Windows) export int wvsprintfW(
   186    LPWSTR,
   187    LPCWSTR,
   188    va_list arglist);
   189  // #ifdef UNICODE
   190  // #...
   191  // #else
   192  alias wvsprintfA wvsprintf;
   193  // #endif // !UNICODE
   194  
   195  extern(C) export int wsprintfA(
   196    LPSTR,
   197    LPCSTR,
   198    ...);
   199  extern(C) export int wsprintfW(
   200    LPWSTR,
   201    LPCWSTR,
   202    ...);
   203  // #ifdef UNICODE
   204  // #...
   205  // #else
   206  alias wsprintfA wsprintf;
   207  // #endif // !UNICODE
   208  
   209  const LPWSTR SETWALLPAPER_DEFAULT = cast(LPWSTR)-1;
   210  
   211  // #ifndef NOSCROLL
   212  
   213  enum : uint { SB_HORZ = 0 }
   214  enum : uint { SB_VERT = 1 }
   215  enum : uint { SB_CTL = 2 }
   216  enum : uint { SB_BOTH = 3 }
   217  
   218  enum : uint { SB_LINEUP = 0 }
   219  enum : uint { SB_LINELEFT = 0 }
   220  enum : uint { SB_LINEDOWN = 1 }
   221  enum : uint { SB_LINERIGHT = 1 }
   222  enum : uint { SB_PAGEUP = 2 }
   223  enum : uint { SB_PAGELEFT = 2 }
   224  enum : uint { SB_PAGEDOWN = 3 }
   225  enum : uint { SB_PAGERIGHT = 3 }
   226  enum : uint { SB_THUMBPOSITION = 4 }
   227  enum : uint { SB_THUMBTRACK = 5 }
   228  enum : uint { SB_TOP = 6 }
   229  enum : uint { SB_LEFT = 6 }
   230  enum : uint { SB_BOTTOM = 7 }
   231  enum : uint { SB_RIGHT = 7 }
   232  enum : uint { SB_ENDSCROLL = 8 }
   233  
   234  // #endif /* !NOSCROLL */
   235  
   236  // #ifndef NOSHOWWINDOW
   237  
   238  enum : uint { SW_HIDE = 0 }
   239  enum : uint { SW_SHOWNORMAL = 1 }
   240  enum : uint { SW_NORMAL = 1 }
   241  enum : uint { SW_SHOWMINIMIZED = 2 }
   242  enum : uint { SW_SHOWMAXIMIZED = 3 }
   243  enum : uint { SW_MAXIMIZE = 3 }
   244  enum : uint { SW_SHOWNOACTIVATE = 4 }
   245  enum : uint { SW_SHOW = 5 }
   246  enum : uint { SW_MINIMIZE = 6 }
   247  enum : uint { SW_SHOWMINNOACTIVE = 7 }
   248  enum : uint { SW_SHOWNA = 8 }
   249  enum : uint { SW_RESTORE = 9 }
   250  enum : uint { SW_SHOWDEFAULT = 10 }
   251  enum : uint { SW_FORCEMINIMIZE = 11 }
   252  enum : uint { SW_MAX = 11 }
   253  
   254  enum : uint { HIDE_WINDOW = 0 }
   255  enum : uint { SHOW_OPENWINDOW = 1 }
   256  enum : uint { SHOW_ICONWINDOW = 2 }
   257  enum : uint { SHOW_FULLSCREEN = 3 }
   258  enum : uint { SHOW_OPENNOACTIVATE = 4 }
   259  
   260  enum : uint { SW_PARENTCLOSING = 1 }
   261  enum : uint { SW_OTHERZOOM = 2 }
   262  enum : uint { SW_PARENTOPENING = 3 }
   263  enum : uint { SW_OTHERUNZOOM = 4 }
   264  
   265  // #endif /* !NOSHOWWINDOW */
   266  
   267  // #if(WINVER >= 0x0500)
   268  
   269  enum : uint { AW_HOR_POSITIVE = 0x00000001 }
   270  enum : uint { AW_HOR_NEGATIVE = 0x00000002 }
   271  enum : uint { AW_VER_POSITIVE = 0x00000004 }
   272  enum : uint { AW_VER_NEGATIVE = 0x00000008 }
   273  enum : uint { AW_CENTER = 0x00000010 }
   274  enum : uint { AW_HIDE = 0x00010000 }
   275  enum : uint { AW_ACTIVATE = 0x00020000 }
   276  enum : uint { AW_SLIDE = 0x00040000 }
   277  enum : uint { AW_BLEND = 0x00080000 }
   278  
   279  // #endif /* WINVER >= 0x0500 */
   280  
   281  enum : uint { KF_EXTENDED = 0x0100 }
   282  enum : uint { KF_DLGMODE = 0x0800 }
   283  enum : uint { KF_MENUMODE = 0x1000 }
   284  enum : uint { KF_ALTDOWN = 0x2000 }
   285  enum : uint { KF_REPEAT = 0x4000 }
   286  enum : uint { KF_UP = 0x8000 }
   287  
   288  // #ifndef NOVIRTUALKEYCODES
   289  
   290  enum : uint { VK_LBUTTON = 0x01 }
   291  enum : uint { VK_RBUTTON = 0x02 }
   292  enum : uint { VK_CANCEL = 0x03 }
   293  enum : uint { VK_MBUTTON = 0x04 }
   294  
   295  // #if(_WIN32_WINNT >= 0x0500)
   296  enum : uint { VK_XBUTTON1 = 0x05 }
   297  enum : uint { VK_XBUTTON2 = 0x06 }
   298  // #endif /* _WIN32_WINNT >= 0x0500 */
   299  
   300  enum : uint { VK_BACK = 0x08 }
   301  enum : uint { VK_TAB = 0x09 }
   302  
   303  enum : uint { VK_CLEAR = 0x0C }
   304  enum : uint { VK_RETURN = 0x0D }
   305  
   306  enum : uint { VK_SHIFT = 0x10 }
   307  enum : uint { VK_CONTROL = 0x11 }
   308  enum : uint { VK_MENU = 0x12 }
   309  enum : uint { VK_PAUSE = 0x13 }
   310  enum : uint { VK_CAPITAL = 0x14 }
   311  
   312  enum : uint { VK_KANA = 0x15 }
   313  enum : uint { VK_HANGEUL = 0x15 }
   314  enum : uint { VK_HANGUL = 0x15 }
   315  enum : uint { VK_JUNJA = 0x17 }
   316  enum : uint { VK_FINAL = 0x18 }
   317  enum : uint { VK_HANJA = 0x19 }
   318  enum : uint { VK_KANJI = 0x19 }
   319  
   320  enum : uint { VK_ESCAPE = 0x1B }
   321  
   322  enum : uint { VK_CONVERT = 0x1C }
   323  enum : uint { VK_NONCONVERT = 0x1D }
   324  enum : uint { VK_ACCEPT = 0x1E }
   325  enum : uint { VK_MODECHANGE = 0x1F }
   326  
   327  enum : uint { VK_SPACE = 0x20 }
   328  enum : uint { VK_PRIOR = 0x21 }
   329  enum : uint { VK_NEXT = 0x22 }
   330  enum : uint { VK_END = 0x23 }
   331  enum : uint { VK_HOME = 0x24 }
   332  enum : uint { VK_LEFT = 0x25 }
   333  enum : uint { VK_UP = 0x26 }
   334  enum : uint { VK_RIGHT = 0x27 }
   335  enum : uint { VK_DOWN = 0x28 }
   336  enum : uint { VK_SELECT = 0x29 }
   337  enum : uint { VK_PRINT = 0x2A }
   338  enum : uint { VK_EXECUTE = 0x2B }
   339  enum : uint { VK_SNAPSHOT = 0x2C }
   340  enum : uint { VK_INSERT = 0x2D }
   341  enum : uint { VK_DELETE = 0x2E }
   342  enum : uint { VK_HELP = 0x2F }
   343  
   344  enum : uint { VK_LWIN = 0x5B }
   345  enum : uint { VK_RWIN = 0x5C }
   346  enum : uint { VK_APPS = 0x5D }
   347  
   348  enum : uint { VK_SLEEP = 0x5F }
   349  
   350  enum : uint { VK_NUMPAD0 = 0x60 }
   351  enum : uint { VK_NUMPAD1 = 0x61 }
   352  enum : uint { VK_NUMPAD2 = 0x62 }
   353  enum : uint { VK_NUMPAD3 = 0x63 }
   354  enum : uint { VK_NUMPAD4 = 0x64 }
   355  enum : uint { VK_NUMPAD5 = 0x65 }
   356  enum : uint { VK_NUMPAD6 = 0x66 }
   357  enum : uint { VK_NUMPAD7 = 0x67 }
   358  enum : uint { VK_NUMPAD8 = 0x68 }
   359  enum : uint { VK_NUMPAD9 = 0x69 }
   360  enum : uint { VK_MULTIPLY = 0x6A }
   361  enum : uint { VK_ADD = 0x6B }
   362  enum : uint { VK_SEPARATOR = 0x6C }
   363  enum : uint { VK_SUBTRACT = 0x6D }
   364  enum : uint { VK_DECIMAL = 0x6E }
   365  enum : uint { VK_DIVIDE = 0x6F }
   366  enum : uint { VK_F1 = 0x70 }
   367  enum : uint { VK_F2 = 0x71 }
   368  enum : uint { VK_F3 = 0x72 }
   369  enum : uint { VK_F4 = 0x73 }
   370  enum : uint { VK_F5 = 0x74 }
   371  enum : uint { VK_F6 = 0x75 }
   372  enum : uint { VK_F7 = 0x76 }
   373  enum : uint { VK_F8 = 0x77 }
   374  enum : uint { VK_F9 = 0x78 }
   375  enum : uint { VK_F10 = 0x79 }
   376  enum : uint { VK_F11 = 0x7A }
   377  enum : uint { VK_F12 = 0x7B }
   378  enum : uint { VK_F13 = 0x7C }
   379  enum : uint { VK_F14 = 0x7D }
   380  enum : uint { VK_F15 = 0x7E }
   381  enum : uint { VK_F16 = 0x7F }
   382  enum : uint { VK_F17 = 0x80 }
   383  enum : uint { VK_F18 = 0x81 }
   384  enum : uint { VK_F19 = 0x82 }
   385  enum : uint { VK_F20 = 0x83 }
   386  enum : uint { VK_F21 = 0x84 }
   387  enum : uint { VK_F22 = 0x85 }
   388  enum : uint { VK_F23 = 0x86 }
   389  enum : uint { VK_F24 = 0x87 }
   390  
   391  enum : uint { VK_NUMLOCK = 0x90 }
   392  enum : uint { VK_SCROLL = 0x91 }
   393  
   394  enum : uint { VK_OEM_NEC_EQUAL = 0x92 }
   395  
   396  enum : uint { VK_OEM_FJ_JISHO = 0x92 }
   397  enum : uint { VK_OEM_FJ_MASSHOU = 0x93 }
   398  enum : uint { VK_OEM_FJ_TOUROKU = 0x94 }
   399  enum : uint { VK_OEM_FJ_LOYA = 0x95 }
   400  enum : uint { VK_OEM_FJ_ROYA = 0x96 }
   401  
   402  enum : uint { VK_LSHIFT = 0xA0 }
   403  enum : uint { VK_RSHIFT = 0xA1 }
   404  enum : uint { VK_LCONTROL = 0xA2 }
   405  enum : uint { VK_RCONTROL = 0xA3 }
   406  enum : uint { VK_LMENU = 0xA4 }
   407  enum : uint { VK_RMENU = 0xA5 }
   408  
   409  // #if(_WIN32_WINNT >= 0x0500)
   410  enum : uint { VK_BROWSER_BACK = 0xA6 }
   411  enum : uint { VK_BROWSER_FORWARD = 0xA7 }
   412  enum : uint { VK_BROWSER_REFRESH = 0xA8 }
   413  enum : uint { VK_BROWSER_STOP = 0xA9 }
   414  enum : uint { VK_BROWSER_SEARCH = 0xAA }
   415  enum : uint { VK_BROWSER_FAVORITES = 0xAB }
   416  enum : uint { VK_BROWSER_HOME = 0xAC }
   417  
   418  enum : uint { VK_VOLUME_MUTE = 0xAD }
   419  enum : uint { VK_VOLUME_DOWN = 0xAE }
   420  enum : uint { VK_VOLUME_UP = 0xAF }
   421  enum : uint { VK_MEDIA_NEXT_TRACK = 0xB0 }
   422  enum : uint { VK_MEDIA_PREV_TRACK = 0xB1 }
   423  enum : uint { VK_MEDIA_STOP = 0xB2 }
   424  enum : uint { VK_MEDIA_PLAY_PAUSE = 0xB3 }
   425  enum : uint { VK_LAUNCH_MAIL = 0xB4 }
   426  enum : uint { VK_LAUNCH_MEDIA_SELECT = 0xB5 }
   427  enum : uint { VK_LAUNCH_APP1 = 0xB6 }
   428  enum : uint { VK_LAUNCH_APP2 = 0xB7 }
   429  
   430  // #endif /* _WIN32_WINNT >= 0x0500 */
   431  
   432  enum : uint { VK_OEM_1 = 0xBA }
   433  enum : uint { VK_OEM_PLUS = 0xBB }
   434  enum : uint { VK_OEM_COMMA = 0xBC }
   435  enum : uint { VK_OEM_MINUS = 0xBD }
   436  enum : uint { VK_OEM_PERIOD = 0xBE }
   437  enum : uint { VK_OEM_2 = 0xBF }
   438  enum : uint { VK_OEM_3 = 0xC0 }
   439  
   440  enum : uint { VK_OEM_4 = 0xDB }
   441  enum : uint { VK_OEM_5 = 0xDC }
   442  enum : uint { VK_OEM_6 = 0xDD }
   443  enum : uint { VK_OEM_7 = 0xDE }
   444  enum : uint { VK_OEM_8 = 0xDF }
   445  
   446  enum : uint { VK_OEM_AX = 0xE1 }
   447  enum : uint { VK_OEM_102 = 0xE2 }
   448  enum : uint { VK_ICO_HELP = 0xE3 }
   449  enum : uint { VK_ICO_00 = 0xE4 }
   450  
   451  // #if(WINVER >= 0x0400)
   452  enum : uint { VK_PROCESSKEY = 0xE5 }
   453  // #endif /* WINVER >= 0x0400 */
   454  
   455  enum : uint { VK_ICO_CLEAR = 0xE6 }
   456  
   457  // #if(_WIN32_WINNT >= 0x0500)
   458  enum : uint { VK_PACKET = 0xE7 }
   459  // #endif /* _WIN32_WINNT >= 0x0500 */
   460  
   461  enum : uint { VK_OEM_RESET = 0xE9 }
   462  enum : uint { VK_OEM_JUMP = 0xEA }
   463  enum : uint { VK_OEM_PA1 = 0xEB }
   464  enum : uint { VK_OEM_PA2 = 0xEC }
   465  enum : uint { VK_OEM_PA3 = 0xED }
   466  enum : uint { VK_OEM_WSCTRL = 0xEE }
   467  enum : uint { VK_OEM_CUSEL = 0xEF }
   468  enum : uint { VK_OEM_ATTN = 0xF0 }
   469  enum : uint { VK_OEM_FINISH = 0xF1 }
   470  enum : uint { VK_OEM_COPY = 0xF2 }
   471  enum : uint { VK_OEM_AUTO = 0xF3 }
   472  enum : uint { VK_OEM_ENLW = 0xF4 }
   473  enum : uint { VK_OEM_BACKTAB = 0xF5 }
   474  
   475  enum : uint { VK_ATTN = 0xF6 }
   476  enum : uint { VK_CRSEL = 0xF7 }
   477  enum : uint { VK_EXSEL = 0xF8 }
   478  enum : uint { VK_EREOF = 0xF9 }
   479  enum : uint { VK_PLAY = 0xFA }
   480  enum : uint { VK_ZOOM = 0xFB }
   481  enum : uint { VK_NONAME = 0xFC }
   482  enum : uint { VK_PA1 = 0xFD }
   483  enum : uint { VK_OEM_CLEAR = 0xFE }
   484  
   485  // #endif /* !NOVIRTUALKEYCODES */
   486  
   487  // #ifndef NOWH
   488  
   489  enum { WH_MIN = -1 }
   490  enum { WH_MSGFILTER = -1 }
   491  enum : uint { WH_JOURNALRECORD = 0 }
   492  enum : uint { WH_JOURNALPLAYBACK = 1 }
   493  enum : uint { WH_KEYBOARD = 2 }
   494  enum : uint { WH_GETMESSAGE = 3 }
   495  enum : uint { WH_CALLWNDPROC = 4 }
   496  enum : uint { WH_CBT = 5 }
   497  enum : uint { WH_SYSMSGFILTER = 6 }
   498  enum : uint { WH_MOUSE = 7 }
   499  // #if defined(_WIN32_WINDOWS)
   500  // #...
   501  // #endif
   502  enum : uint { WH_DEBUG = 9 }
   503  enum : uint { WH_SHELL = 10 }
   504  enum : uint { WH_FOREGROUNDIDLE = 11 }
   505  // #if(WINVER >= 0x0400)
   506  enum : uint { WH_CALLWNDPROCRET = 12 }
   507  // #endif /* WINVER >= 0x0400 */
   508  
   509  // #if (_WIN32_WINNT >= 0x0400)
   510  enum : uint { WH_KEYBOARD_LL = 13 }
   511  enum : uint { WH_MOUSE_LL = 14 }
   512  // #endif // (_WIN32_WINNT >= 0x0400)
   513  
   514  // #if(WINVER >= 0x0400)
   515  // #if (_WIN32_WINNT >= 0x0400)
   516  enum : uint { WH_MAX = 14 }
   517  // #else
   518  // #...
   519  // #endif // (_WIN32_WINNT >= 0x0400)
   520  // #else
   521  // #...
   522  // #endif
   523  
   524  alias WH_MIN WH_MINHOOK;
   525  alias WH_MAX WH_MAXHOOK;
   526  
   527  enum : uint { HC_ACTION = 0 }
   528  enum : uint { HC_GETNEXT = 1 }
   529  enum : uint { HC_SKIP = 2 }
   530  enum : uint { HC_NOREMOVE = 3 }
   531  alias HC_NOREMOVE HC_NOREM;
   532  enum : uint { HC_SYSMODALON = 4 }
   533  enum : uint { HC_SYSMODALOFF = 5 }
   534  
   535  enum : uint { HCBT_MOVESIZE = 0 }
   536  enum : uint { HCBT_MINMAX = 1 }
   537  enum : uint { HCBT_QS = 2 }
   538  enum : uint { HCBT_CREATEWND = 3 }
   539  enum : uint { HCBT_DESTROYWND = 4 }
   540  enum : uint { HCBT_ACTIVATE = 5 }
   541  enum : uint { HCBT_CLICKSKIPPED = 6 }
   542  enum : uint { HCBT_KEYSKIPPED = 7 }
   543  enum : uint { HCBT_SYSCOMMAND = 8 }
   544  enum : uint { HCBT_SETFOCUS = 9 }
   545  
   546  struct tagCBT_CREATEWNDA {
   547    tagCREATESTRUCTA *lpcs;
   548    HWND hwndInsertAfter;
   549  }
   550  alias tagCBT_CREATEWNDA CBT_CREATEWNDA;
   551  alias tagCBT_CREATEWNDA* LPCBT_CREATEWNDA;
   552  
   553  struct tagCBT_CREATEWNDW {
   554    tagCREATESTRUCTW *lpcs;
   555    HWND hwndInsertAfter;
   556  }
   557  alias tagCBT_CREATEWNDW CBT_CREATEWNDW;
   558  alias tagCBT_CREATEWNDW* LPCBT_CREATEWNDW;
   559  
   560  // #ifdef UNICODE
   561  // ...
   562  // #else
   563  alias CBT_CREATEWNDA CBT_CREATEWND;
   564  alias LPCBT_CREATEWNDA LPCBT_CREATEWND;
   565  // #endif // UNICODE
   566  
   567  struct tagCBTACTIVATESTRUCT {
   568    BOOL fMouse;
   569    HWND hWndActive;
   570  }
   571  alias tagCBTACTIVATESTRUCT CBTACTIVATESTRUCT;
   572  alias tagCBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT;
   573  
   574  // #if(_WIN32_WINNT >= 0x0501)
   575  
   576  struct tagWTSSESSION_NOTIFICATION {
   577    DWORD cbSize;
   578    DWORD dwSessionId;
   579  }
   580  alias tagWTSSESSION_NOTIFICATION WTSSESSION_NOTIFICATION;
   581  alias tagWTSSESSION_NOTIFICATION* PWTSSESSION_NOTIFICATION;
   582  
   583  enum : uint { WTS_CONSOLE_CONNECT = 0x1 }
   584  enum : uint { WTS_CONSOLE_DISCONNECT = 0x2 }
   585  enum : uint { WTS_REMOTE_CONNECT = 0x3 }
   586  enum : uint { WTS_REMOTE_DISCONNECT = 0x4 }
   587  enum : uint { WTS_SESSION_LOGON = 0x5 }
   588  enum : uint { WTS_SESSION_LOGOFF = 0x6 }
   589  enum : uint { WTS_SESSION_LOCK = 0x7 }
   590  enum : uint { WTS_SESSION_UNLOCK = 0x8 }
   591  
   592  // #endif /* _WIN32_WINNT >= 0x0501 */
   593  
   594  enum : uint { MSGF_DIALOGBOX = 0 }
   595  enum : uint { MSGF_MESSAGEBOX = 1 }
   596  enum : uint { MSGF_MENU = 2 }
   597  enum : uint { MSGF_SCROLLBAR = 5 }
   598  enum : uint { MSGF_NEXTWINDOW = 6 }
   599  enum : uint { MSGF_MAX = 8 }
   600  enum : uint { MSGF_USER = 4096 }
   601  
   602  enum : uint { HSHELL_WINDOWCREATED = 1 }
   603  enum : uint { HSHELL_WINDOWDESTROYED = 2 }
   604  enum : uint { HSHELL_ACTIVATESHELLWINDOW = 3 }
   605  
   606  // #if(WINVER >= 0x0400)
   607  enum : uint { HSHELL_WINDOWACTIVATED = 4 }
   608  enum : uint { HSHELL_GETMINRECT = 5 }
   609  enum : uint { HSHELL_REDRAW = 6 }
   610  enum : uint { HSHELL_TASKMAN = 7 }
   611  enum : uint { HSHELL_LANGUAGE = 8 }
   612  // #endif /* WINVER >= 0x0400 */
   613  // #if(_WIN32_WINNT >= 0x0500)
   614  enum : uint { HSHELL_ACCESSIBILITYSTATE = 11 }
   615  enum : uint { HSHELL_APPCOMMAND = 12 }
   616  // #endif /* _WIN32_WINNT >= 0x0500 */
   617  
   618  // #if(_WIN32_WINNT >= 0x0501)
   619  enum : uint { HSHELL_WINDOWREPLACED = 13 }
   620  // #endif /* _WIN32_WINNT >= 0x0501 */
   621  
   622  // #if(_WIN32_WINNT >= 0x0500)
   623  
   624  enum : uint { ACCESS_STICKYKEYS = 0x0001 }
   625  enum : uint { ACCESS_FILTERKEYS = 0x0002 }
   626  enum : uint { ACCESS_MOUSEKEYS = 0x0003 }
   627  
   628  enum : uint { APPCOMMAND_BROWSER_BACKWARD = 1 }
   629  enum : uint { APPCOMMAND_BROWSER_FORWARD = 2 }
   630  enum : uint { APPCOMMAND_BROWSER_REFRESH = 3 }
   631  enum : uint { APPCOMMAND_BROWSER_STOP = 4 }
   632  enum : uint { APPCOMMAND_BROWSER_SEARCH = 5 }
   633  enum : uint { APPCOMMAND_BROWSER_FAVORITES = 6 }
   634  enum : uint { APPCOMMAND_BROWSER_HOME = 7 }
   635  enum : uint { APPCOMMAND_VOLUME_MUTE = 8 }
   636  enum : uint { APPCOMMAND_VOLUME_DOWN = 9 }
   637  enum : uint { APPCOMMAND_VOLUME_UP = 10 }
   638  enum : uint { APPCOMMAND_MEDIA_NEXTTRACK = 11 }
   639  enum : uint { APPCOMMAND_MEDIA_PREVIOUSTRACK = 12 }
   640  enum : uint { APPCOMMAND_MEDIA_STOP = 13 }
   641  enum : uint { APPCOMMAND_MEDIA_PLAY_PAUSE = 14 }
   642  enum : uint { APPCOMMAND_LAUNCH_MAIL = 15 }
   643  enum : uint { APPCOMMAND_LAUNCH_MEDIA_SELECT = 16 }
   644  enum : uint { APPCOMMAND_LAUNCH_APP1 = 17 }
   645  enum : uint { APPCOMMAND_LAUNCH_APP2 = 18 }
   646  enum : uint { APPCOMMAND_BASS_DOWN = 19 }
   647  enum : uint { APPCOMMAND_BASS_BOOST = 20 }
   648  enum : uint { APPCOMMAND_BASS_UP = 21 }
   649  enum : uint { APPCOMMAND_TREBLE_DOWN = 22 }
   650  enum : uint { APPCOMMAND_TREBLE_UP = 23 }
   651  // #if(_WIN32_WINNT >= 0x0501)
   652  enum : uint { APPCOMMAND_MICROPHONE_VOLUME_MUTE = 24 }
   653  enum : uint { APPCOMMAND_MICROPHONE_VOLUME_DOWN = 25 }
   654  enum : uint { APPCOMMAND_MICROPHONE_VOLUME_UP = 26 }
   655  enum : uint { APPCOMMAND_HELP = 27 }
   656  enum : uint { APPCOMMAND_FIND = 28 }
   657  enum : uint { APPCOMMAND_NEW = 29 }
   658  enum : uint { APPCOMMAND_OPEN = 30 }
   659  enum : uint { APPCOMMAND_CLOSE = 31 }
   660  enum : uint { APPCOMMAND_SAVE = 32 }
   661  enum : uint { APPCOMMAND_PRINT = 33 }
   662  enum : uint { APPCOMMAND_UNDO = 34 }
   663  enum : uint { APPCOMMAND_REDO = 35 }
   664  enum : uint { APPCOMMAND_COPY = 36 }
   665  enum : uint { APPCOMMAND_CUT = 37 }
   666  enum : uint { APPCOMMAND_PASTE = 38 }
   667  enum : uint { APPCOMMAND_REPLY_TO_MAIL = 39 }
   668  enum : uint { APPCOMMAND_FORWARD_MAIL = 40 }
   669  enum : uint { APPCOMMAND_SEND_MAIL = 41 }
   670  enum : uint { APPCOMMAND_SPELL_CHECK = 42 }
   671  enum : uint { APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43 }
   672  enum : uint { APPCOMMAND_MIC_ON_OFF_TOGGLE = 44 }
   673  enum : uint { APPCOMMAND_CORRECTION_LIST = 45 }
   674  // #endif /* _WIN32_WINNT >= 0x0501 */
   675  
   676  enum : uint { FAPPCOMMAND_MOUSE = 0x8000 }
   677  enum : uint { FAPPCOMMAND_KEY = 0 }
   678  enum : uint { FAPPCOMMAND_OEM = 0x1000 }
   679  enum : uint { FAPPCOMMAND_MASK = 0xF000 }
   680  
   681  // #define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
   682  // #define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
   683  // #define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
   684  // #define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
   685  // #define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
   686  // #endif /* _WIN32_WINNT >= 0x0500 */
   687  
   688  struct tagEVENTMSG {
   689    UINT message;
   690    UINT paramL;
   691    UINT paramH;
   692    DWORD time;
   693    HWND hwnd;
   694  }
   695  alias tagEVENTMSG EVENTMSG;
   696  alias tagEVENTMSG* PEVENTMSGMSG;
   697  alias tagEVENTMSG* NPEVENTMSGMSG;
   698  alias tagEVENTMSG* LPEVENTMSGMSG;
   699  
   700  alias tagEVENTMSG* PEVENTMSG;
   701  alias tagEVENTMSG* NPEVENTMSG;
   702  alias tagEVENTMSG* LPEVENTMSG;
   703  
   704  struct tagCWPSTRUCT {
   705    LPARAM lParam;
   706    WPARAM wParam;
   707    UINT message;
   708    HWND hwnd;
   709  }
   710  alias tagCWPSTRUCT CWPSTRUCT;
   711  alias tagCWPSTRUCT* PCWPSTRUCT;
   712  alias tagCWPSTRUCT* NPCWPSTRUCT;
   713  alias tagCWPSTRUCT* LPCWPSTRUCT;
   714  
   715  // #if(WINVER >= 0x0400)
   716  
   717  struct tagCWPRETSTRUCT {
   718    LRESULT lResult;
   719    LPARAM lParam;
   720    WPARAM wParam;
   721    UINT message;
   722    HWND hwnd;
   723  }
   724  alias tagCWPRETSTRUCT CWPRETSTRUCT;
   725  alias tagCWPRETSTRUCT* PCWPRETSTRUCT;
   726  alias tagCWPRETSTRUCT* NPCWPRETSTRUCT;
   727  alias tagCWPRETSTRUCT* LPCWPRETSTRUCT;
   728  
   729  // #endif /* WINVER >= 0x0400 */
   730  
   731  // #if (_WIN32_WINNT >= 0x0400)
   732  
   733  enum : uint { LLKHF_EXTENDED = KF_EXTENDED >> 8 }
   734  enum : uint { LLKHF_INJECTED = 0x00000010 }
   735  enum : uint { LLKHF_ALTDOWN = KF_ALTDOWN >> 8 }
   736  enum : uint { LLKHF_UP = KF_UP >> 8 }
   737  
   738  enum : uint { LLMHF_INJECTED = 0x00000001 }
   739  
   740  struct tagKBDLLHOOKSTRUCT {
   741    DWORD vkCode;
   742    DWORD scanCode;
   743    DWORD flags;
   744    DWORD time;
   745    ULONG_PTR dwExtraInfo;
   746  }
   747  alias tagKBDLLHOOKSTRUCT KBDLLHOOKSTRUCT;
   748  alias tagKBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT;
   749  alias tagKBDLLHOOKSTRUCT* PKBDLLHOOKSTRUCT;
   750  
   751  struct tagMSLLHOOKSTRUCT {
   752    POINT pt;
   753    DWORD mouseData;
   754    DWORD flags;
   755    DWORD time;
   756    ULONG_PTR dwExtraInfo;
   757  }
   758  alias tagMSLLHOOKSTRUCT MSLLHOOKSTRUCT;
   759  alias tagMSLLHOOKSTRUCT* LPMSLLHOOKSTRUCT;
   760  alias tagMSLLHOOKSTRUCT* PMSLLHOOKSTRUCT;
   761  
   762  // #endif // (_WIN32_WINNT >= 0x0400)
   763  
   764  struct tagDEBUGHOOKINFO {
   765    DWORD idThread;
   766    DWORD idThreadInstaller;
   767    LPARAM lParam;
   768    WPARAM wParam;
   769    int code;
   770  }
   771  alias tagDEBUGHOOKINFO DEBUGHOOKINFO;
   772  alias tagDEBUGHOOKINFO* PDEBUGHOOKINFO;
   773  alias tagDEBUGHOOKINFO* NPDEBUGHOOKINFO;
   774  alias tagDEBUGHOOKINFO* LPDEBUGHOOKINFO;
   775  
   776  struct tagMOUSEHOOKSTRUCT {
   777    POINT pt;
   778    HWND hwnd;
   779    UINT wHitTestCode;
   780    ULONG_PTR dwExtraInfo;
   781  }
   782  alias tagMOUSEHOOKSTRUCT MOUSEHOOKSTRUCT;
   783  alias tagMOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT;
   784  alias tagMOUSEHOOKSTRUCT* PMOUSEHOOKSTRUCT;
   785  
   786  // #if(_WIN32_WINNT >= 0x0500)
   787  // #ifdef __cplusplus
   788  struct tagMOUSEHOOKSTRUCTEX {
   789    POINT pt;
   790    HWND hwnd;
   791    UINT wHitTestCode;
   792    ULONG_PTR dwExtraInfo;
   793    DWORD mouseData;
   794  }
   795  alias tagMOUSEHOOKSTRUCTEX MOUSEHOOKSTRUCTEX;
   796  alias tagMOUSEHOOKSTRUCTEX* LPMOUSEHOOKSTRUCTEX;
   797  alias tagMOUSEHOOKSTRUCTEX* PMOUSEHOOKSTRUCTEX;
   798  
   799  // #else // ndef __cplusplus
   800  // ...
   801  // #endif
   802  // #endif /* _WIN32_WINNT >= 0x0500 */
   803  
   804  // #if(WINVER >= 0x0400)
   805  
   806  struct tagHARDWAREHOOKSTRUCT {
   807    HWND hwnd;
   808    UINT message;
   809    WPARAM wParam;
   810    LPARAM lParam;
   811  }
   812  alias tagHARDWAREHOOKSTRUCT HARDWAREHOOKSTRUCT;
   813  alias tagHARDWAREHOOKSTRUCT* LPHARDWAREHOOKSTRUCT;
   814  alias tagHARDWAREHOOKSTRUCT* PHARDWAREHOOKSTRUCT;
   815  
   816  // #endif /* WINVER >= 0x0400 */
   817  // #endif /* !NOWH */
   818  
   819  enum : uint { HKL_PREV = 0 }
   820  enum : uint { HKL_NEXT = 1 }
   821  
   822  enum : uint { KLF_ACTIVATE = 0x00000001 }
   823  enum : uint { KLF_SUBSTITUTE_OK = 0x00000002 }
   824  enum : uint { KLF_REORDER = 0x00000008 }
   825  // #if(WINVER >= 0x0400)
   826  enum : uint { KLF_REPLACELANG = 0x00000010 }
   827  enum : uint { KLF_NOTELLSHELL = 0x00000080 }
   828  // #endif /* WINVER >= 0x0400 */
   829  enum : uint { KLF_SETFORPROCESS = 0x00000100 }
   830  // #if(_WIN32_WINNT >= 0x0500)
   831  enum : uint { KLF_SHIFTLOCK = 0x00010000 }
   832  enum : uint { KLF_RESET = 0x40000000 }
   833  // #endif /* _WIN32_WINNT >= 0x0500 */
   834  
   835  // #if(WINVER >= 0x0500)
   836  
   837  enum : uint { INPUTLANGCHANGE_SYSCHARSET = 0x0001 }
   838  enum : uint { INPUTLANGCHANGE_FORWARD = 0x0002 }
   839  enum : uint { INPUTLANGCHANGE_BACKWARD = 0x0004 }
   840  // #endif /* WINVER >= 0x0500 */
   841  
   842  enum : uint { KL_NAMELENGTH = 9 }
   843  
   844  extern(Windows) export HKL LoadKeyboardLayoutA(
   845    LPCSTR pwszKLID,
   846    UINT Flags);
   847  extern(Windows) export HKL LoadKeyboardLayoutW(
   848    LPCWSTR pwszKLID,
   849    UINT Flags);
   850  // #ifdef UNICODE
   851  // #...
   852  // #else
   853  alias LoadKeyboardLayoutA LoadKeyboardLayout;
   854  // #endif // !UNICODE
   855  
   856  // #if(WINVER >= 0x0400)
   857  extern(Windows) export HKL ActivateKeyboardLayout(
   858    HKL hkl,
   859    UINT Flags);
   860  // #else
   861  // ...
   862  // #endif /* WINVER >= 0x0400 */
   863  
   864  // #if(WINVER >= 0x0400)
   865  extern(Windows) export int ToUnicodeEx(
   866    UINT wVirtKey,
   867    UINT wScanCode,
   868    BYTE *lpKeyState,
   869    LPWSTR pwszBuff,
   870    int cchBuff,
   871    UINT wFlags,
   872    HKL dwhkl);
   873  // #endif /* WINVER >= 0x0400 */
   874  
   875  extern(Windows) export BOOL UnloadKeyboardLayout(
   876    HKL hkl);
   877  
   878  extern(Windows) export BOOL GetKeyboardLayoutNameA(
   879    LPSTR pwszKLID);
   880  extern(Windows) export BOOL GetKeyboardLayoutNameW(
   881    LPWSTR pwszKLID);
   882  // #ifdef UNICODE
   883  // #...
   884  // #else
   885  alias GetKeyboardLayoutNameA GetKeyboardLayoutName;
   886  // #endif // !UNICODE
   887  
   888  // #if(WINVER >= 0x0400)
   889  extern(Windows) export int GetKeyboardLayoutList(
   890    int nBuff,
   891    HKL *lpList);
   892  
   893  extern(Windows) export HKL GetKeyboardLayout(
   894    DWORD idThread
   895  );
   896  // #endif /* WINVER >= 0x0400 */
   897  
   898  // #if(WINVER >= 0x0500)
   899  
   900  struct tagMOUSEMOVEPOINT {
   901    int x;
   902    int y;
   903    DWORD time;
   904    ULONG_PTR dwExtraInfo;
   905  }
   906  alias tagMOUSEMOVEPOINT MOUSEMOVEPOINT;
   907  alias tagMOUSEMOVEPOINT* PMOUSEMOVEPOINT;
   908  alias tagMOUSEMOVEPOINT* LPMOUSEMOVEPOINT;
   909  
   910  enum : uint { GMMP_USE_DISPLAY_POINTS = 1 }
   911  enum : uint { GMMP_USE_HIGH_RESOLUTION_POINTS = 2 }
   912  
   913  extern(Windows) export int GetMouseMovePointsEx(
   914    UINT cbSize,
   915    LPMOUSEMOVEPOINT lppt,
   916    LPMOUSEMOVEPOINT lpptBuf,
   917    int nBufPoints,
   918    DWORD resolution
   919  );
   920  
   921  // #endif /* WINVER >= 0x0500 */
   922  
   923  // #ifndef NODESKTOP
   924  
   925  enum : uint { DESKTOP_READOBJECTS = 0x0001 }
   926  enum : uint { DESKTOP_CREATEWINDOW = 0x0002 }
   927  enum : uint { DESKTOP_CREATEMENU = 0x0004 }
   928  enum : uint { DESKTOP_HOOKCONTROL = 0x0008 }
   929  enum : uint { DESKTOP_JOURNALRECORD = 0x0010 }
   930  enum : uint { DESKTOP_JOURNALPLAYBACK = 0x0020 }
   931  enum : uint { DESKTOP_ENUMERATE = 0x0040 }
   932  enum : uint { DESKTOP_WRITEOBJECTS = 0x0080 }
   933  enum : uint { DESKTOP_SWITCHDESKTOP = 0x0100 }
   934  
   935  enum : uint { DF_ALLOWOTHERACCOUNTHOOK = 0x0001 }
   936  
   937  // #ifdef _WINGDI_
   938  // #ifndef NOGDI
   939  
   940  // ...
   941  // #ifdef UNICODE
   942  // #...
   943  // #else
   944  // #...
   945  // #endif // !UNICODE
   946  
   947  // #endif /* NOGDI */
   948  // #endif /* _WINGDI_ */
   949  
   950  extern(Windows) export HDESK OpenDesktopA(
   951    LPCSTR lpszDesktop,
   952    DWORD dwFlags,
   953    BOOL fInherit,
   954    ACCESS_MASK dwDesiredAccess);
   955  extern(Windows) export HDESK OpenDesktopW(
   956    LPCWSTR lpszDesktop,
   957    DWORD dwFlags,
   958    BOOL fInherit,
   959    ACCESS_MASK dwDesiredAccess);
   960  // #ifdef UNICODE
   961  // #...
   962  // #else
   963  alias OpenDesktopA OpenDesktop;
   964  // #endif // !UNICODE
   965  
   966  extern(Windows) export HDESK OpenInputDesktop(
   967    DWORD dwFlags,
   968    BOOL fInherit,
   969    ACCESS_MASK dwDesiredAccess);
   970  
   971  extern(Windows) export BOOL EnumDesktopsA(
   972    HWINSTA hwinsta,
   973    DESKTOPENUMPROCA lpEnumFunc,
   974    LPARAM lParam);
   975  extern(Windows) export BOOL EnumDesktopsW(
   976    HWINSTA hwinsta,
   977    DESKTOPENUMPROCW lpEnumFunc,
   978    LPARAM lParam);
   979  // #ifdef UNICODE
   980  // #...
   981  // #else
   982  alias EnumDesktopsA EnumDesktops;
   983  // #endif // !UNICODE
   984  
   985  extern(Windows) export BOOL EnumDesktopWindows(
   986    HDESK hDesktop,
   987    WNDENUMPROC lpfn,
   988    LPARAM lParam);
   989  
   990  extern(Windows) export BOOL SwitchDesktop(
   991    HDESK hDesktop);
   992  
   993  extern(Windows) export BOOL SetThreadDesktop(
   994    HDESK hDesktop);
   995  
   996  extern(Windows) export BOOL CloseDesktop(
   997    HDESK hDesktop);
   998  
   999  extern(Windows) export HDESK GetThreadDesktop(
  1000    DWORD dwThreadId);
  1001  // #endif  /* !NODESKTOP */
  1002  
  1003  // #ifndef NOWINDOWSTATION
  1004  
  1005  enum : uint { WINSTA_ENUMDESKTOPS = 0x0001 }
  1006  enum : uint { WINSTA_READATTRIBUTES = 0x0002 }
  1007  enum : uint { WINSTA_ACCESSCLIPBOARD = 0x0004 }
  1008  enum : uint { WINSTA_CREATEDESKTOP = 0x0008 }
  1009  enum : uint { WINSTA_WRITEATTRIBUTES = 0x0010 }
  1010  enum : uint { WINSTA_ACCESSGLOBALATOMS = 0x0020 }
  1011  enum : uint { WINSTA_EXITWINDOWS = 0x0040 }
  1012  enum : uint { WINSTA_ENUMERATE = 0x0100 }
  1013  enum : uint { WINSTA_READSCREEN = 0x0200 }
  1014  
  1015  enum : uint { WSF_VISIBLE = 0x0001 }
  1016  
  1017  extern(Windows) export HWINSTA CreateWindowStationA(
  1018    LPCSTR lpwinsta,
  1019    DWORD dwReserved,
  1020    ACCESS_MASK dwDesiredAccess,
  1021    LPSECURITY_ATTRIBUTES lpsa);
  1022  extern(Windows) export HWINSTA CreateWindowStationW(
  1023    LPCWSTR lpwinsta,
  1024    DWORD dwReserved,
  1025    ACCESS_MASK dwDesiredAccess,
  1026    LPSECURITY_ATTRIBUTES lpsa);
  1027  // #ifdef UNICODE
  1028  // #...
  1029  // #else
  1030  alias CreateWindowStationA CreateWindowStation;
  1031  // #endif // !UNICODE
  1032  
  1033  extern(Windows) export HWINSTA OpenWindowStationA(
  1034    LPCSTR lpszWinSta,
  1035    BOOL fInherit,
  1036    ACCESS_MASK dwDesiredAccess);
  1037  extern(Windows) export HWINSTA OpenWindowStationW(
  1038    LPCWSTR lpszWinSta,
  1039    BOOL fInherit,
  1040    ACCESS_MASK dwDesiredAccess);
  1041  // #ifdef UNICODE
  1042  // #...
  1043  // #else
  1044  alias OpenWindowStationA OpenWindowStation;
  1045  // #endif // !UNICODE
  1046  
  1047  extern(Windows) export BOOL EnumWindowStationsA(
  1048    WINSTAENUMPROCA lpEnumFunc,
  1049    LPARAM lParam);
  1050  extern(Windows) export BOOL EnumWindowStationsW(
  1051    WINSTAENUMPROCW lpEnumFunc,
  1052    LPARAM lParam);
  1053  // #ifdef UNICODE
  1054  // #...
  1055  // #else
  1056  alias EnumWindowStationsA EnumWindowStations;
  1057  // #endif // !UNICODE
  1058  
  1059  extern(Windows) export BOOL CloseWindowStation(
  1060    HWINSTA hWinSta);
  1061  
  1062  extern(Windows) export BOOL SetProcessWindowStation(
  1063    HWINSTA hWinSta);
  1064  
  1065  extern(Windows) export HWINSTA GetProcessWindowStation();
  1066  // #endif  /* !NOWINDOWSTATION */
  1067  
  1068  // #ifndef NOSECURITY
  1069  
  1070  extern(Windows) export BOOL SetUserObjectSecurity(
  1071    HANDLE hObj,
  1072    PSECURITY_INFORMATION pSIRequested,
  1073    PSECURITY_DESCRIPTOR pSID);
  1074  
  1075  extern(Windows) export BOOL GetUserObjectSecurity(
  1076    HANDLE hObj,
  1077    PSECURITY_INFORMATION pSIRequested,
  1078    PSECURITY_DESCRIPTOR pSID,
  1079    DWORD nLength,
  1080    LPDWORD lpnLengthNeeded);
  1081  
  1082  enum : uint { UOI_FLAGS = 1 }
  1083  enum : uint { UOI_NAME = 2 }
  1084  enum : uint { UOI_TYPE = 3 }
  1085  enum : uint { UOI_USER_SID = 4 }
  1086  
  1087  struct tagUSEROBJECTFLAGS {
  1088    BOOL fInherit;
  1089    BOOL fReserved;
  1090    DWORD dwFlags;
  1091  }
  1092  alias tagUSEROBJECTFLAGS USEROBJECTFLAGS;
  1093  alias tagUSEROBJECTFLAGS* PUSEROBJECTFLAGS;
  1094  
  1095  extern(Windows) export BOOL GetUserObjectInformationA(
  1096    HANDLE hObj,
  1097    int nIndex,
  1098    PVOID pvInfo,
  1099    DWORD nLength,
  1100    LPDWORD lpnLengthNeeded);
  1101  extern(Windows) export BOOL GetUserObjectInformationW(
  1102    HANDLE hObj,
  1103    int nIndex,
  1104    PVOID pvInfo,
  1105    DWORD nLength,
  1106    LPDWORD lpnLengthNeeded);
  1107  // #ifdef UNICODE
  1108  // #...
  1109  // #else
  1110  alias GetUserObjectInformationA GetUserObjectInformation;
  1111  // #endif // !UNICODE
  1112  
  1113  extern(Windows) export BOOL SetUserObjectInformationA(
  1114    HANDLE hObj,
  1115    int nIndex,
  1116    PVOID pvInfo,
  1117    DWORD nLength);
  1118  extern(Windows) export BOOL SetUserObjectInformationW(
  1119    HANDLE hObj,
  1120    int nIndex,
  1121    PVOID pvInfo,
  1122    DWORD nLength);
  1123  // #ifdef UNICODE
  1124  // #...
  1125  // #else
  1126  alias SetUserObjectInformationA SetUserObjectInformation;
  1127  // #endif // !UNICODE
  1128  
  1129  // #endif  /* !NOSECURITY */
  1130  
  1131  // #if(WINVER >= 0x0400)
  1132  struct tagWNDCLASSEXA {
  1133    UINT cbSize;
  1134    UINT style;
  1135    WNDPROC lpfnWndProc;
  1136    int cbClsExtra;
  1137    int cbWndExtra;
  1138    HINSTANCE hInstance;
  1139    HICON hIcon;
  1140    HCURSOR hCursor;
  1141    HBRUSH hbrBackground;
  1142    LPCSTR lpszMenuName;
  1143    LPCSTR lpszClassName;
  1144    HICON hIconSm;
  1145  }
  1146  alias tagWNDCLASSEXA WNDCLASSEXA;
  1147  alias tagWNDCLASSEXA* PWNDCLASSEXA;
  1148  alias tagWNDCLASSEXA* NPWNDCLASSEXA;
  1149  alias tagWNDCLASSEXA* LPWNDCLASSEXA;
  1150  
  1151  struct tagWNDCLASSEXW {
  1152    UINT cbSize;
  1153    UINT style;
  1154    WNDPROC lpfnWndProc;
  1155    int cbClsExtra;
  1156    int cbWndExtra;
  1157    HINSTANCE hInstance;
  1158    HICON hIcon;
  1159    HCURSOR hCursor;
  1160    HBRUSH hbrBackground;
  1161    LPCWSTR lpszMenuName;
  1162    LPCWSTR lpszClassName;
  1163    HICON hIconSm;
  1164  }
  1165  alias tagWNDCLASSEXW WNDCLASSEXW;
  1166  alias tagWNDCLASSEXW* PWNDCLASSEXW;
  1167  alias tagWNDCLASSEXW* NPWNDCLASSEXW;
  1168  alias tagWNDCLASSEXW* LPWNDCLASSEXW;
  1169  
  1170  // #ifdef UNICODE
  1171  // ...
  1172  // #else
  1173  alias WNDCLASSEXA WNDCLASSEX;
  1174  alias PWNDCLASSEXA PWNDCLASSEX;
  1175  alias NPWNDCLASSEXA NPWNDCLASSEX;
  1176  alias LPWNDCLASSEXA LPWNDCLASSEX;
  1177  // #endif // UNICODE
  1178  // #endif /* WINVER >= 0x0400 */
  1179  
  1180  struct tagWNDCLASSA {
  1181    UINT style;
  1182    WNDPROC lpfnWndProc;
  1183    int cbClsExtra;
  1184    int cbWndExtra;
  1185    HINSTANCE hInstance;
  1186    HICON hIcon;
  1187    HCURSOR hCursor;
  1188    HBRUSH hbrBackground;
  1189    LPCSTR lpszMenuName;
  1190    LPCSTR lpszClassName;
  1191  }
  1192  alias tagWNDCLASSA WNDCLASSA;
  1193  alias tagWNDCLASSA* PWNDCLASSA;
  1194  alias tagWNDCLASSA* NPWNDCLASSA;
  1195  alias tagWNDCLASSA* LPWNDCLASSA;
  1196  
  1197  struct tagWNDCLASSW {
  1198    UINT style;
  1199    WNDPROC lpfnWndProc;
  1200    int cbClsExtra;
  1201    int cbWndExtra;
  1202    HINSTANCE hInstance;
  1203    HICON hIcon;
  1204    HCURSOR hCursor;
  1205    HBRUSH hbrBackground;
  1206    LPCWSTR lpszMenuName;
  1207    LPCWSTR lpszClassName;
  1208  }
  1209  alias tagWNDCLASSW WNDCLASSW;
  1210  alias tagWNDCLASSW* PWNDCLASSW;
  1211  alias tagWNDCLASSW* NPWNDCLASSW;
  1212  alias tagWNDCLASSW* LPWNDCLASSW;
  1213  
  1214  // #ifdef UNICODE
  1215  // ...
  1216  // #else
  1217  alias WNDCLASSA WNDCLASS;
  1218  alias PWNDCLASSA PWNDCLASS;
  1219  alias NPWNDCLASSA NPWNDCLASS;
  1220  alias LPWNDCLASSA LPWNDCLASS;
  1221  // #endif // UNICODE
  1222  
  1223  // #ifndef NOMSG
  1224  
  1225  struct tagMSG {
  1226    HWND hwnd;
  1227    UINT message;
  1228    WPARAM wParam;
  1229    LPARAM lParam;
  1230    DWORD time;
  1231    POINT pt;
  1232  // #ifdef _MAC
  1233  // ...
  1234  // #endif
  1235  }
  1236  alias tagMSG MSG;
  1237  alias tagMSG* PMSG;
  1238  alias tagMSG* NPMSG;
  1239  alias tagMSG* LPMSG;
  1240  
  1241  // #define POINTSTOPOINT(pt, pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
  1242  
  1243  // #define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y)))
  1244  alias MAKELONG MAKEWPARAM;
  1245  alias MAKELONG MAKELPARAM;
  1246  alias MAKELONG MAKELRESULT;
  1247  
  1248  // #endif /* !NOMSG */
  1249  
  1250  // #ifndef NOWINOFFSETS
  1251  
  1252  enum { GWL_WNDPROC = -4 }
  1253  enum { GWL_HINSTANCE = -6 }
  1254  enum { GWL_HWNDPARENT = -8 }
  1255  enum { GWL_STYLE = -16 }
  1256  enum { GWL_EXSTYLE = -20 }
  1257  enum { GWL_USERDATA = -21 }
  1258  enum { GWL_ID = -12 }
  1259  
  1260  // #ifdef _WIN64
  1261  
  1262  // #...
  1263  // #...
  1264  // #...
  1265  // #...
  1266  
  1267  // #endif /* _WIN64 */
  1268  
  1269  enum { GWLP_WNDPROC = -4 }
  1270  enum { GWLP_HINSTANCE = -6 }
  1271  enum { GWLP_HWNDPARENT = -8 }
  1272  enum { GWLP_USERDATA = -21 }
  1273  enum { GWLP_ID = -12 }
  1274  
  1275  enum { GCL_MENUNAME = -8 }
  1276  enum { GCL_HBRBACKGROUND = -10 }
  1277  enum { GCL_HCURSOR = -12 }
  1278  enum { GCL_HICON = -14 }
  1279  enum { GCL_HMODULE = -16 }
  1280  enum { GCL_CBWNDEXTRA = -18 }
  1281  enum { GCL_CBCLSEXTRA = -20 }
  1282  enum { GCL_WNDPROC = -24 }
  1283  enum { GCL_STYLE = -26 }
  1284  enum { GCW_ATOM = -32 }
  1285  
  1286  // #if(WINVER >= 0x0400)
  1287  enum { GCL_HICONSM = -34 }
  1288  // #endif /* WINVER >= 0x0400 */
  1289  
  1290  // #ifdef _WIN64
  1291  
  1292  // #...
  1293  // #...
  1294  // #...
  1295  // #...
  1296  // #...
  1297  // #...
  1298  // #...
  1299  
  1300  // #endif /* _WIN64 */
  1301  
  1302  enum { GCLP_MENUNAME = -8 }
  1303  enum { GCLP_HBRBACKGROUND = -10 }
  1304  enum { GCLP_HCURSOR = -12 }
  1305  enum { GCLP_HICON = -14 }
  1306  enum { GCLP_HMODULE = -16 }
  1307  enum { GCLP_WNDPROC = -24 }
  1308  enum { GCLP_HICONSM = -34 }
  1309  
  1310  // #endif /* !NOWINOFFSETS */
  1311  
  1312  // #ifndef NOWINMESSAGES
  1313  
  1314  enum : uint { WM_NULL = 0x0000 }
  1315  enum : uint { WM_CREATE = 0x0001 }
  1316  enum : uint { WM_DESTROY = 0x0002 }
  1317  enum : uint { WM_MOVE = 0x0003 }
  1318  enum : uint { WM_SIZE = 0x0005 }
  1319  
  1320  enum : uint { WM_ACTIVATE = 0x0006 }
  1321  
  1322  enum : uint { WA_INACTIVE = 0 }
  1323  enum : uint { WA_ACTIVE = 1 }
  1324  enum : uint { WA_CLICKACTIVE = 2 }
  1325  
  1326  enum : uint { WM_SETFOCUS = 0x0007 }
  1327  enum : uint { WM_KILLFOCUS = 0x0008 }
  1328  enum : uint { WM_ENABLE = 0x000A }
  1329  enum : uint { WM_SETREDRAW = 0x000B }
  1330  enum : uint { WM_SETTEXT = 0x000C }
  1331  enum : uint { WM_GETTEXT = 0x000D }
  1332  enum : uint { WM_GETTEXTLENGTH = 0x000E }
  1333  enum : uint { WM_PAINT = 0x000F }
  1334  enum : uint { WM_CLOSE = 0x0010 }
  1335  // #ifndef _WIN32_WCE
  1336  enum : uint { WM_QUERYENDSESSION = 0x0011 }
  1337  enum : uint { WM_QUERYOPEN = 0x0013 }
  1338  enum : uint { WM_ENDSESSION = 0x0016 }
  1339  // #endif
  1340  enum : uint { WM_QUIT = 0x0012 }
  1341  enum : uint { WM_ERASEBKGND = 0x0014 }
  1342  enum : uint { WM_SYSCOLORCHANGE = 0x0015 }
  1343  enum : uint { WM_SHOWWINDOW = 0x0018 }
  1344  enum : uint { WM_WININICHANGE = 0x001A }
  1345  // #if(WINVER >= 0x0400)
  1346  alias WM_WININICHANGE WM_SETTINGCHANGE;
  1347  // #endif /* WINVER >= 0x0400 */
  1348  
  1349  enum : uint { WM_DEVMODECHANGE = 0x001B }
  1350  enum : uint { WM_ACTIVATEAPP = 0x001C }
  1351  enum : uint { WM_FONTCHANGE = 0x001D }
  1352  enum : uint { WM_TIMECHANGE = 0x001E }
  1353  enum : uint { WM_CANCELMODE = 0x001F }
  1354  enum : uint { WM_SETCURSOR = 0x0020 }
  1355  enum : uint { WM_MOUSEACTIVATE = 0x0021 }
  1356  enum : uint { WM_CHILDACTIVATE = 0x0022 }
  1357  enum : uint { WM_QUEUESYNC = 0x0023 }
  1358  
  1359  enum : uint { WM_GETMINMAXINFO = 0x0024 }
  1360  
  1361  struct tagMINMAXINFO {
  1362    POINT ptReserved;
  1363    POINT ptMaxSize;
  1364    POINT ptMaxPosition;
  1365    POINT ptMinTrackSize;
  1366    POINT ptMaxTrackSize;
  1367  }
  1368  alias tagMINMAXINFO MINMAXINFO;
  1369  alias tagMINMAXINFO* PMINMAXINFO;
  1370  alias tagMINMAXINFO* LPMINMAXINFO;
  1371  
  1372  enum : uint { WM_PAINTICON = 0x0026 }
  1373  enum : uint { WM_ICONERASEBKGND = 0x0027 }
  1374  enum : uint { WM_NEXTDLGCTL = 0x0028 }
  1375  enum : uint { WM_SPOOLERSTATUS = 0x002A }
  1376  enum : uint { WM_DRAWITEM = 0x002B }
  1377  enum : uint { WM_MEASUREITEM = 0x002C }
  1378  enum : uint { WM_DELETEITEM = 0x002D }
  1379  enum : uint { WM_VKEYTOITEM = 0x002E }
  1380  enum : uint { WM_CHARTOITEM = 0x002F }
  1381  enum : uint { WM_SETFONT = 0x0030 }
  1382  enum : uint { WM_GETFONT = 0x0031 }
  1383  enum : uint { WM_SETHOTKEY = 0x0032 }
  1384  enum : uint { WM_GETHOTKEY = 0x0033 }
  1385  enum : uint { WM_QUERYDRAGICON = 0x0037 }
  1386  enum : uint { WM_COMPAREITEM = 0x0039 }
  1387  // #if(WINVER >= 0x0500)
  1388  // #ifndef _WIN32_WCE
  1389  enum : uint { WM_GETOBJECT = 0x003D }
  1390  // #endif
  1391  // #endif /* WINVER >= 0x0500 */
  1392  enum : uint { WM_COMPACTING = 0x0041 }
  1393  enum : uint { WM_COMMNOTIFY = 0x0044 }
  1394  enum : uint { WM_WINDOWPOSCHANGING = 0x0046 }
  1395  enum : uint { WM_WINDOWPOSCHANGED = 0x0047 }
  1396  
  1397  enum : uint { WM_POWER = 0x0048 }
  1398  
  1399  enum : uint { PWR_OK = 1 }
  1400  enum { PWR_FAIL = -1 }
  1401  enum : uint { PWR_SUSPENDREQUEST = 1 }
  1402  enum : uint { PWR_SUSPENDRESUME = 2 }
  1403  enum : uint { PWR_CRITICALRESUME = 3 }
  1404  
  1405  enum : uint { WM_COPYDATA = 0x004A }
  1406  enum : uint { WM_CANCELJOURNAL = 0x004B }
  1407  
  1408  struct tagCOPYDATASTRUCT {
  1409    ULONG_PTR dwData;
  1410    DWORD cbData;
  1411    PVOID lpData;
  1412  }
  1413  alias tagCOPYDATASTRUCT COPYDATASTRUCT;
  1414  alias tagCOPYDATASTRUCT* PCOPYDATASTRUCT;
  1415  
  1416  // #if(WINVER >= 0x0400)
  1417  struct tagMDINEXTMENU {
  1418    HMENU hmenuIn;
  1419    HMENU hmenuNext;
  1420    HWND hwndNext;
  1421  }
  1422  alias tagMDINEXTMENU MDINEXTMENU;
  1423  alias tagMDINEXTMENU* PMDINEXTMENU;
  1424  alias tagMDINEXTMENU* LPMDINEXTMENU;
  1425  
  1426  // #endif /* WINVER >= 0x0400 */
  1427  
  1428  // #if(WINVER >= 0x0400)
  1429  enum : uint { WM_NOTIFY = 0x004E }
  1430  enum : uint { WM_INPUTLANGCHANGEREQUEST = 0x0050 }
  1431  enum : uint { WM_INPUTLANGCHANGE = 0x0051 }
  1432  enum : uint { WM_TCARD = 0x0052 }
  1433  enum : uint { WM_HELP = 0x0053 }
  1434  enum : uint { WM_USERCHANGED = 0x0054 }
  1435  enum : uint { WM_NOTIFYFORMAT = 0x0055 }
  1436  
  1437  enum : uint { NFR_ANSI = 1 }
  1438  enum : uint { NFR_UNICODE = 2 }
  1439  enum : uint { NF_QUERY = 3 }
  1440  enum : uint { NF_REQUERY = 4 }
  1441  
  1442  enum : uint { WM_CONTEXTMENU = 0x007B }
  1443  enum : uint { WM_STYLECHANGING = 0x007C }
  1444  enum : uint { WM_STYLECHANGED = 0x007D }
  1445  enum : uint { WM_DISPLAYCHANGE = 0x007E }
  1446  enum : uint { WM_GETICON = 0x007F }
  1447  enum : uint { WM_SETICON = 0x0080 }
  1448  // #endif /* WINVER >= 0x0400 */
  1449  
  1450  enum : uint { WM_NCCREATE = 0x0081 }
  1451  enum : uint { WM_NCDESTROY = 0x0082 }
  1452  enum : uint { WM_NCCALCSIZE = 0x0083 }
  1453  enum : uint { WM_NCHITTEST = 0x0084 }
  1454  enum : uint { WM_NCPAINT = 0x0085 }
  1455  enum : uint { WM_NCACTIVATE = 0x0086 }
  1456  enum : uint { WM_GETDLGCODE = 0x0087 }
  1457  // #ifndef _WIN32_WCE
  1458  enum : uint { WM_SYNCPAINT = 0x0088 }
  1459  // #endif
  1460  enum : uint { WM_NCMOUSEMOVE = 0x00A0 }
  1461  enum : uint { WM_NCLBUTTONDOWN = 0x00A1 }
  1462  enum : uint { WM_NCLBUTTONUP = 0x00A2 }
  1463  enum : uint { WM_NCLBUTTONDBLCLK = 0x00A3 }
  1464  enum : uint { WM_NCRBUTTONDOWN = 0x00A4 }
  1465  enum : uint { WM_NCRBUTTONUP = 0x00A5 }
  1466  enum : uint { WM_NCRBUTTONDBLCLK = 0x00A6 }
  1467  enum : uint { WM_NCMBUTTONDOWN = 0x00A7 }
  1468  enum : uint { WM_NCMBUTTONUP = 0x00A8 }
  1469  enum : uint { WM_NCMBUTTONDBLCLK = 0x00A9 }
  1470  
  1471  // #if(_WIN32_WINNT >= 0x0500)
  1472  enum : uint { WM_NCXBUTTONDOWN = 0x00AB }
  1473  enum : uint { WM_NCXBUTTONUP = 0x00AC }
  1474  enum : uint { WM_NCXBUTTONDBLCLK = 0x00AD }
  1475  // #endif /* _WIN32_WINNT >= 0x0500 */
  1476  
  1477  // #if(_WIN32_WINNT >= 0x0501)
  1478  enum : uint { WM_INPUT = 0x00FF }
  1479  // #endif /* _WIN32_WINNT >= 0x0501 */
  1480  
  1481  enum : uint { WM_KEYFIRST = 0x0100 }
  1482  enum : uint { WM_KEYDOWN = 0x0100 }
  1483  enum : uint { WM_KEYUP = 0x0101 }
  1484  enum : uint { WM_CHAR = 0x0102 }
  1485  enum : uint { WM_DEADCHAR = 0x0103 }
  1486  enum : uint { WM_SYSKEYDOWN = 0x0104 }
  1487  enum : uint { WM_SYSKEYUP = 0x0105 }
  1488  enum : uint { WM_SYSCHAR = 0x0106 }
  1489  enum : uint { WM_SYSDEADCHAR = 0x0107 }
  1490  // #if(_WIN32_WINNT >= 0x0501)
  1491  enum : uint { WM_UNICHAR = 0x0109 }
  1492  enum : uint { WM_KEYLAST = 0x0109 }
  1493  enum : uint { UNICODE_NOCHAR = 0xFFFF }
  1494  // #else
  1495  // #...
  1496  // #endif /* _WIN32_WINNT >= 0x0501 */
  1497  
  1498  // #if(WINVER >= 0x0400)
  1499  enum : uint { WM_IME_STARTCOMPOSITION = 0x010D }
  1500  enum : uint { WM_IME_ENDCOMPOSITION = 0x010E }
  1501  enum : uint { WM_IME_COMPOSITION = 0x010F }
  1502  enum : uint { WM_IME_KEYLAST = 0x010F }
  1503  // #endif /* WINVER >= 0x0400 */
  1504  
  1505  enum : uint { WM_INITDIALOG = 0x0110 }
  1506  enum : uint { WM_COMMAND = 0x0111 }
  1507  enum : uint { WM_SYSCOMMAND = 0x0112 }
  1508  enum : uint { WM_TIMER = 0x0113 }
  1509  enum : uint { WM_HSCROLL = 0x0114 }
  1510  enum : uint { WM_VSCROLL = 0x0115 }
  1511  enum : uint { WM_INITMENU = 0x0116 }
  1512  enum : uint { WM_INITMENUPOPUP = 0x0117 }
  1513  enum : uint { WM_MENUSELECT = 0x011F }
  1514  enum : uint { WM_MENUCHAR = 0x0120 }
  1515  enum : uint { WM_ENTERIDLE = 0x0121 }
  1516  // #if(WINVER >= 0x0500)
  1517  // #ifndef _WIN32_WCE
  1518  enum : uint { WM_MENURBUTTONUP = 0x0122 }
  1519  enum : uint { WM_MENUDRAG = 0x0123 }
  1520  enum : uint { WM_MENUGETOBJECT = 0x0124 }
  1521  enum : uint { WM_UNINITMENUPOPUP = 0x0125 }
  1522  enum : uint { WM_MENUCOMMAND = 0x0126 }
  1523  
  1524  // #ifndef _WIN32_WCE
  1525  // #if(_WIN32_WINNT >= 0x0500)
  1526  enum : uint { WM_CHANGEUISTATE = 0x0127 }
  1527  enum : uint { WM_UPDATEUISTATE = 0x0128 }
  1528  enum : uint { WM_QUERYUISTATE = 0x0129 }
  1529  
  1530  enum : uint { UIS_SET = 1 }
  1531  enum : uint { UIS_CLEAR = 2 }
  1532  enum : uint { UIS_INITIALIZE = 3 }
  1533  
  1534  enum : uint { UISF_HIDEFOCUS = 0x1 }
  1535  enum : uint { UISF_HIDEACCEL = 0x2 }
  1536  // #if(_WIN32_WINNT >= 0x0501)
  1537  enum : uint { UISF_ACTIVE = 0x4 }
  1538  // #endif /* _WIN32_WINNT >= 0x0501 */
  1539  // #endif /* _WIN32_WINNT >= 0x0500 */
  1540  // #endif
  1541  
  1542  // #endif
  1543  // #endif /* WINVER >= 0x0500 */
  1544  
  1545  enum : uint { WM_CTLCOLORMSGBOX = 0x0132 }
  1546  enum : uint { WM_CTLCOLOREDIT = 0x0133 }
  1547  enum : uint { WM_CTLCOLORLISTBOX = 0x0134 }
  1548  enum : uint { WM_CTLCOLORBTN = 0x0135 }
  1549  enum : uint { WM_CTLCOLORDLG = 0x0136 }
  1550  enum : uint { WM_CTLCOLORSCROLLBAR = 0x0137 }
  1551  enum : uint { WM_CTLCOLORSTATIC = 0x0138 }
  1552  
  1553  enum : uint { WM_MOUSEFIRST = 0x0200 }
  1554  enum : uint { WM_MOUSEMOVE = 0x0200 }
  1555  enum : uint { WM_LBUTTONDOWN = 0x0201 }
  1556  enum : uint { WM_LBUTTONUP = 0x0202 }
  1557  enum : uint { WM_LBUTTONDBLCLK = 0x0203 }
  1558  enum : uint { WM_RBUTTONDOWN = 0x0204 }
  1559  enum : uint { WM_RBUTTONUP = 0x0205 }
  1560  enum : uint { WM_RBUTTONDBLCLK = 0x0206 }
  1561  enum : uint { WM_MBUTTONDOWN = 0x0207 }
  1562  enum : uint { WM_MBUTTONUP = 0x0208 }
  1563  enum : uint { WM_MBUTTONDBLCLK = 0x0209 }
  1564  // #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1565  enum : uint { WM_MOUSEWHEEL = 0x020A }
  1566  // #endif
  1567  // #if (_WIN32_WINNT >= 0x0500)
  1568  enum : uint { WM_XBUTTONDOWN = 0x020B }
  1569  enum : uint { WM_XBUTTONUP = 0x020C }
  1570  enum : uint { WM_XBUTTONDBLCLK = 0x020D }
  1571  // #endif
  1572  // #if (_WIN32_WINNT >= 0x0500)
  1573  enum : uint { WM_MOUSELAST = 0x020D }
  1574  // #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  1575  // #...
  1576  // #else
  1577  // #...
  1578  // #endif /* (_WIN32_WINNT >= 0x0500) */
  1579  
  1580  // #if(_WIN32_WINNT >= 0x0400)
  1581  
  1582  enum : uint { WHEEL_DELTA = 120 }
  1583  // #define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
  1584  
  1585  enum : uint { WHEEL_PAGESCROLL = UINT_MAX }
  1586  // #endif /* _WIN32_WINNT >= 0x0400 */
  1587  
  1588  // #if(_WIN32_WINNT >= 0x0500)
  1589  // #define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
  1590  // #define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
  1591  // #define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
  1592  
  1593  enum : uint { XBUTTON1 = 0x0001 }
  1594  enum : uint { XBUTTON2 = 0x0002 }
  1595  
  1596  // #endif /* _WIN32_WINNT >= 0x0500 */
  1597  
  1598  enum : uint { WM_PARENTNOTIFY = 0x0210 }
  1599  enum : uint { WM_ENTERMENULOOP = 0x0211 }
  1600  enum : uint { WM_EXITMENULOOP = 0x0212 }
  1601  
  1602  // #if(WINVER >= 0x0400)
  1603  enum : uint { WM_NEXTMENU = 0x0213 }
  1604  enum : uint { WM_SIZING = 0x0214 }
  1605  enum : uint { WM_CAPTURECHANGED = 0x0215 }
  1606  enum : uint { WM_MOVING = 0x0216 }
  1607  // #endif /* WINVER >= 0x0400 */
  1608  
  1609  // #if(WINVER >= 0x0400)
  1610  
  1611  enum : uint { WM_POWERBROADCAST = 0x0218 }
  1612  
  1613  // #ifndef _WIN32_WCE
  1614  enum : uint { PBT_APMQUERYSUSPEND = 0x0000 }
  1615  enum : uint { PBT_APMQUERYSTANDBY = 0x0001 }
  1616  
  1617  enum : uint { PBT_APMQUERYSUSPENDFAILED = 0x0002 }
  1618  enum : uint { PBT_APMQUERYSTANDBYFAILED = 0x0003 }
  1619  
  1620  enum : uint { PBT_APMSUSPEND = 0x0004 }
  1621  enum : uint { PBT_APMSTANDBY = 0x0005 }
  1622  
  1623  enum : uint { PBT_APMRESUMECRITICAL = 0x0006 }
  1624  enum : uint { PBT_APMRESUMESUSPEND = 0x0007 }
  1625  enum : uint { PBT_APMRESUMESTANDBY = 0x0008 }
  1626  
  1627  enum : uint { PBTF_APMRESUMEFROMFAILURE = 0x00000001 }
  1628  
  1629  enum : uint { PBT_APMBATTERYLOW = 0x0009 }
  1630  enum : uint { PBT_APMPOWERSTATUSCHANGE = 0x000A }
  1631  
  1632  enum : uint { PBT_APMOEMEVENT = 0x000B }
  1633  enum : uint { PBT_APMRESUMEAUTOMATIC = 0x0012 }
  1634  // #endif
  1635  
  1636  // #endif /* WINVER >= 0x0400 */
  1637  
  1638  // #if(WINVER >= 0x0400)
  1639  enum : uint { WM_DEVICECHANGE = 0x0219 }
  1640  // #endif /* WINVER >= 0x0400 */
  1641  
  1642  enum : uint { WM_MDICREATE = 0x0220 }
  1643  enum : uint { WM_MDIDESTROY = 0x0221 }
  1644  enum : uint { WM_MDIACTIVATE = 0x0222 }
  1645  enum : uint { WM_MDIRESTORE = 0x0223 }
  1646  enum : uint { WM_MDINEXT = 0x0224 }
  1647  enum : uint { WM_MDIMAXIMIZE = 0x0225 }
  1648  enum : uint { WM_MDITILE = 0x0226 }
  1649  enum : uint { WM_MDICASCADE = 0x0227 }
  1650  enum : uint { WM_MDIICONARRANGE = 0x0228 }
  1651  enum : uint { WM_MDIGETACTIVE = 0x0229 }
  1652  
  1653  enum : uint { WM_MDISETMENU = 0x0230 }
  1654  enum : uint { WM_ENTERSIZEMOVE = 0x0231 }
  1655  enum : uint { WM_EXITSIZEMOVE = 0x0232 }
  1656  enum : uint { WM_DROPFILES = 0x0233 }
  1657  enum : uint { WM_MDIREFRESHMENU = 0x0234 }
  1658  
  1659  // #if(WINVER >= 0x0400)
  1660  enum : uint { WM_IME_SETCONTEXT = 0x0281 }
  1661  enum : uint { WM_IME_NOTIFY = 0x0282 }
  1662  enum : uint { WM_IME_CONTROL = 0x0283 }
  1663  enum : uint { WM_IME_COMPOSITIONFULL = 0x0284 }
  1664  enum : uint { WM_IME_SELECT = 0x0285 }
  1665  enum : uint { WM_IME_CHAR = 0x0286 }
  1666  // #endif /* WINVER >= 0x0400 */
  1667  // #if(WINVER >= 0x0500)
  1668  enum : uint { WM_IME_REQUEST = 0x0288 }
  1669  // #endif /* WINVER >= 0x0500 */
  1670  // #if(WINVER >= 0x0400)
  1671  enum : uint { WM_IME_KEYDOWN = 0x0290 }
  1672  enum : uint { WM_IME_KEYUP = 0x0291 }
  1673  // #endif /* WINVER >= 0x0400 */
  1674  
  1675  // #if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500))
  1676  enum : uint { WM_MOUSEHOVER = 0x02A1 }
  1677  enum : uint { WM_MOUSELEAVE = 0x02A3 }
  1678  // #endif
  1679  // #if(WINVER >= 0x0500)
  1680  enum : uint { WM_NCMOUSEHOVER = 0x02A0 }
  1681  enum : uint { WM_NCMOUSELEAVE = 0x02A2 }
  1682  // #endif /* WINVER >= 0x0500 */
  1683  
  1684  // #if(_WIN32_WINNT >= 0x0501)
  1685  enum : uint { WM_WTSSESSION_CHANGE = 0x02B1 }
  1686  
  1687  enum : uint { WM_TABLET_FIRST = 0x02c0 }
  1688  enum : uint { WM_TABLET_LAST = 0x02df }
  1689  // #endif /* _WIN32_WINNT >= 0x0501 */
  1690  
  1691  enum : uint { WM_CUT = 0x0300 }
  1692  enum : uint { WM_COPY = 0x0301 }
  1693  enum : uint { WM_PASTE = 0x0302 }
  1694  enum : uint { WM_CLEAR = 0x0303 }
  1695  enum : uint { WM_UNDO = 0x0304 }
  1696  enum : uint { WM_RENDERFORMAT = 0x0305 }
  1697  enum : uint { WM_RENDERALLFORMATS = 0x0306 }
  1698  enum : uint { WM_DESTROYCLIPBOARD = 0x0307 }
  1699  enum : uint { WM_DRAWCLIPBOARD = 0x0308 }
  1700  enum : uint { WM_PAINTCLIPBOARD = 0x0309 }
  1701  enum : uint { WM_VSCROLLCLIPBOARD = 0x030A }
  1702  enum : uint { WM_SIZECLIPBOARD = 0x030B }
  1703  enum : uint { WM_ASKCBFORMATNAME = 0x030C }
  1704  enum : uint { WM_CHANGECBCHAIN = 0x030D }
  1705  enum : uint { WM_HSCROLLCLIPBOARD = 0x030E }
  1706  enum : uint { WM_QUERYNEWPALETTE = 0x030F }
  1707  enum : uint { WM_PALETTEISCHANGING = 0x0310 }
  1708  enum : uint { WM_PALETTECHANGED = 0x0311 }
  1709  enum : uint { WM_HOTKEY = 0x0312 }
  1710  
  1711  // #if(WINVER >= 0x0400)
  1712  enum : uint { WM_PRINT = 0x0317 }
  1713  enum : uint { WM_PRINTCLIENT = 0x0318 }
  1714  // #endif /* WINVER >= 0x0400 */
  1715  
  1716  // #if(_WIN32_WINNT >= 0x0500)
  1717  enum : uint { WM_APPCOMMAND = 0x0319 }
  1718  // #endif /* _WIN32_WINNT >= 0x0500 */
  1719  
  1720  // #if(_WIN32_WINNT >= 0x0501)
  1721  enum : uint { WM_THEMECHANGED = 0x031A }
  1722  // #endif /* _WIN32_WINNT >= 0x0501 */
  1723  
  1724  // #if(WINVER >= 0x0400)
  1725  
  1726  enum : uint { WM_HANDHELDFIRST = 0x0358 }
  1727  enum : uint { WM_HANDHELDLAST = 0x035F }
  1728  
  1729  enum : uint { WM_AFXFIRST = 0x0360 }
  1730  enum : uint { WM_AFXLAST = 0x037F }
  1731  // #endif /* WINVER >= 0x0400 */
  1732  
  1733  enum : uint { WM_PENWINFIRST = 0x0380 }
  1734  enum : uint { WM_PENWINLAST = 0x038F }
  1735  
  1736  // #if(WINVER >= 0x0400)
  1737  enum : uint { WM_APP = 0x8000 }
  1738  // #endif /* WINVER >= 0x0400 */
  1739  
  1740  enum : uint { WM_USER = 0x0400 }
  1741  
  1742  // #if(WINVER >= 0x0400)
  1743  
  1744  enum : uint { WMSZ_LEFT = 1 }
  1745  enum : uint { WMSZ_RIGHT = 2 }
  1746  enum : uint { WMSZ_TOP = 3 }
  1747  enum : uint { WMSZ_TOPLEFT = 4 }
  1748  enum : uint { WMSZ_TOPRIGHT = 5 }
  1749  enum : uint { WMSZ_BOTTOM = 6 }
  1750  enum : uint { WMSZ_BOTTOMLEFT = 7 }
  1751  enum : uint { WMSZ_BOTTOMRIGHT = 8 }
  1752  // #endif /* WINVER >= 0x0400 */
  1753  
  1754  // #ifndef NONCMESSAGES
  1755  
  1756  enum { HTERROR = -2 }
  1757  enum { HTTRANSPARENT = -1 }
  1758  enum : uint { HTNOWHERE = 0 }
  1759  enum : uint { HTCLIENT = 1 }
  1760  enum : uint { HTCAPTION = 2 }
  1761  enum : uint { HTSYSMENU = 3 }
  1762  enum : uint { HTGROWBOX = 4 }
  1763  alias HTGROWBOX HTSIZE;
  1764  enum : uint { HTMENU = 5 }
  1765  enum : uint { HTHSCROLL = 6 }
  1766  enum : uint { HTVSCROLL = 7 }
  1767  enum : uint { HTMINBUTTON = 8 }
  1768  enum : uint { HTMAXBUTTON = 9 }
  1769  enum : uint { HTLEFT = 10 }
  1770  enum : uint { HTRIGHT = 11 }
  1771  enum : uint { HTTOP = 12 }
  1772  enum : uint { HTTOPLEFT = 13 }
  1773  enum : uint { HTTOPRIGHT = 14 }
  1774  enum : uint { HTBOTTOM = 15 }
  1775  enum : uint { HTBOTTOMLEFT = 16 }
  1776  enum : uint { HTBOTTOMRIGHT = 17 }
  1777  enum : uint { HTBORDER = 18 }
  1778  alias HTMINBUTTON HTREDUCE;
  1779  alias HTMAXBUTTON HTZOOM;
  1780  alias HTLEFT HTSIZEFIRST;
  1781  alias HTBOTTOMRIGHT HTSIZELAST;
  1782  // #if(WINVER >= 0x0400)
  1783  enum : uint { HTOBJECT = 19 }
  1784  enum : uint { HTCLOSE = 20 }
  1785  enum : uint { HTHELP = 21 }
  1786  // #endif /* WINVER >= 0x0400 */
  1787  
  1788  enum : uint { SMTO_NORMAL = 0x0000 }
  1789  enum : uint { SMTO_BLOCK = 0x0001 }
  1790  enum : uint { SMTO_ABORTIFHUNG = 0x0002 }
  1791  // #if(WINVER >= 0x0500)
  1792  enum : uint { SMTO_NOTIMEOUTIFNOTHUNG = 0x0008 }
  1793  // #endif /* WINVER >= 0x0500 */
  1794  // #endif /* !NONCMESSAGES */
  1795  
  1796  enum : uint { MA_ACTIVATE = 1 }
  1797  enum : uint { MA_ACTIVATEANDEAT = 2 }
  1798  enum : uint { MA_NOACTIVATE = 3 }
  1799  enum : uint { MA_NOACTIVATEANDEAT = 4 }
  1800  
  1801  enum : uint { ICON_SMALL = 0 }
  1802  enum : uint { ICON_BIG = 1 }
  1803  // #if(_WIN32_WINNT >= 0x0501)
  1804  enum : uint { ICON_SMALL2 = 2 }
  1805  // #endif /* _WIN32_WINNT >= 0x0501 */
  1806  
  1807  extern(Windows) export UINT RegisterWindowMessageA(
  1808    LPCSTR lpString);
  1809  extern(Windows) export UINT RegisterWindowMessageW(
  1810    LPCWSTR lpString);
  1811  // #ifdef UNICODE
  1812  // #...
  1813  // #else
  1814  alias RegisterWindowMessageA RegisterWindowMessage;
  1815  // #endif // !UNICODE
  1816  
  1817  enum : uint { SIZE_RESTORED = 0 }
  1818  enum : uint { SIZE_MINIMIZED = 1 }
  1819  enum : uint { SIZE_MAXIMIZED = 2 }
  1820  enum : uint { SIZE_MAXSHOW = 3 }
  1821  enum : uint { SIZE_MAXHIDE = 4 }
  1822  
  1823  alias SIZE_RESTORED SIZENORMAL;
  1824  alias SIZE_MINIMIZED SIZEICONIC;
  1825  alias SIZE_MAXIMIZED SIZEFULLSCREEN;
  1826  alias SIZE_MAXSHOW SIZEZOOMSHOW;
  1827  alias SIZE_MAXHIDE SIZEZOOMHIDE;
  1828  
  1829  struct tagWINDOWPOS {
  1830    HWND hwnd;
  1831    HWND hwndInsertAfter;
  1832    int x;
  1833    int y;
  1834    int cx;
  1835    int cy;
  1836    UINT flags;
  1837  }
  1838  alias tagWINDOWPOS WINDOWPOS;
  1839  alias tagWINDOWPOS* LPWINDOWPOS;
  1840  alias tagWINDOWPOS* PWINDOWPOS;
  1841  
  1842  struct tagNCCALCSIZE_PARAMS {
  1843    RECT rgrc[3];
  1844    PWINDOWPOS lppos;
  1845  }
  1846  alias tagNCCALCSIZE_PARAMS NCCALCSIZE_PARAMS;
  1847  alias tagNCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS;
  1848  
  1849  enum : uint { WVR_ALIGNTOP = 0x0010 }
  1850  enum : uint { WVR_ALIGNLEFT = 0x0020 }
  1851  enum : uint { WVR_ALIGNBOTTOM = 0x0040 }
  1852  enum : uint { WVR_ALIGNRIGHT = 0x0080 }
  1853  enum : uint { WVR_HREDRAW = 0x0100 }
  1854  enum : uint { WVR_VREDRAW = 0x0200 }
  1855  enum : uint { WVR_REDRAW = WVR_HREDRAW | WVR_VREDRAW }
  1856  enum : uint { WVR_VALIDRECTS = 0x0400 }
  1857  
  1858  // #ifndef NOKEYSTATES
  1859  
  1860  enum : uint { MK_LBUTTON = 0x0001 }
  1861  enum : uint { MK_RBUTTON = 0x0002 }
  1862  enum : uint { MK_SHIFT = 0x0004 }
  1863  enum : uint { MK_CONTROL = 0x0008 }
  1864  enum : uint { MK_MBUTTON = 0x0010 }
  1865  // #if(_WIN32_WINNT >= 0x0500)
  1866  enum : uint { MK_XBUTTON1 = 0x0020 }
  1867  enum : uint { MK_XBUTTON2 = 0x0040 }
  1868  // #endif /* _WIN32_WINNT >= 0x0500 */
  1869  
  1870  // #endif /* !NOKEYSTATES */
  1871  
  1872  // #if(_WIN32_WINNT >= 0x0400)
  1873  // #ifndef NOTRACKMOUSEEVENT
  1874  
  1875  enum : uint { TME_HOVER = 0x00000001 }
  1876  enum : uint { TME_LEAVE = 0x00000002 }
  1877  // #if(WINVER >= 0x0500)
  1878  enum : uint { TME_NONCLIENT = 0x00000010 }
  1879  // #endif /* WINVER >= 0x0500 */
  1880  enum : uint { TME_QUERY = 0x40000000 }
  1881  enum : uint { TME_CANCEL = 0x80000000 }
  1882  
  1883  enum : uint { HOVER_DEFAULT = 0xFFFFFFFF }
  1884  // #endif /* _WIN32_WINNT >= 0x0400 */
  1885  
  1886  // #if(_WIN32_WINNT >= 0x0400)
  1887  struct tagTRACKMOUSEEVENT {
  1888    DWORD cbSize;
  1889    DWORD dwFlags;
  1890    HWND hwndTrack;
  1891    DWORD dwHoverTime;
  1892  }
  1893  alias tagTRACKMOUSEEVENT TRACKMOUSEEVENT;
  1894  alias tagTRACKMOUSEEVENT* LPTRACKMOUSEEVENT;
  1895  
  1896  extern(Windows) export BOOL TrackMouseEvent(
  1897    LPTRACKMOUSEEVENT lpEventTrack);
  1898  // #endif /* _WIN32_WINNT >= 0x0400 */
  1899  
  1900  // #if(_WIN32_WINNT >= 0x0400)
  1901  
  1902  // #endif /* !NOTRACKMOUSEEVENT */
  1903  // #endif /* _WIN32_WINNT >= 0x0400 */
  1904  
  1905  // #endif /* !NOWINMESSAGES */
  1906  
  1907  // #ifndef NOWINSTYLES
  1908  
  1909  enum : uint { WS_OVERLAPPED = 0x00000000 }
  1910  enum : uint { WS_POPUP = 0x80000000 }
  1911  enum : uint { WS_CHILD = 0x40000000 }
  1912  enum : uint { WS_MINIMIZE = 0x20000000 }
  1913  enum : uint { WS_VISIBLE = 0x10000000 }
  1914  enum : uint { WS_DISABLED = 0x08000000 }
  1915  enum : uint { WS_CLIPSIBLINGS = 0x04000000 }
  1916  enum : uint { WS_CLIPCHILDREN = 0x02000000 }
  1917  enum : uint { WS_MAXIMIZE = 0x01000000 }
  1918  enum : uint { WS_CAPTION = 0x00C00000 }
  1919  enum : uint { WS_BORDER = 0x00800000 }
  1920  enum : uint { WS_DLGFRAME = 0x00400000 }
  1921  enum : uint { WS_VSCROLL = 0x00200000 }
  1922  enum : uint { WS_HSCROLL = 0x00100000 }
  1923  enum : uint { WS_SYSMENU = 0x00080000 }
  1924  enum : uint { WS_THICKFRAME = 0x00040000 }
  1925  enum : uint { WS_GROUP = 0x00020000 }
  1926  enum : uint { WS_TABSTOP = 0x00010000 }
  1927  
  1928  enum : uint { WS_MINIMIZEBOX = 0x00020000 }
  1929  enum : uint { WS_MAXIMIZEBOX = 0x00010000 }
  1930  
  1931  alias WS_OVERLAPPED WS_TILED;
  1932  alias WS_MINIMIZE WS_ICONIC;
  1933  alias WS_THICKFRAME WS_SIZEBOX;
  1934  // #define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
  1935  
  1936  enum : uint { WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX }
  1937  
  1938  enum : uint { WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU }
  1939  
  1940  enum : uint { WS_CHILDWINDOW = WS_CHILD }
  1941  
  1942  enum : uint { WS_EX_DLGMODALFRAME = 0x00000001 }
  1943  enum : uint { WS_EX_NOPARENTNOTIFY = 0x00000004 }
  1944  enum : uint { WS_EX_TOPMOST = 0x00000008 }
  1945  enum : uint { WS_EX_ACCEPTFILES = 0x00000010 }
  1946  enum : uint { WS_EX_TRANSPARENT = 0x00000020 }
  1947  // #if(WINVER >= 0x0400)
  1948  enum : uint { WS_EX_MDICHILD = 0x00000040 }
  1949  enum : uint { WS_EX_TOOLWINDOW = 0x00000080 }
  1950  enum : uint { WS_EX_WINDOWEDGE = 0x00000100 }
  1951  enum : uint { WS_EX_CLIENTEDGE = 0x00000200 }
  1952  enum : uint { WS_EX_CONTEXTHELP = 0x00000400 }
  1953  
  1954  // #endif /* WINVER >= 0x0400 */
  1955  // #if(WINVER >= 0x0400)
  1956  
  1957  enum : uint { WS_EX_RIGHT = 0x00001000 }
  1958  enum : uint { WS_EX_LEFT = 0x00000000 }
  1959  enum : uint { WS_EX_RTLREADING = 0x00002000 }
  1960  enum : uint { WS_EX_LTRREADING = 0x00000000 }
  1961  enum : uint { WS_EX_LEFTSCROLLBAR = 0x00004000 }
  1962  enum : uint { WS_EX_RIGHTSCROLLBAR = 0x00000000 }
  1963  
  1964  enum : uint { WS_EX_CONTROLPARENT = 0x00010000 }
  1965  enum : uint { WS_EX_STATICEDGE = 0x00020000 }
  1966  enum : uint { WS_EX_APPWINDOW = 0x00040000 }
  1967  
  1968  enum : uint { WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE }
  1969  enum : uint { WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST }
  1970  
  1971  // #endif /* WINVER >= 0x0400 */
  1972  
  1973  // #if(_WIN32_WINNT >= 0x0500)
  1974  enum : uint { WS_EX_LAYERED = 0x00080000 }
  1975  
  1976  // #endif /* _WIN32_WINNT >= 0x0500 */
  1977  
  1978  // #if(WINVER >= 0x0500)
  1979  enum : uint { WS_EX_NOINHERITLAYOUT = 0x00100000 }
  1980  enum : uint { WS_EX_LAYOUTRTL = 0x00400000 }
  1981  // #endif /* WINVER >= 0x0500 */
  1982  
  1983  // #if(_WIN32_WINNT >= 0x0501)
  1984  enum : uint { WS_EX_COMPOSITED = 0x02000000 }
  1985  // #endif /* _WIN32_WINNT >= 0x0501 */
  1986  // #if(_WIN32_WINNT >= 0x0500)
  1987  enum : uint { WS_EX_NOACTIVATE = 0x08000000 }
  1988  // #endif /* _WIN32_WINNT >= 0x0500 */
  1989  
  1990  enum : uint { CS_VREDRAW = 0x0001 }
  1991  enum : uint { CS_HREDRAW = 0x0002 }
  1992  enum : uint { CS_DBLCLKS = 0x0008 }
  1993  enum : uint { CS_OWNDC = 0x0020 }
  1994  enum : uint { CS_CLASSDC = 0x0040 }
  1995  enum : uint { CS_PARENTDC = 0x0080 }
  1996  enum : uint { CS_NOCLOSE = 0x0200 }
  1997  enum : uint { CS_SAVEBITS = 0x0800 }
  1998  enum : uint { CS_BYTEALIGNCLIENT = 0x1000 }
  1999  enum : uint { CS_BYTEALIGNWINDOW = 0x2000 }
  2000  enum : uint { CS_GLOBALCLASS = 0x4000 }
  2001  
  2002  enum : uint { CS_IME = 0x00010000 }
  2003  // #if(_WIN32_WINNT >= 0x0501)
  2004  enum : uint { CS_DROPSHADOW = 0x00020000 }
  2005  // #endif /* _WIN32_WINNT >= 0x0501 */
  2006  
  2007  // #endif /* !NOWINSTYLES */
  2008  // #if(WINVER >= 0x0400)
  2009  
  2010  enum : uint { PRF_CHECKVISIBLE = 0x00000001 }
  2011  enum : uint { PRF_NONCLIENT = 0x00000002 }
  2012  enum : uint { PRF_CLIENT = 0x00000004 }
  2013  enum : uint { PRF_ERASEBKGND = 0x00000008 }
  2014  enum : uint { PRF_CHILDREN = 0x00000010 }
  2015  enum : uint { PRF_OWNED = 0x00000020 }
  2016  
  2017  enum : uint { BDR_RAISEDOUTER = 0x0001 }
  2018  enum : uint { BDR_SUNKENOUTER = 0x0002 }
  2019  enum : uint { BDR_RAISEDINNER = 0x0004 }
  2020  enum : uint { BDR_SUNKENINNER = 0x0008 }
  2021  
  2022  enum : uint { BDR_OUTER = BDR_RAISEDOUTER | BDR_SUNKENOUTER }
  2023  enum : uint { BDR_INNER = BDR_RAISEDINNER | BDR_SUNKENINNER }
  2024  enum : uint { BDR_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER }
  2025  enum : uint { BDR_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER }
  2026  
  2027  enum : uint { EDGE_RAISED = BDR_RAISEDOUTER | BDR_RAISEDINNER }
  2028  enum : uint { EDGE_SUNKEN = BDR_SUNKENOUTER | BDR_SUNKENINNER }
  2029  enum : uint { EDGE_ETCHED = BDR_SUNKENOUTER | BDR_RAISEDINNER }
  2030  enum : uint { EDGE_BUMP = BDR_RAISEDOUTER | BDR_SUNKENINNER }
  2031  
  2032  enum : uint { BF_LEFT = 0x0001 }
  2033  enum : uint { BF_TOP = 0x0002 }
  2034  enum : uint { BF_RIGHT = 0x0004 }
  2035  enum : uint { BF_BOTTOM = 0x0008 }
  2036  
  2037  enum : uint { BF_TOPLEFT = BF_TOP | BF_LEFT }
  2038  enum : uint { BF_TOPRIGHT = BF_TOP | BF_RIGHT }
  2039  enum : uint { BF_BOTTOMLEFT = BF_BOTTOM | BF_LEFT }
  2040  enum : uint { BF_BOTTOMRIGHT = BF_BOTTOM | BF_RIGHT }
  2041  enum : uint { BF_RECT = BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM }
  2042  
  2043  enum : uint { BF_DIAGONAL = 0x0010 }
  2044  
  2045  enum : uint { BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL | BF_TOP | BF_RIGHT }
  2046  enum : uint { BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL | BF_TOP | BF_LEFT }
  2047  enum : uint { BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL | BF_BOTTOM | BF_LEFT }
  2048  enum : uint { BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL | BF_BOTTOM | BF_RIGHT }
  2049  
  2050  enum : uint { BF_MIDDLE = 0x0800 }
  2051  enum : uint { BF_SOFT = 0x1000 }
  2052  enum : uint { BF_ADJUST = 0x2000 }
  2053  enum : uint { BF_FLAT = 0x4000 }
  2054  enum : uint { BF_MONO = 0x8000 }
  2055  
  2056  extern(Windows) export BOOL DrawEdge(
  2057    HDC hdc,
  2058    LPRECT qrc,
  2059    UINT edge,
  2060    UINT grfFlags);
  2061  
  2062  enum : uint { DFC_CAPTION = 1 }
  2063  enum : uint { DFC_MENU = 2 }
  2064  enum : uint { DFC_SCROLL = 3 }
  2065  enum : uint { DFC_BUTTON = 4 }
  2066  // #if(WINVER >= 0x0500)
  2067  enum : uint { DFC_POPUPMENU = 5 }
  2068  // #endif /* WINVER >= 0x0500 */
  2069  
  2070  enum : uint { DFCS_CAPTIONCLOSE = 0x0000 }
  2071  enum : uint { DFCS_CAPTIONMIN = 0x0001 }
  2072  enum : uint { DFCS_CAPTIONMAX = 0x0002 }
  2073  enum : uint { DFCS_CAPTIONRESTORE = 0x0003 }
  2074  enum : uint { DFCS_CAPTIONHELP = 0x0004 }
  2075  
  2076  enum : uint { DFCS_MENUARROW = 0x0000 }
  2077  enum : uint { DFCS_MENUCHECK = 0x0001 }
  2078  enum : uint { DFCS_MENUBULLET = 0x0002 }
  2079  enum : uint { DFCS_MENUARROWRIGHT = 0x0004 }
  2080  enum : uint { DFCS_SCROLLUP = 0x0000 }
  2081  enum : uint { DFCS_SCROLLDOWN = 0x0001 }
  2082  enum : uint { DFCS_SCROLLLEFT = 0x0002 }
  2083  enum : uint { DFCS_SCROLLRIGHT = 0x0003 }
  2084  enum : uint { DFCS_SCROLLCOMBOBOX = 0x0005 }
  2085  enum : uint { DFCS_SCROLLSIZEGRIP = 0x0008 }
  2086  enum : uint { DFCS_SCROLLSIZEGRIPRIGHT = 0x0010 }
  2087  
  2088  enum : uint { DFCS_BUTTONCHECK = 0x0000 }
  2089  enum : uint { DFCS_BUTTONRADIOIMAGE = 0x0001 }
  2090  enum : uint { DFCS_BUTTONRADIOMASK = 0x0002 }
  2091  enum : uint { DFCS_BUTTONRADIO = 0x0004 }
  2092  enum : uint { DFCS_BUTTON3STATE = 0x0008 }
  2093  enum : uint { DFCS_BUTTONPUSH = 0x0010 }
  2094  
  2095  enum : uint { DFCS_INACTIVE = 0x0100 }
  2096  enum : uint { DFCS_PUSHED = 0x0200 }
  2097  enum : uint { DFCS_CHECKED = 0x0400 }
  2098  
  2099  // #if(WINVER >= 0x0500)
  2100  enum : uint { DFCS_TRANSPARENT = 0x0800 }
  2101  enum : uint { DFCS_HOT = 0x1000 }
  2102  // #endif /* WINVER >= 0x0500 */
  2103  
  2104  enum : uint { DFCS_ADJUSTRECT = 0x2000 }
  2105  enum : uint { DFCS_FLAT = 0x4000 }
  2106  enum : uint { DFCS_MONO = 0x8000 }
  2107  
  2108  extern(Windows) export BOOL DrawFrameControl(
  2109    HDC,
  2110    LPRECT,
  2111    UINT,
  2112    UINT);
  2113  
  2114  enum : uint { DC_ACTIVE = 0x0001 }
  2115  enum : uint { DC_SMALLCAP = 0x0002 }
  2116  enum : uint { DC_ICON = 0x0004 }
  2117  enum : uint { DC_TEXT = 0x0008 }
  2118  enum : uint { DC_INBUTTON = 0x0010 }
  2119  // #if(WINVER >= 0x0500)
  2120  enum : uint { DC_GRADIENT = 0x0020 }
  2121  // #endif /* WINVER >= 0x0500 */
  2122  // #if(_WIN32_WINNT >= 0x0501)
  2123  enum : uint { DC_BUTTONS = 0x1000 }
  2124  // #endif /* _WIN32_WINNT >= 0x0501 */
  2125  
  2126  extern(Windows) export BOOL DrawCaption(HWND, HDC, RECT *, UINT);
  2127  
  2128  enum : uint { IDANI_OPEN = 1 }
  2129  enum : uint { IDANI_CAPTION = 3 }
  2130  
  2131  extern(Windows) export BOOL DrawAnimatedRects(
  2132    HWND hwnd,
  2133    int idAni,
  2134    RECT * lprcFrom,
  2135    RECT * lprcTo);
  2136  
  2137  // #endif /* WINVER >= 0x0400 */
  2138  
  2139  // #ifndef NOCLIPBOARD
  2140  
  2141  enum : uint { CF_TEXT = 1 }
  2142  enum : uint { CF_BITMAP = 2 }
  2143  enum : uint { CF_METAFILEPICT = 3 }
  2144  enum : uint { CF_SYLK = 4 }
  2145  enum : uint { CF_DIF = 5 }
  2146  enum : uint { CF_TIFF = 6 }
  2147  enum : uint { CF_OEMTEXT = 7 }
  2148  enum : uint { CF_DIB = 8 }
  2149  enum : uint { CF_PALETTE = 9 }
  2150  enum : uint { CF_PENDATA = 10 }
  2151  enum : uint { CF_RIFF = 11 }
  2152  enum : uint { CF_WAVE = 12 }
  2153  enum : uint { CF_UNICODETEXT = 13 }
  2154  enum : uint { CF_ENHMETAFILE = 14 }
  2155  // #if(WINVER >= 0x0400)
  2156  enum : uint { CF_HDROP = 15 }
  2157  enum : uint { CF_LOCALE = 16 }
  2158  // #endif /* WINVER >= 0x0400 */
  2159  // #if(WINVER >= 0x0500)
  2160  enum : uint { CF_DIBV5 = 17 }
  2161  // #endif /* WINVER >= 0x0500 */
  2162  
  2163  // #if(WINVER >= 0x0500)
  2164  enum : uint { CF_MAX = 18 }
  2165  // #elif(WINVER >= 0x0400)
  2166  // #...
  2167  // #else
  2168  // #...
  2169  // #endif
  2170  
  2171  enum : uint { CF_OWNERDISPLAY = 0x0080 }
  2172  enum : uint { CF_DSPTEXT = 0x0081 }
  2173  enum : uint { CF_DSPBITMAP = 0x0082 }
  2174  enum : uint { CF_DSPMETAFILEPICT = 0x0083 }
  2175  enum : uint { CF_DSPENHMETAFILE = 0x008E }
  2176  
  2177  enum : uint { CF_PRIVATEFIRST = 0x0200 }
  2178  enum : uint { CF_PRIVATELAST = 0x02FF }
  2179  
  2180  enum : uint { CF_GDIOBJFIRST = 0x0300 }
  2181  enum : uint { CF_GDIOBJLAST = 0x03FF }
  2182  
  2183  // #endif /* !NOCLIPBOARD */
  2184  
  2185  alias TRUE FVIRTKEY;
  2186  enum : uint { FNOINVERT = 0x02 }
  2187  enum : uint { FSHIFT = 0x04 }
  2188  enum : uint { FCONTROL = 0x08 }
  2189  enum : uint { FALT = 0x10 }
  2190  
  2191  struct tagACCEL {
  2192  // #ifndef _MAC
  2193    BYTE fVirt;
  2194    WORD key;
  2195    WORD cmd;
  2196  // #else
  2197  // ...
  2198  // #endif
  2199  }
  2200  alias tagACCEL ACCEL;
  2201  alias tagACCEL* LPACCEL;
  2202  
  2203  struct tagPAINTSTRUCT {
  2204    HDC hdc;
  2205    BOOL fErase;
  2206    RECT rcPaint;
  2207    BOOL fRestore;
  2208    BOOL fIncUpdate;
  2209    BYTE rgbReserved[32];
  2210  }
  2211  alias tagPAINTSTRUCT PAINTSTRUCT;
  2212  alias tagPAINTSTRUCT* PPAINTSTRUCT;
  2213  alias tagPAINTSTRUCT* NPPAINTSTRUCT;
  2214  alias tagPAINTSTRUCT* LPPAINTSTRUCT;
  2215  
  2216  struct tagCREATESTRUCTA {
  2217    LPVOID lpCreateParams;
  2218    HINSTANCE hInstance;
  2219    HMENU hMenu;
  2220    HWND hwndParent;
  2221    int cy;
  2222    int cx;
  2223    int y;
  2224    int x;
  2225    LONG style;
  2226    LPCSTR lpszName;
  2227    LPCSTR lpszClass;
  2228    DWORD dwExStyle;
  2229  }
  2230  alias tagCREATESTRUCTA CREATESTRUCTA;
  2231  alias tagCREATESTRUCTA* LPCREATESTRUCTA;
  2232  
  2233  struct tagCREATESTRUCTW {
  2234    LPVOID lpCreateParams;
  2235    HINSTANCE hInstance;
  2236    HMENU hMenu;
  2237    HWND hwndParent;
  2238    int cy;
  2239    int cx;
  2240    int y;
  2241    int x;
  2242    LONG style;
  2243    LPCWSTR lpszName;
  2244    LPCWSTR lpszClass;
  2245    DWORD dwExStyle;
  2246  }
  2247  alias tagCREATESTRUCTW CREATESTRUCTW;
  2248  alias tagCREATESTRUCTW* LPCREATESTRUCTW;
  2249  
  2250  // #ifdef UNICODE
  2251  // ...
  2252  // #else
  2253  alias CREATESTRUCTA CREATESTRUCT;
  2254  alias LPCREATESTRUCTA LPCREATESTRUCT;
  2255  // #endif // UNICODE
  2256  
  2257  struct tagWINDOWPLACEMENT {
  2258    UINT length;
  2259    UINT flags;
  2260    UINT showCmd;
  2261    POINT ptMinPosition;
  2262    POINT ptMaxPosition;
  2263    RECT rcNormalPosition;
  2264  // #ifdef _MAC
  2265  // ...
  2266  // #endif
  2267  }
  2268  alias tagWINDOWPLACEMENT WINDOWPLACEMENT;
  2269  
  2270  alias WINDOWPLACEMENT* PWINDOWPLACEMENT;
  2271  alias WINDOWPLACEMENT* LPWINDOWPLACEMENT;
  2272  
  2273  enum : uint { WPF_SETMINPOSITION = 0x0001 }
  2274  enum : uint { WPF_RESTORETOMAXIMIZED = 0x0002 }
  2275  // #if(_WIN32_WINNT >= 0x0500)
  2276  enum : uint { WPF_ASYNCWINDOWPLACEMENT = 0x0004 }
  2277  // #endif /* _WIN32_WINNT >= 0x0500 */
  2278  
  2279  // #if(WINVER >= 0x0400)
  2280  struct tagNMHDR {
  2281    HWND hwndFrom;
  2282    UINT_PTR idFrom;
  2283    UINT code;
  2284  }
  2285  alias tagNMHDR NMHDR;
  2286  
  2287  alias NMHDR* LPNMHDR;
  2288  
  2289  struct tagSTYLESTRUCT {
  2290    DWORD styleOld;
  2291    DWORD styleNew;
  2292  }
  2293  alias tagSTYLESTRUCT STYLESTRUCT;
  2294  alias tagSTYLESTRUCT* LPSTYLESTRUCT;
  2295  
  2296  // #endif /* WINVER >= 0x0400 */
  2297  
  2298  enum : uint { ODT_MENU = 1 }
  2299  enum : uint { ODT_LISTBOX = 2 }
  2300  enum : uint { ODT_COMBOBOX = 3 }
  2301  enum : uint { ODT_BUTTON = 4 }
  2302  // #if(WINVER >= 0x0400)
  2303  enum : uint { ODT_STATIC = 5 }
  2304  // #endif /* WINVER >= 0x0400 */
  2305  
  2306  enum : uint { ODA_DRAWENTIRE = 0x0001 }
  2307  enum : uint { ODA_SELECT = 0x0002 }
  2308  enum : uint { ODA_FOCUS = 0x0004 }
  2309  
  2310  enum : uint { ODS_SELECTED = 0x0001 }
  2311  enum : uint { ODS_GRAYED = 0x0002 }
  2312  enum : uint { ODS_DISABLED = 0x0004 }
  2313  enum : uint { ODS_CHECKED = 0x0008 }
  2314  enum : uint { ODS_FOCUS = 0x0010 }
  2315  // #if(WINVER >= 0x0400)
  2316  enum : uint { ODS_DEFAULT = 0x0020 }
  2317  enum : uint { ODS_COMBOBOXEDIT = 0x1000 }
  2318  // #endif /* WINVER >= 0x0400 */
  2319  // #if(WINVER >= 0x0500)
  2320  enum : uint { ODS_HOTLIGHT = 0x0040 }
  2321  enum : uint { ODS_INACTIVE = 0x0080 }
  2322  // #if(_WIN32_WINNT >= 0x0500)
  2323  enum : uint { ODS_NOACCEL = 0x0100 }
  2324  enum : uint { ODS_NOFOCUSRECT = 0x0200 }
  2325  // #endif /* _WIN32_WINNT >= 0x0500 */
  2326  // #endif /* WINVER >= 0x0500 */
  2327  
  2328  struct tagMEASUREITEMSTRUCT {
  2329    UINT CtlType;
  2330    UINT CtlID;
  2331    UINT itemID;
  2332    UINT itemWidth;
  2333    UINT itemHeight;
  2334    ULONG_PTR itemData;
  2335  }
  2336  alias tagMEASUREITEMSTRUCT MEASUREITEMSTRUCT;
  2337  alias tagMEASUREITEMSTRUCT* PMEASUREITEMSTRUCT;
  2338  alias tagMEASUREITEMSTRUCT* LPMEASUREITEMSTRUCT;
  2339  
  2340  struct tagDRAWITEMSTRUCT {
  2341    UINT CtlType;
  2342    UINT CtlID;
  2343    UINT itemID;
  2344    UINT itemAction;
  2345    UINT itemState;
  2346    HWND hwndItem;
  2347    HDC hDC;
  2348    RECT rcItem;
  2349    ULONG_PTR itemData;
  2350  }
  2351  alias tagDRAWITEMSTRUCT DRAWITEMSTRUCT;
  2352  alias tagDRAWITEMSTRUCT* PDRAWITEMSTRUCT;
  2353  alias tagDRAWITEMSTRUCT* LPDRAWITEMSTRUCT;
  2354  
  2355  struct tagDELETEITEMSTRUCT {
  2356    UINT CtlType;
  2357    UINT CtlID;
  2358    UINT itemID;
  2359    HWND hwndItem;
  2360    ULONG_PTR itemData;
  2361  }
  2362  alias tagDELETEITEMSTRUCT DELETEITEMSTRUCT;
  2363  alias tagDELETEITEMSTRUCT* PDELETEITEMSTRUCT;
  2364  alias tagDELETEITEMSTRUCT* LPDELETEITEMSTRUCT;
  2365  
  2366  struct tagCOMPAREITEMSTRUCT {
  2367    UINT CtlType;
  2368    UINT CtlID;
  2369    HWND hwndItem;
  2370    UINT itemID1;
  2371    ULONG_PTR itemData1;
  2372    UINT itemID2;
  2373    ULONG_PTR itemData2;
  2374    DWORD dwLocaleId;
  2375  }
  2376  alias tagCOMPAREITEMSTRUCT COMPAREITEMSTRUCT;
  2377  alias tagCOMPAREITEMSTRUCT* PCOMPAREITEMSTRUCT;
  2378  alias tagCOMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT;
  2379  
  2380  // #ifndef NOMSG
  2381  
  2382  extern(Windows) export BOOL GetMessageA(
  2383    LPMSG lpMsg,
  2384    HWND hWnd,
  2385    UINT wMsgFilterMin,
  2386    UINT wMsgFilterMax);
  2387  extern(Windows) export BOOL GetMessageW(
  2388    LPMSG lpMsg,
  2389    HWND hWnd,
  2390    UINT wMsgFilterMin,
  2391    UINT wMsgFilterMax);
  2392  // #ifdef UNICODE
  2393  // #...
  2394  // #else
  2395  alias GetMessageA GetMessage;
  2396  // #endif // !UNICODE
  2397  
  2398  extern(Windows) export BOOL TranslateMessage(
  2399    MSG *lpMsg);
  2400  
  2401  extern(Windows) export LRESULT DispatchMessageA(
  2402    MSG *lpMsg);
  2403  extern(Windows) export LRESULT DispatchMessageW(
  2404    MSG *lpMsg);
  2405  // #ifdef UNICODE
  2406  // #...
  2407  // #else
  2408  alias DispatchMessageA DispatchMessage;
  2409  // #endif // !UNICODE
  2410  
  2411  extern(Windows) export BOOL SetMessageQueue(
  2412    int cMessagesMax);
  2413  
  2414  extern(Windows) export BOOL PeekMessageA(
  2415    LPMSG lpMsg,
  2416    HWND hWnd,
  2417    UINT wMsgFilterMin,
  2418    UINT wMsgFilterMax,
  2419    UINT wRemoveMsg);
  2420  extern(Windows) export BOOL PeekMessageW(
  2421    LPMSG lpMsg,
  2422    HWND hWnd,
  2423    UINT wMsgFilterMin,
  2424    UINT wMsgFilterMax,
  2425    UINT wRemoveMsg);
  2426  // #ifdef UNICODE
  2427  // #...
  2428  // #else
  2429  alias PeekMessageA PeekMessage;
  2430  // #endif // !UNICODE
  2431  
  2432  enum : uint { PM_NOREMOVE = 0x0000 }
  2433  enum : uint { PM_REMOVE = 0x0001 }
  2434  enum : uint { PM_NOYIELD = 0x0002 }
  2435  // #if(WINVER >= 0x0500)
  2436  enum : uint { PM_QS_INPUT = QS_INPUT << 16 }
  2437  enum : uint { PM_QS_POSTMESSAGE = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16 }
  2438  enum : uint { PM_QS_PAINT = QS_PAINT << 16 }
  2439  enum : uint { PM_QS_SENDMESSAGE = QS_SENDMESSAGE << 16 }
  2440  // #endif /* WINVER >= 0x0500 */
  2441  
  2442  // #endif /* !NOMSG */
  2443  
  2444  extern(Windows) export BOOL RegisterHotKey(
  2445    HWND hWnd,
  2446    int id,
  2447    UINT fsModifiers,
  2448    UINT vk);
  2449  
  2450  extern(Windows) export BOOL UnregisterHotKey(
  2451    HWND hWnd,
  2452    int id);
  2453  
  2454  enum : uint { MOD_ALT = 0x0001 }
  2455  enum : uint { MOD_CONTROL = 0x0002 }
  2456  enum : uint { MOD_SHIFT = 0x0004 }
  2457  enum : uint { MOD_WIN = 0x0008 }
  2458  
  2459  enum { IDHOT_SNAPWINDOW = -1 }
  2460  enum { IDHOT_SNAPDESKTOP = -2 }
  2461  
  2462  // #ifdef WIN_INTERNAL
  2463  //     #ifndef LSTRING
  2464  // #...
  2465  //     #endif /* LSTRING */
  2466  //     #ifndef LFILEIO
  2467  // #...
  2468  //     #endif /* LFILEIO */
  2469  // #endif /* WIN_INTERNAL */
  2470  
  2471  // #if(WINVER >= 0x0400)
  2472  
  2473  enum : uint { ENDSESSION_LOGOFF = 0x80000000 }
  2474  // #endif /* WINVER >= 0x0400 */
  2475  
  2476  enum : uint { EWX_LOGOFF = 0 }
  2477  enum : uint { EWX_SHUTDOWN = 0x00000001 }
  2478  enum : uint { EWX_REBOOT = 0x00000002 }
  2479  enum : uint { EWX_FORCE = 0x00000004 }
  2480  enum : uint { EWX_POWEROFF = 0x00000008 }
  2481  // #if(_WIN32_WINNT >= 0x0500)
  2482  enum : uint { EWX_FORCEIFHUNG = 0x00000010 }
  2483  // #endif /* _WIN32_WINNT >= 0x0500 */
  2484  
  2485  BOOL ExitWindows(DWORD dwReserved, UINT Code){ return ExitWindowsEx(EWX_LOGOFF, 0xFFFFFFFF); }
  2486  
  2487  extern(Windows) export BOOL ExitWindowsEx(
  2488    UINT uFlags,
  2489    DWORD dwReserved);
  2490  
  2491  extern(Windows) export BOOL SwapMouseButton(
  2492    BOOL fSwap);
  2493  
  2494  extern(Windows) export DWORD GetMessagePos();
  2495  
  2496  extern(Windows) export LONG GetMessageTime();
  2497  
  2498  extern(Windows) export LPARAM GetMessageExtraInfo();
  2499  
  2500  // #if(WINVER >= 0x0400)
  2501  extern(Windows) export LPARAM SetMessageExtraInfo(
  2502    LPARAM lParam);
  2503  // #endif /* WINVER >= 0x0400 */
  2504  
  2505  extern(Windows) export LRESULT SendMessageA(
  2506    HWND hWnd,
  2507    UINT Msg,
  2508    WPARAM wParam,
  2509    LPARAM lParam);
  2510  extern(Windows) export LRESULT SendMessageW(
  2511    HWND hWnd,
  2512    UINT Msg,
  2513    WPARAM wParam,
  2514    LPARAM lParam);
  2515  // #ifdef UNICODE
  2516  // #...
  2517  // #else
  2518  alias SendMessageA SendMessage;
  2519  // #endif // !UNICODE
  2520  
  2521  extern(Windows) export LRESULT SendMessageTimeoutA(
  2522    HWND hWnd,
  2523    UINT Msg,
  2524    WPARAM wParam,
  2525    LPARAM lParam,
  2526    UINT fuFlags,
  2527    UINT uTimeout,
  2528    PDWORD_PTR lpdwResult);
  2529  extern(Windows) export LRESULT SendMessageTimeoutW(
  2530    HWND hWnd,
  2531    UINT Msg,
  2532    WPARAM wParam,
  2533    LPARAM lParam,
  2534    UINT fuFlags,
  2535    UINT uTimeout,
  2536    PDWORD_PTR lpdwResult);
  2537  // #ifdef UNICODE
  2538  // #...
  2539  // #else
  2540  alias SendMessageTimeoutA SendMessageTimeout;
  2541  // #endif // !UNICODE
  2542  
  2543  extern(Windows) export BOOL SendNotifyMessageA(
  2544    HWND hWnd,
  2545    UINT Msg,
  2546    WPARAM wParam,
  2547    LPARAM lParam);
  2548  extern(Windows) export BOOL SendNotifyMessageW(
  2549    HWND hWnd,
  2550    UINT Msg,
  2551    WPARAM wParam,
  2552    LPARAM lParam);
  2553  // #ifdef UNICODE
  2554  // #...
  2555  // #else
  2556  alias SendNotifyMessageA SendNotifyMessage;
  2557  // #endif // !UNICODE
  2558  
  2559  extern(Windows) export BOOL SendMessageCallbackA(
  2560    HWND hWnd,
  2561    UINT Msg,
  2562    WPARAM wParam,
  2563    LPARAM lParam,
  2564    SENDASYNCPROC lpResultCallBack,
  2565    ULONG_PTR dwData);
  2566  extern(Windows) export BOOL SendMessageCallbackW(
  2567    HWND hWnd,
  2568    UINT Msg,
  2569    WPARAM wParam,
  2570    LPARAM lParam,
  2571    SENDASYNCPROC lpResultCallBack,
  2572    ULONG_PTR dwData);
  2573  // #ifdef UNICODE
  2574  // #...
  2575  // #else
  2576  alias SendMessageCallbackA SendMessageCallback;
  2577  // #endif // !UNICODE
  2578  
  2579  // #if(_WIN32_WINNT >= 0x0501)
  2580  struct _0 {
  2581    UINT cbSize;
  2582    HDESK hdesk;
  2583    HWND hwnd;
  2584    LUID luid;
  2585  }
  2586  alias _0 BSMINFO;
  2587  alias _0* PBSMINFO;
  2588  
  2589  extern(Windows) export int BroadcastSystemMessageExA(
  2590    DWORD,
  2591    LPDWORD,
  2592    UINT,
  2593    WPARAM,
  2594    LPARAM,
  2595    PBSMINFO);
  2596  extern(Windows) export int BroadcastSystemMessageExW(
  2597    DWORD,
  2598    LPDWORD,
  2599    UINT,
  2600    WPARAM,
  2601    LPARAM,
  2602    PBSMINFO);
  2603  // #ifdef UNICODE
  2604  // #...
  2605  // #else
  2606  alias BroadcastSystemMessageExA BroadcastSystemMessageEx;
  2607  // #endif // !UNICODE
  2608  // #endif /* _WIN32_WINNT >= 0x0501 */
  2609  
  2610  // #if(WINVER >= 0x0400)
  2611  
  2612  // #if defined(_WIN32_WINNT)
  2613  extern(Windows) export int BroadcastSystemMessageA(
  2614    DWORD,
  2615    LPDWORD,
  2616    UINT,
  2617    WPARAM,
  2618    LPARAM);
  2619  extern(Windows) export int BroadcastSystemMessageW(
  2620    DWORD,
  2621    LPDWORD,
  2622    UINT,
  2623    WPARAM,
  2624    LPARAM);
  2625  // #ifdef UNICODE
  2626  // #...
  2627  // #else
  2628  alias BroadcastSystemMessageA BroadcastSystemMessage;
  2629  // #endif // !UNICODE
  2630  // #elif defined(_WIN32_WINDOWS)
  2631  
  2632  // ...
  2633  
  2634  // #endif
  2635  
  2636  enum : uint { BSM_ALLCOMPONENTS = 0x00000000 }
  2637  enum : uint { BSM_VXDS = 0x00000001 }
  2638  enum : uint { BSM_NETDRIVER = 0x00000002 }
  2639  enum : uint { BSM_INSTALLABLEDRIVERS = 0x00000004 }
  2640  enum : uint { BSM_APPLICATIONS = 0x00000008 }
  2641  enum : uint { BSM_ALLDESKTOPS = 0x00000010 }
  2642  
  2643  enum : uint { BSF_QUERY = 0x00000001 }
  2644  enum : uint { BSF_IGNORECURRENTTASK = 0x00000002 }
  2645  enum : uint { BSF_FLUSHDISK = 0x00000004 }
  2646  enum : uint { BSF_NOHANG = 0x00000008 }
  2647  enum : uint { BSF_POSTMESSAGE = 0x00000010 }
  2648  enum : uint { BSF_FORCEIFHUNG = 0x00000020 }
  2649  enum : uint { BSF_NOTIMEOUTIFNOTHUNG = 0x00000040 }
  2650  // #if(_WIN32_WINNT >= 0x0500)
  2651  enum : uint { BSF_ALLOWSFW = 0x00000080 }
  2652  enum : uint { BSF_SENDNOTIFYMESSAGE = 0x00000100 }
  2653  // #endif /* _WIN32_WINNT >= 0x0500 */
  2654  // #if(_WIN32_WINNT >= 0x0501)
  2655  enum : uint { BSF_RETURNHDESK = 0x00000200 }
  2656  enum : uint { BSF_LUID = 0x00000400 }
  2657  // #endif /* _WIN32_WINNT >= 0x0501 */
  2658  
  2659  enum : uint { BROADCAST_QUERY_DENY = 0x424D5144 }
  2660  // #endif /* WINVER >= 0x0400 */
  2661  
  2662  // #if(WINVER >= 0x0500)
  2663  alias PVOID HDEVNOTIFY;
  2664  alias HDEVNOTIFY* PHDEVNOTIFY;
  2665  
  2666  enum : uint { DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000 }
  2667  enum : uint { DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 }
  2668  // #if(_WIN32_WINNT >= 0x0501)
  2669  enum : uint { DEVICE_NOTIFY_ALL_INTERFACE_CLASSES = 0x00000004 }
  2670  // #endif /* _WIN32_WINNT >= 0x0501 */
  2671  
  2672  extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationA(
  2673    HANDLE hRecipient,
  2674    LPVOID NotificationFilter,
  2675    DWORD Flags);
  2676  extern(Windows) export HDEVNOTIFY RegisterDeviceNotificationW(
  2677    HANDLE hRecipient,
  2678    LPVOID NotificationFilter,
  2679    DWORD Flags);
  2680  // #ifdef UNICODE
  2681  // #...
  2682  // #else
  2683  alias RegisterDeviceNotificationA RegisterDeviceNotification;
  2684  // #endif // !UNICODE
  2685  
  2686  extern(Windows) export BOOL UnregisterDeviceNotification(
  2687    HDEVNOTIFY Handle);
  2688  // #endif /* WINVER >= 0x0500 */
  2689  
  2690  extern(Windows) export BOOL PostMessageA(
  2691    HWND hWnd,
  2692    UINT Msg,
  2693    WPARAM wParam,
  2694    LPARAM lParam);
  2695  extern(Windows) export BOOL PostMessageW(
  2696    HWND hWnd,
  2697    UINT Msg,
  2698    WPARAM wParam,
  2699    LPARAM lParam);
  2700  // #ifdef UNICODE
  2701  // #...
  2702  // #else
  2703  alias PostMessageA PostMessage;
  2704  // #endif // !UNICODE
  2705  
  2706  extern(Windows) export BOOL PostThreadMessageA(
  2707    DWORD idThread,
  2708    UINT Msg,
  2709    WPARAM wParam,
  2710    LPARAM lParam);
  2711  extern(Windows) export BOOL PostThreadMessageW(
  2712    DWORD idThread,
  2713    UINT Msg,
  2714    WPARAM wParam,
  2715    LPARAM lParam);
  2716  // #ifdef UNICODE
  2717  // #...
  2718  // #else
  2719  alias PostThreadMessageA PostThreadMessage;
  2720  // #endif // !UNICODE
  2721  
  2722  alias PostThreadMessageA PostAppMessageA;
  2723  alias PostThreadMessageW PostAppMessageW;
  2724  // #ifdef UNICODE
  2725  // #...
  2726  // #else
  2727  alias PostAppMessageA PostAppMessage;
  2728  // #endif // !UNICODE
  2729  
  2730  const HWND HWND_BROADCAST = cast(HWND)0xffff;
  2731  
  2732  // #if(WINVER >= 0x0500)
  2733  const HWND HWND_MESSAGE = cast(HWND)-3;
  2734  // #endif /* WINVER >= 0x0500 */
  2735  
  2736  extern(Windows) export BOOL AttachThreadInput(
  2737    DWORD idAttach,
  2738    DWORD idAttachTo,
  2739    BOOL fAttach);
  2740  
  2741  extern(Windows) export BOOL ReplyMessage(
  2742    LRESULT lResult);
  2743  
  2744  extern(Windows) export BOOL WaitMessage();
  2745  
  2746  extern(Windows) export DWORD WaitForInputIdle(
  2747    HANDLE hProcess,
  2748    DWORD dwMilliseconds);
  2749  
  2750  extern(Windows) export LRESULT DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  2751  extern(Windows) export LRESULT DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  2752  // #ifdef UNICODE
  2753  // #...
  2754  // #else
  2755  alias DefWindowProcA DefWindowProc;
  2756  // #endif // !UNICODE
  2757  
  2758  extern(Windows) export VOID PostQuitMessage(
  2759    int nExitCode);
  2760  
  2761  // #ifdef STRICT
  2762  
  2763  extern(Windows) export LRESULT CallWindowProcA(
  2764    WNDPROC lpPrevWndFunc,
  2765    HWND hWnd,
  2766    UINT Msg,
  2767    WPARAM wParam,
  2768    LPARAM lParam);
  2769  extern(Windows) export LRESULT CallWindowProcW(
  2770    WNDPROC lpPrevWndFunc,
  2771    HWND hWnd,
  2772    UINT Msg,
  2773    WPARAM wParam,
  2774    LPARAM lParam);
  2775  // #ifdef UNICODE
  2776  // #...
  2777  // #else
  2778  alias CallWindowProcA CallWindowProc;
  2779  // #endif // !UNICODE
  2780  
  2781  // #else /* !STRICT */
  2782  
  2783  // ...
  2784  // #ifdef UNICODE
  2785  // #...
  2786  // #else
  2787  // #...
  2788  // #endif // !UNICODE
  2789  
  2790  // #endif /* !STRICT */
  2791  
  2792  extern(Windows) export BOOL InSendMessage();
  2793  
  2794  // #if(WINVER >= 0x0500)
  2795  extern(Windows) export DWORD InSendMessageEx(
  2796    LPVOID lpReserved);
  2797  
  2798  enum : uint { ISMEX_NOSEND = 0x00000000 }
  2799  enum : uint { ISMEX_SEND = 0x00000001 }
  2800  enum : uint { ISMEX_NOTIFY = 0x00000002 }
  2801  enum : uint { ISMEX_CALLBACK = 0x00000004 }
  2802  enum : uint { ISMEX_REPLIED = 0x00000008 }
  2803  // #endif /* WINVER >= 0x0500 */
  2804  
  2805  extern(Windows) export UINT GetDoubleClickTime();
  2806  
  2807  extern(Windows) export BOOL SetDoubleClickTime(
  2808    UINT);
  2809  
  2810  extern(Windows) export ATOM RegisterClassA(
  2811    WNDCLASSA *lpWndClass);
  2812  extern(Windows) export ATOM RegisterClassW(
  2813    WNDCLASSW *lpWndClass);
  2814  // #ifdef UNICODE
  2815  // #...
  2816  // #else
  2817  alias RegisterClassA RegisterClass;
  2818  // #endif // !UNICODE
  2819  
  2820  extern(Windows) export BOOL UnregisterClassA(
  2821    LPCSTR lpClassName,
  2822    HINSTANCE hInstance);
  2823  extern(Windows) export BOOL UnregisterClassW(
  2824    LPCWSTR lpClassName,
  2825    HINSTANCE hInstance);
  2826  // #ifdef UNICODE
  2827  // #...
  2828  // #else
  2829  alias UnregisterClassA UnregisterClass;
  2830  // #endif // !UNICODE
  2831  
  2832  extern(Windows) export BOOL GetClassInfoA(
  2833    HINSTANCE hInstance,
  2834    LPCSTR lpClassName,
  2835    LPWNDCLASSA lpWndClass);
  2836  extern(Windows) export BOOL GetClassInfoW(
  2837    HINSTANCE hInstance,
  2838    LPCWSTR lpClassName,
  2839    LPWNDCLASSW lpWndClass);
  2840  // #ifdef UNICODE
  2841  // #...
  2842  // #else
  2843  alias GetClassInfoA GetClassInfo;
  2844  // #endif // !UNICODE
  2845  
  2846  // #if(WINVER >= 0x0400)
  2847  extern(Windows) export ATOM RegisterClassExA(
  2848    WNDCLASSEXA *);
  2849  extern(Windows) export ATOM RegisterClassExW(
  2850    WNDCLASSEXW *);
  2851  // #ifdef UNICODE
  2852  // #...
  2853  // #else
  2854  alias RegisterClassExA RegisterClassEx;
  2855  // #endif // !UNICODE
  2856  
  2857  extern(Windows) export BOOL GetClassInfoExA(
  2858    HINSTANCE,
  2859    LPCSTR,
  2860    LPWNDCLASSEXA);
  2861  extern(Windows) export BOOL GetClassInfoExW(
  2862    HINSTANCE,
  2863    LPCWSTR,
  2864    LPWNDCLASSEXW);
  2865  // #ifdef UNICODE
  2866  // #...
  2867  // #else
  2868  alias GetClassInfoExA GetClassInfoEx;
  2869  // #endif // !UNICODE
  2870  
  2871  // #endif /* WINVER >= 0x0400 */
  2872  
  2873  enum { CW_USEDEFAULT = int.min }
  2874  
  2875  const HWND HWND_DESKTOP = cast(HWND)0;
  2876  
  2877  // #if(_WIN32_WINNT >= 0x0501)
  2878  extern(Windows) alias BOOLEAN function(LPCWSTR) PREGISTERCLASSNAMEW;
  2879  // #endif /* _WIN32_WINNT >= 0x0501 */
  2880  
  2881  extern(Windows) export HWND CreateWindowExA(
  2882    DWORD dwExStyle,
  2883    LPCSTR lpClassName,
  2884    LPCSTR lpWindowName,
  2885    DWORD dwStyle,
  2886    int X,
  2887    int Y,
  2888    int nWidth,
  2889    int nHeight,
  2890    HWND hWndParent,
  2891    HMENU hMenu,
  2892    HINSTANCE hInstance,
  2893    LPVOID lpParam);
  2894  extern(Windows) export HWND CreateWindowExW(
  2895    DWORD dwExStyle,
  2896    LPCWSTR lpClassName,
  2897    LPCWSTR lpWindowName,
  2898    DWORD dwStyle,
  2899    int X,
  2900    int Y,
  2901    int nWidth,
  2902    int nHeight,
  2903    HWND hWndParent,
  2904    HMENU hMenu,
  2905    HINSTANCE hInstance,
  2906    LPVOID lpParam);
  2907  // #ifdef UNICODE
  2908  // #...
  2909  // #else
  2910  alias CreateWindowExA CreateWindowEx;
  2911  // #endif // !UNICODE
  2912  
  2913  HWND CreateWindowA(LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); }
  2914  HWND CreateWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam){ return CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam); }
  2915  // #ifdef UNICODE
  2916  // #...
  2917  // #else
  2918  alias CreateWindowA CreateWindow;
  2919  // #endif // !UNICODE
  2920  
  2921  extern(Windows) export BOOL IsWindow(
  2922    HWND hWnd);
  2923  
  2924  extern(Windows) export BOOL IsMenu(
  2925    HMENU hMenu);
  2926  
  2927  extern(Windows) export BOOL IsChild(
  2928    HWND hWndParent,
  2929    HWND hWnd);
  2930  
  2931  extern(Windows) export BOOL DestroyWindow(
  2932    HWND hWnd);
  2933  
  2934  extern(Windows) export BOOL ShowWindow(
  2935    HWND hWnd,
  2936    int nCmdShow);
  2937  
  2938  // #if(WINVER >= 0x0500)
  2939  extern(Windows) export BOOL AnimateWindow(
  2940    HWND hWnd,
  2941    DWORD dwTime,
  2942    DWORD dwFlags);
  2943  // #endif /* WINVER >= 0x0500 */
  2944  
  2945  // #if(_WIN32_WINNT >= 0x0500)
  2946  // #if defined(_WINGDI_) && !defined (NOGDI)
  2947  
  2948  // ...
  2949  // #endif
  2950  
  2951  // #if(_WIN32_WINNT >= 0x0501)
  2952  extern(Windows) export BOOL GetLayeredWindowAttributes(
  2953    HWND hwnd,
  2954    COLORREF *pcrKey,
  2955    BYTE *pbAlpha,
  2956    DWORD *pdwFlags);
  2957  
  2958  enum : uint { PW_CLIENTONLY = 0x00000001 }
  2959  
  2960  extern(Windows) export BOOL PrintWindow(
  2961    HWND hwnd,
  2962    HDC hdcBlt,
  2963    UINT nFlags);
  2964  
  2965  // #endif /* _WIN32_WINNT >= 0x0501 */
  2966  
  2967  extern(Windows) export BOOL SetLayeredWindowAttributes(
  2968    HWND hwnd,
  2969    COLORREF crKey,
  2970    BYTE bAlpha,
  2971    DWORD dwFlags);
  2972  
  2973  enum : uint { LWA_COLORKEY = 0x00000001 }
  2974  enum : uint { LWA_ALPHA = 0x00000002 }
  2975  
  2976  enum : uint { ULW_COLORKEY = 0x00000001 }
  2977  enum : uint { ULW_ALPHA = 0x00000002 }
  2978  enum : uint { ULW_OPAQUE = 0x00000004 }
  2979  
  2980  // #endif /* _WIN32_WINNT >= 0x0500 */
  2981  
  2982  // #if(WINVER >= 0x0400)
  2983  extern(Windows) export BOOL ShowWindowAsync(
  2984    HWND hWnd,
  2985    int nCmdShow);
  2986  // #endif /* WINVER >= 0x0400 */
  2987  
  2988  extern(Windows) export BOOL FlashWindow(
  2989    HWND hWnd,
  2990    BOOL bInvert);
  2991  
  2992  // #if(WINVER >= 0x0500)
  2993  struct _1 {
  2994    UINT cbSize;
  2995    HWND hwnd;
  2996    DWORD dwFlags;
  2997    UINT uCount;
  2998    DWORD dwTimeout;
  2999  }
  3000  alias _1 FLASHWINFO;
  3001  alias _1* PFLASHWINFO;
  3002  
  3003  extern(Windows) export BOOL FlashWindowEx(
  3004    PFLASHWINFO pfwi);
  3005  
  3006  enum : uint { FLASHW_STOP = 0 }
  3007  enum : uint { FLASHW_CAPTION = 0x00000001 }
  3008  enum : uint { FLASHW_TRAY = 0x00000002 }
  3009  enum : uint { FLASHW_ALL = FLASHW_CAPTION | FLASHW_TRAY }
  3010  enum : uint { FLASHW_TIMER = 0x00000004 }
  3011  enum : uint { FLASHW_TIMERNOFG = 0x0000000C }
  3012  
  3013  // #endif /* WINVER >= 0x0500 */
  3014  
  3015  extern(Windows) export BOOL ShowOwnedPopups(
  3016    HWND hWnd,
  3017    BOOL fShow);
  3018  
  3019  extern(Windows) export BOOL OpenIcon(
  3020    HWND hWnd);
  3021  
  3022  extern(Windows) export BOOL CloseWindow(
  3023    HWND hWnd);
  3024  
  3025  extern(Windows) export BOOL MoveWindow(
  3026    HWND hWnd,
  3027    int X,
  3028    int Y,
  3029    int nWidth,
  3030    int nHeight,
  3031    BOOL bRepaint);
  3032  
  3033  extern(Windows) export BOOL SetWindowPos(
  3034    HWND hWnd,
  3035    HWND hWndInsertAfter,
  3036    int X,
  3037    int Y,
  3038    int cx,
  3039    int cy,
  3040    UINT uFlags);
  3041  
  3042  extern(Windows) export BOOL GetWindowPlacement(
  3043    HWND hWnd,
  3044    WINDOWPLACEMENT *lpwndpl);
  3045  
  3046  extern(Windows) export BOOL SetWindowPlacement(
  3047    HWND hWnd,
  3048    WINDOWPLACEMENT *lpwndpl);
  3049  
  3050  // #ifndef NODEFERWINDOWPOS
  3051  
  3052  extern(Windows) export HDWP BeginDeferWindowPos(
  3053    int nNumWindows);
  3054  
  3055  extern(Windows) export HDWP DeferWindowPos(
  3056    HDWP hWinPosInfo,
  3057    HWND hWnd,
  3058    HWND hWndInsertAfter,
  3059    int x,
  3060    int y,
  3061    int cx,
  3062    int cy,
  3063    UINT uFlags);
  3064  
  3065  extern(Windows) export BOOL EndDeferWindowPos(
  3066    HDWP hWinPosInfo);
  3067  
  3068  // #endif /* !NODEFERWINDOWPOS */
  3069  
  3070  extern(Windows) export BOOL IsWindowVisible(
  3071    HWND hWnd);
  3072  
  3073  extern(Windows) export BOOL IsIconic(
  3074    HWND hWnd);
  3075  
  3076  extern(Windows) export BOOL AnyPopup();
  3077  
  3078  extern(Windows) export BOOL BringWindowToTop(
  3079    HWND hWnd);
  3080  
  3081  extern(Windows) export BOOL IsZoomed(
  3082    HWND hWnd);
  3083  
  3084  enum : uint { SWP_NOSIZE = 0x0001 }
  3085  enum : uint { SWP_NOMOVE = 0x0002 }
  3086  enum : uint { SWP_NOZORDER = 0x0004 }
  3087  enum : uint { SWP_NOREDRAW = 0x0008 }
  3088  enum : uint { SWP_NOACTIVATE = 0x0010 }
  3089  enum : uint { SWP_FRAMECHANGED = 0x0020 }
  3090  enum : uint { SWP_SHOWWINDOW = 0x0040 }
  3091  enum : uint { SWP_HIDEWINDOW = 0x0080 }
  3092  enum : uint { SWP_NOCOPYBITS = 0x0100 }
  3093  enum : uint { SWP_NOOWNERZORDER = 0x0200 }
  3094  enum : uint { SWP_NOSENDCHANGING = 0x0400 }
  3095  
  3096  alias SWP_FRAMECHANGED SWP_DRAWFRAME;
  3097  alias SWP_NOOWNERZORDER SWP_NOREPOSITION;
  3098  
  3099  // #if(WINVER >= 0x0400)
  3100  enum : uint { SWP_DEFERERASE = 0x2000 }
  3101  enum : uint { SWP_ASYNCWINDOWPOS = 0x4000 }
  3102  // #endif /* WINVER >= 0x0400 */
  3103  
  3104  const HWND HWND_TOP = cast(HWND)0;
  3105  const HWND HWND_BOTTOM = cast(HWND)1;
  3106  const HWND HWND_TOPMOST = cast(HWND)-1;
  3107  const HWND HWND_NOTOPMOST = cast(HWND)-2;
  3108  
  3109  // #ifndef NOCTLMGR
  3110  
  3111  align(2):
  3112  
  3113  struct _2 {
  3114    DWORD style;
  3115    DWORD dwExtendedStyle;
  3116    WORD cdit;
  3117    short x;
  3118    short y;
  3119    short cx;
  3120    short cy;
  3121  }
  3122  alias _2 DLGTEMPLATE;
  3123  
  3124  alias DLGTEMPLATE* LPDLGTEMPLATEA;
  3125  alias DLGTEMPLATE* LPDLGTEMPLATEW;
  3126  // #ifdef UNICODE
  3127  // ...
  3128  // #else
  3129  alias LPDLGTEMPLATEA LPDLGTEMPLATE;
  3130  // #endif // UNICODE
  3131  alias DLGTEMPLATE* LPCDLGTEMPLATEA;
  3132  alias DLGTEMPLATE* LPCDLGTEMPLATEW;
  3133  // #ifdef UNICODE
  3134  // ...
  3135  // #else
  3136  alias LPCDLGTEMPLATEA LPCDLGTEMPLATE;
  3137  // #endif // UNICODE
  3138  
  3139  struct _3 {
  3140    DWORD style;
  3141    DWORD dwExtendedStyle;
  3142    short x;
  3143    short y;
  3144    short cx;
  3145    short cy;
  3146    WORD id;
  3147  }
  3148  alias _3 DLGITEMTEMPLATE;
  3149  
  3150  alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEA;
  3151  alias DLGITEMTEMPLATE* PDLGITEMTEMPLATEW;
  3152  // #ifdef UNICODE
  3153  // ...
  3154  // #else
  3155  alias PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
  3156  // #endif // UNICODE
  3157  alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEA;
  3158  alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATEW;
  3159  // #ifdef UNICODE
  3160  // ...
  3161  // #else
  3162  alias LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
  3163  // #endif // UNICODE
  3164  
  3165  align:
  3166  
  3167  extern(Windows) export HWND CreateDialogParamA(
  3168    HINSTANCE hInstance,
  3169    LPCSTR lpTemplateName,
  3170    HWND hWndParent,
  3171    DLGPROC lpDialogFunc,
  3172    LPARAM dwInitParam);
  3173  extern(Windows) export HWND CreateDialogParamW(
  3174    HINSTANCE hInstance,
  3175    LPCWSTR lpTemplateName,
  3176    HWND hWndParent,
  3177    DLGPROC lpDialogFunc,
  3178    LPARAM dwInitParam);
  3179  // #ifdef UNICODE
  3180  // #...
  3181  // #else
  3182  alias CreateDialogParamA CreateDialogParam;
  3183  // #endif // !UNICODE
  3184  
  3185  extern(Windows) export HWND CreateDialogIndirectParamA(
  3186    HINSTANCE hInstance,
  3187    LPCDLGTEMPLATEA lpTemplate,
  3188    HWND hWndParent,
  3189    DLGPROC lpDialogFunc,
  3190    LPARAM dwInitParam);
  3191  extern(Windows) export HWND CreateDialogIndirectParamW(
  3192    HINSTANCE hInstance,
  3193    LPCDLGTEMPLATEW lpTemplate,
  3194    HWND hWndParent,
  3195    DLGPROC lpDialogFunc,
  3196    LPARAM dwInitParam);
  3197  // #ifdef UNICODE
  3198  // #...
  3199  // #else
  3200  alias CreateDialogIndirectParamA CreateDialogIndirectParam;
  3201  // #endif // !UNICODE
  3202  
  3203  HWND CreateDialogA(HINSTANCE hInstance, LPCSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamA(hInstance, lpName, hWndParent, lpDialogFunc, 0L); }
  3204  HWND CreateDialogW(HINSTANCE hInstance, LPCWSTR lpName, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogParamW(hInstance, lpName, hWndParent, lpDialogFunc, 0L); }
  3205  // #ifdef UNICODE
  3206  // #...
  3207  // #else
  3208  alias CreateDialogA CreateDialog;
  3209  // #endif // !UNICODE
  3210  
  3211  HWND CreateDialogIndirectA(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); }
  3212  HWND CreateDialogIndirectW(HINSTANCE hInstance, LPCDLGTEMPLATE lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc){ return CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L); }
  3213  // #ifdef UNICODE
  3214  // #...
  3215  // #else
  3216  alias CreateDialogIndirectA CreateDialogIndirect;
  3217  // #endif // !UNICODE
  3218  
  3219  extern(Windows) export INT_PTR DialogBoxParamA(
  3220    HINSTANCE hInstance,
  3221    LPCSTR lpTemplateName,
  3222    HWND hWndParent,
  3223    DLGPROC lpDialogFunc,
  3224    LPARAM dwInitParam);
  3225  extern(Windows) export INT_PTR DialogBoxParamW(
  3226    HINSTANCE hInstance,
  3227    LPCWSTR lpTemplateName,
  3228    HWND hWndParent,
  3229    DLGPROC lpDialogFunc,
  3230    LPARAM dwInitParam);
  3231  // #ifdef UNICODE
  3232  // #...
  3233  // #else
  3234  alias DialogBoxParamA DialogBoxParam;
  3235  // #endif // !UNICODE
  3236  
  3237  extern(Windows) export INT_PTR DialogBoxIndirectParamA(
  3238    HINSTANCE hInstance,
  3239    LPCDLGTEMPLATEA hDialogTemplate,
  3240    HWND hWndParent,
  3241    DLGPROC lpDialogFunc,
  3242    LPARAM dwInitParam);
  3243  extern(Windows) export INT_PTR DialogBoxIndirectParamW(
  3244    HINSTANCE hInstance,
  3245    LPCDLGTEMPLATEW hDialogTemplate,
  3246    HWND hWndParent,
  3247    DLGPROC lpDialogFunc,
  3248    LPARAM dwInitParam);
  3249  // #ifdef UNICODE
  3250  // #...
  3251  // #else
  3252  alias DialogBoxIndirectParamA DialogBoxIndirectParam;
  3253  // #endif // !UNICODE
  3254  
  3255  // #define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3256  // #define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3257  // #ifdef UNICODE
  3258  // #...
  3259  // #else
  3260  // #define DialogBox DialogBoxA
  3261  // #endif // !UNICODE
  3262  
  3263  // #define DialogBoxIndirectA(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3264  // #define DialogBoxIndirectW(hInstance, lpTemplate, hWndParent, lpDialogFunc) DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
  3265  // #ifdef UNICODE
  3266  // #...
  3267  // #else
  3268  // #define DialogBoxIndirect DialogBoxIndirectA
  3269  // #endif // !UNICODE
  3270  
  3271  extern(Windows) export BOOL EndDialog(
  3272    HWND hDlg,
  3273    INT_PTR nResult);
  3274  
  3275  extern(Windows) export HWND GetDlgItem(
  3276    HWND hDlg,
  3277    int nIDDlgItem);
  3278  
  3279  extern(Windows) export BOOL SetDlgItemInt(
  3280    HWND hDlg,
  3281    int nIDDlgItem,
  3282    UINT uValue,
  3283    BOOL bSigned);
  3284  
  3285  extern(Windows) export UINT GetDlgItemInt(
  3286    HWND hDlg,
  3287    int nIDDlgItem,
  3288    BOOL *lpTranslated,
  3289    BOOL bSigned);
  3290  
  3291  extern(Windows) export BOOL SetDlgItemTextA(
  3292    HWND hDlg,
  3293    int nIDDlgItem,
  3294    LPCSTR lpString);
  3295  extern(Windows) export BOOL SetDlgItemTextW(
  3296    HWND hDlg,
  3297    int nIDDlgItem,
  3298    LPCWSTR lpString);
  3299  // #ifdef UNICODE
  3300  // #...
  3301  // #else
  3302  alias SetDlgItemTextA SetDlgItemText;
  3303  // #endif // !UNICODE
  3304  
  3305  extern(Windows) export UINT GetDlgItemTextA(
  3306    HWND hDlg,
  3307    int nIDDlgItem,
  3308    LPSTR lpString,
  3309    int nMaxCount);
  3310  extern(Windows) export UINT GetDlgItemTextW(
  3311    HWND hDlg,
  3312    int nIDDlgItem,
  3313    LPWSTR lpString,
  3314    int nMaxCount);
  3315  // #ifdef UNICODE
  3316  // #...
  3317  // #else
  3318  alias GetDlgItemTextA GetDlgItemText;
  3319  // #endif // !UNICODE
  3320  
  3321  extern(Windows) export BOOL CheckDlgButton(
  3322    HWND hDlg,
  3323    int nIDButton,
  3324    UINT uCheck);
  3325  
  3326  extern(Windows) export BOOL CheckRadioButton(
  3327    HWND hDlg,
  3328    int nIDFirstButton,
  3329    int nIDLastButton,
  3330    int nIDCheckButton);
  3331  
  3332  extern(Windows) export UINT IsDlgButtonChecked(
  3333    HWND hDlg,
  3334    int nIDButton);
  3335  
  3336  extern(Windows) export LRESULT SendDlgItemMessageA(
  3337    HWND hDlg,
  3338    int nIDDlgItem,
  3339    UINT Msg,
  3340    WPARAM wParam,
  3341    LPARAM lParam);
  3342  extern(Windows) export LRESULT SendDlgItemMessageW(
  3343    HWND hDlg,
  3344    int nIDDlgItem,
  3345    UINT Msg,
  3346    WPARAM wParam,
  3347    LPARAM lParam);
  3348  // #ifdef UNICODE
  3349  // #...
  3350  // #else
  3351  alias SendDlgItemMessageA SendDlgItemMessage;
  3352  // #endif // !UNICODE
  3353  
  3354  extern(Windows) export HWND GetNextDlgGroupItem(
  3355    HWND hDlg,
  3356    HWND hCtl,
  3357    BOOL bPrevious);
  3358  
  3359  extern(Windows) export HWND GetNextDlgTabItem(
  3360    HWND hDlg,
  3361    HWND hCtl,
  3362    BOOL bPrevious);
  3363  
  3364  extern(Windows) export int GetDlgCtrlID(
  3365    HWND hWnd);
  3366  
  3367  extern(Windows) export int GetDialogBaseUnits();
  3368  
  3369  extern(Windows) export LRESULT DefDlgProcA(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
  3370  extern(Windows) export LRESULT DefDlgProcW(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
  3371  // #ifdef UNICODE
  3372  // #...
  3373  // #else
  3374  alias DefDlgProcA DefDlgProc;
  3375  // #endif // !UNICODE
  3376  
  3377  // #ifndef _MAC
  3378  enum : uint { DLGWINDOWEXTRA = 30 }
  3379  // #else
  3380  // #...
  3381  // #endif
  3382  
  3383  // #endif /* !NOCTLMGR */
  3384  
  3385  // #ifndef NOMSG
  3386  
  3387  extern(Windows) export BOOL CallMsgFilterA(
  3388    LPMSG lpMsg,
  3389    int nCode);
  3390  extern(Windows) export BOOL CallMsgFilterW(
  3391    LPMSG lpMsg,
  3392    int nCode);
  3393  // #ifdef UNICODE
  3394  // #...
  3395  // #else
  3396  alias CallMsgFilterA CallMsgFilter;
  3397  // #endif // !UNICODE
  3398  
  3399  // #endif /* !NOMSG */
  3400  
  3401  // #ifndef NOCLIPBOARD
  3402  
  3403  extern(Windows) export BOOL OpenClipboard(
  3404    HWND hWndNewOwner);
  3405  
  3406  extern(Windows) export BOOL CloseClipboard();
  3407  
  3408  // #if(WINVER >= 0x0500)
  3409  
  3410  extern(Windows) export DWORD GetClipboardSequenceNumber();
  3411  
  3412  // #endif /* WINVER >= 0x0500 */
  3413  
  3414  extern(Windows) export HWND GetClipboardOwner();
  3415  
  3416  extern(Windows) export HWND SetClipboardViewer(
  3417    HWND hWndNewViewer);
  3418  
  3419  extern(Windows) export HWND GetClipboardViewer();
  3420  
  3421  extern(Windows) export BOOL ChangeClipboardChain(
  3422    HWND hWndRemove,
  3423    HWND hWndNewNext);
  3424  
  3425  extern(Windows) export HANDLE SetClipboardData(
  3426    UINT uFormat,
  3427    HANDLE hMem);
  3428  
  3429  extern(Windows) export HANDLE GetClipboardData(
  3430    UINT uFormat);
  3431  
  3432  extern(Windows) export UINT RegisterClipboardFormatA(
  3433    LPCSTR lpszFormat);
  3434  extern(Windows) export UINT RegisterClipboardFormatW(
  3435    LPCWSTR lpszFormat);
  3436  // #ifdef UNICODE
  3437  // #...
  3438  // #else
  3439  alias RegisterClipboardFormatA RegisterClipboardFormat;
  3440  // #endif // !UNICODE
  3441  
  3442  extern(Windows) export int CountClipboardFormats();
  3443  
  3444  extern(Windows) export UINT EnumClipboardFormats(
  3445    UINT format);
  3446  
  3447  extern(Windows) export int GetClipboardFormatNameA(
  3448    UINT format,
  3449    LPSTR lpszFormatName,
  3450    int cchMaxCount);
  3451  extern(Windows) export int GetClipboardFormatNameW(
  3452    UINT format,
  3453    LPWSTR lpszFormatName,
  3454    int cchMaxCount);
  3455  // #ifdef UNICODE
  3456  // #...
  3457  // #else
  3458  alias GetClipboardFormatNameA GetClipboardFormatName;
  3459  // #endif // !UNICODE
  3460  
  3461  extern(Windows) export BOOL EmptyClipboard();
  3462  
  3463  extern(Windows) export BOOL IsClipboardFormatAvailable(
  3464    UINT format);
  3465  
  3466  extern(Windows) export int GetPriorityClipboardFormat(
  3467    UINT *paFormatPriorityList,
  3468    int cFormats);
  3469  
  3470  extern(Windows) export HWND GetOpenClipboardWindow();
  3471  
  3472  // #endif /* !NOCLIPBOARD */
  3473  
  3474  extern(Windows) export BOOL CharToOemA(
  3475    LPCSTR lpszSrc,
  3476    LPSTR lpszDst);
  3477  extern(Windows) export BOOL CharToOemW(
  3478    LPCWSTR lpszSrc,
  3479    LPSTR lpszDst);
  3480  // #ifdef UNICODE
  3481  // #...
  3482  // #else
  3483  alias CharToOemA CharToOem;
  3484  // #endif // !UNICODE
  3485  
  3486  extern(Windows) export BOOL OemToCharA(
  3487    LPCSTR lpszSrc,
  3488    LPSTR lpszDst);
  3489  extern(Windows) export BOOL OemToCharW(
  3490    LPCSTR lpszSrc,
  3491    LPWSTR lpszDst);
  3492  // #ifdef UNICODE
  3493  // #...
  3494  // #else
  3495  alias OemToCharA OemToChar;
  3496  // #endif // !UNICODE
  3497  
  3498  extern(Windows) export BOOL CharToOemBuffA(
  3499    LPCSTR lpszSrc,
  3500    LPSTR lpszDst,
  3501    DWORD cchDstLength);
  3502  extern(Windows) export BOOL CharToOemBuffW(
  3503    LPCWSTR lpszSrc,
  3504    LPSTR lpszDst,
  3505    DWORD cchDstLength);
  3506  // #ifdef UNICODE
  3507  // #...
  3508  // #else
  3509  alias CharToOemBuffA CharToOemBuff;
  3510  // #endif // !UNICODE
  3511  
  3512  extern(Windows) export BOOL OemToCharBuffA(
  3513    LPCSTR lpszSrc,
  3514    LPSTR lpszDst,
  3515    DWORD cchDstLength);
  3516  extern(Windows) export BOOL OemToCharBuffW(
  3517    LPCSTR lpszSrc,
  3518    LPWSTR lpszDst,
  3519    DWORD cchDstLength);
  3520  // #ifdef UNICODE
  3521  // #...
  3522  // #else
  3523  alias OemToCharBuffA OemToCharBuff;
  3524  // #endif // !UNICODE
  3525  
  3526  extern(Windows) export LPSTR CharUpperA(
  3527    LPSTR lpsz);
  3528  extern(Windows) export LPWSTR CharUpperW(
  3529    LPWSTR lpsz);
  3530  // #ifdef UNICODE
  3531  // #...
  3532  // #else
  3533  alias CharUpperA CharUpper;
  3534  // #endif // !UNICODE
  3535  
  3536  extern(Windows) export DWORD CharUpperBuffA(
  3537    LPSTR lpsz,
  3538    DWORD cchLength);
  3539  extern(Windows) export DWORD CharUpperBuffW(
  3540    LPWSTR lpsz,
  3541    DWORD cchLength);
  3542  // #ifdef UNICODE
  3543  // #...
  3544  // #else
  3545  alias CharUpperBuffA CharUpperBuff;
  3546  // #endif // !UNICODE
  3547  
  3548  extern(Windows) export LPSTR CharLowerA(
  3549    LPSTR lpsz);
  3550  extern(Windows) export LPWSTR CharLowerW(
  3551    LPWSTR lpsz);
  3552  // #ifdef UNICODE
  3553  // #...
  3554  // #else
  3555  alias CharLowerA CharLower;
  3556  // #endif // !UNICODE
  3557  
  3558  extern(Windows) export DWORD CharLowerBuffA(
  3559    LPSTR lpsz,
  3560    DWORD cchLength);
  3561  extern(Windows) export DWORD CharLowerBuffW(
  3562    LPWSTR lpsz,
  3563    DWORD cchLength);
  3564  // #ifdef UNICODE
  3565  // #...
  3566  // #else
  3567  alias CharLowerBuffA CharLowerBuff;
  3568  // #endif // !UNICODE
  3569  
  3570  extern(Windows) export LPSTR CharNextA(
  3571    LPCSTR lpsz);
  3572  extern(Windows) export LPWSTR CharNextW(
  3573    LPCWSTR lpsz);
  3574  // #ifdef UNICODE
  3575  // #...
  3576  // #else
  3577  alias CharNextA CharNext;
  3578  // #endif // !UNICODE
  3579  
  3580  extern(Windows) export LPSTR CharPrevA(
  3581    LPCSTR lpszStart,
  3582    LPCSTR lpszCurrent);
  3583  extern(Windows) export LPWSTR CharPrevW(
  3584    LPCWSTR lpszStart,
  3585    LPCWSTR lpszCurrent);
  3586  // #ifdef UNICODE
  3587  // #...
  3588  // #else
  3589  alias CharPrevA CharPrev;
  3590  // #endif // !UNICODE
  3591  
  3592  // #if(WINVER >= 0x0400)
  3593  extern(Windows) export LPSTR CharNextExA(
  3594    WORD CodePage,
  3595    LPCSTR lpCurrentChar,
  3596    DWORD dwFlags);
  3597  
  3598  extern(Windows) export LPSTR CharPrevExA(
  3599    WORD CodePage,
  3600    LPCSTR lpStart,
  3601    LPCSTR lpCurrentChar,
  3602    DWORD dwFlags);
  3603  // #endif /* WINVER >= 0x0400 */
  3604  
  3605  alias CharToOemA AnsiToOem;
  3606  alias OemToCharA OemToAnsi;
  3607  alias CharToOemBuffA AnsiToOemBuff;
  3608  alias OemToCharBuffA OemToAnsiBuff;
  3609  alias CharUpperA AnsiUpper;
  3610  alias CharUpperBuffA AnsiUpperBuff;
  3611  alias CharLowerA AnsiLower;
  3612  alias CharLowerBuffA AnsiLowerBuff;
  3613  alias CharNextA AnsiNext;
  3614  alias CharPrevA AnsiPrev;
  3615  
  3616  // #ifndef  NOLANGUAGE
  3617  
  3618  extern(Windows) export BOOL IsCharAlphaA(
  3619    CHAR ch);
  3620  extern(Windows) export BOOL IsCharAlphaW(
  3621    WCHAR ch);
  3622  // #ifdef UNICODE
  3623  // #...
  3624  // #else
  3625  alias IsCharAlphaA IsCharAlpha;
  3626  // #endif // !UNICODE
  3627  
  3628  extern(Windows) export BOOL IsCharAlphaNumericA(
  3629    CHAR ch);
  3630  extern(Windows) export BOOL IsCharAlphaNumericW(
  3631    WCHAR ch);
  3632  // #ifdef UNICODE
  3633  // #...
  3634  // #else
  3635  alias IsCharAlphaNumericA IsCharAlphaNumeric;
  3636  // #endif // !UNICODE
  3637  
  3638  extern(Windows) export BOOL IsCharUpperA(
  3639    CHAR ch);
  3640  extern(Windows) export BOOL IsCharUpperW(
  3641    WCHAR ch);
  3642  // #ifdef UNICODE
  3643  // #...
  3644  // #else
  3645  alias IsCharUpperA IsCharUpper;
  3646  // #endif // !UNICODE
  3647  
  3648  extern(Windows) export BOOL IsCharLowerA(
  3649    CHAR ch);
  3650  extern(Windows) export BOOL IsCharLowerW(
  3651    WCHAR ch);
  3652  // #ifdef UNICODE
  3653  // #...
  3654  // #else
  3655  alias IsCharLowerA IsCharLower;
  3656  // #endif // !UNICODE
  3657  
  3658  // #endif  /* !NOLANGUAGE */
  3659  
  3660  extern(Windows) export HWND SetFocus(
  3661    HWND hWnd);
  3662  
  3663  extern(Windows) export HWND GetActiveWindow();
  3664  
  3665  extern(Windows) export HWND GetFocus();
  3666  
  3667  extern(Windows) export UINT GetKBCodePage();
  3668  
  3669  extern(Windows) export SHORT GetKeyState(
  3670    int nVirtKey);
  3671  
  3672  extern(Windows) export SHORT GetAsyncKeyState(
  3673    int vKey);
  3674  
  3675  extern(Windows) export BOOL GetKeyboardState(
  3676    PBYTE lpKeyState);
  3677  
  3678  extern(Windows) export BOOL SetKeyboardState(
  3679    LPBYTE lpKeyState);
  3680  
  3681  extern(Windows) export int GetKeyNameTextA(
  3682    LONG lParam,
  3683    LPSTR lpString,
  3684    int nSize);
  3685  extern(Windows) export int GetKeyNameTextW(
  3686    LONG lParam,
  3687    LPWSTR lpString,
  3688    int nSize);
  3689  // #ifdef UNICODE
  3690  // #...
  3691  // #else
  3692  alias GetKeyNameTextA GetKeyNameText;
  3693  // #endif // !UNICODE
  3694  
  3695  extern(Windows) export int GetKeyboardType(
  3696    int nTypeFlag);
  3697  
  3698  extern(Windows) export int ToAscii(
  3699    UINT uVirtKey,
  3700    UINT uScanCode,
  3701    BYTE *lpKeyState,
  3702    LPWORD lpChar,
  3703    UINT uFlags);
  3704  
  3705  // #if(WINVER >= 0x0400)
  3706  extern(Windows) export int ToAsciiEx(
  3707    UINT uVirtKey,
  3708    UINT uScanCode,
  3709    BYTE *lpKeyState,
  3710    LPWORD lpChar,
  3711    UINT uFlags,
  3712    HKL dwhkl);
  3713  // #endif /* WINVER >= 0x0400 */
  3714  
  3715  extern(Windows) export int ToUnicode(
  3716    UINT wVirtKey,
  3717    UINT wScanCode,
  3718    BYTE *lpKeyState,
  3719    LPWSTR pwszBuff,
  3720    int cchBuff,
  3721    UINT wFlags);
  3722  
  3723  extern(Windows) export DWORD OemKeyScan(
  3724    WORD wOemChar);
  3725  
  3726  extern(Windows) export SHORT VkKeyScanA(
  3727    CHAR ch);
  3728  extern(Windows) export SHORT VkKeyScanW(
  3729    WCHAR ch);
  3730  // #ifdef UNICODE
  3731  // #...
  3732  // #else
  3733  alias VkKeyScanA VkKeyScan;
  3734  // #endif // !UNICODE
  3735  
  3736  // #if(WINVER >= 0x0400)
  3737  extern(Windows) export SHORT VkKeyScanExA(
  3738    CHAR ch,
  3739    HKL dwhkl);
  3740  extern(Windows) export SHORT VkKeyScanExW(
  3741    WCHAR ch,
  3742    HKL dwhkl);
  3743  // #ifdef UNICODE
  3744  // #...
  3745  // #else
  3746  alias VkKeyScanExA VkKeyScanEx;
  3747  // #endif // !UNICODE
  3748  // #endif /* WINVER >= 0x0400 */
  3749  enum : uint { KEYEVENTF_EXTENDEDKEY = 0x0001 }
  3750  enum : uint { KEYEVENTF_KEYUP = 0x0002 }
  3751  // #if(_WIN32_WINNT >= 0x0500)
  3752  enum : uint { KEYEVENTF_UNICODE = 0x0004 }
  3753  enum : uint { KEYEVENTF_SCANCODE = 0x0008 }
  3754  // #endif /* _WIN32_WINNT >= 0x0500 */
  3755  
  3756  extern(Windows) export VOID keybd_event(
  3757    BYTE bVk,
  3758    BYTE bScan,
  3759    DWORD dwFlags,
  3760    ULONG_PTR dwExtraInfo);
  3761  
  3762  enum : uint { MOUSEEVENTF_MOVE = 0x0001 }
  3763  enum : uint { MOUSEEVENTF_LEFTDOWN = 0x0002 }
  3764  enum : uint { MOUSEEVENTF_LEFTUP = 0x0004 }
  3765  enum : uint { MOUSEEVENTF_RIGHTDOWN = 0x0008 }
  3766  enum : uint { MOUSEEVENTF_RIGHTUP = 0x0010 }
  3767  enum : uint { MOUSEEVENTF_MIDDLEDOWN = 0x0020 }
  3768  enum : uint { MOUSEEVENTF_MIDDLEUP = 0x0040 }
  3769  enum : uint { MOUSEEVENTF_XDOWN = 0x0080 }
  3770  enum : uint { MOUSEEVENTF_XUP = 0x0100 }
  3771  enum : uint { MOUSEEVENTF_WHEEL = 0x0800 }
  3772  enum : uint { MOUSEEVENTF_VIRTUALDESK = 0x4000 }
  3773  enum : uint { MOUSEEVENTF_ABSOLUTE = 0x8000 }
  3774  
  3775  extern(Windows) export VOID mouse_event(
  3776    DWORD dwFlags,
  3777    DWORD dx,
  3778    DWORD dy,
  3779    DWORD dwData,
  3780    ULONG_PTR dwExtraInfo);
  3781  
  3782  // #if (_WIN32_WINNT > 0x0400)
  3783  
  3784  struct tagMOUSEINPUT {
  3785    LONG dx;
  3786    LONG dy;
  3787    DWORD mouseData;
  3788    DWORD dwFlags;
  3789    DWORD time;
  3790    ULONG_PTR dwExtraInfo;
  3791  }
  3792  alias tagMOUSEINPUT MOUSEINPUT;
  3793  alias tagMOUSEINPUT* PMOUSEINPUT;
  3794  alias tagMOUSEINPUT* LPMOUSEINPUT;
  3795  
  3796  struct tagKEYBDINPUT {
  3797    WORD wVk;
  3798    WORD wScan;
  3799    DWORD dwFlags;
  3800    DWORD time;
  3801    ULONG_PTR dwExtraInfo;
  3802  }
  3803  alias tagKEYBDINPUT KEYBDINPUT;
  3804  alias tagKEYBDINPUT* PKEYBDINPUT;
  3805  alias tagKEYBDINPUT* LPKEYBDINPUT;
  3806  
  3807  struct tagHARDWAREINPUT {
  3808    DWORD uMsg;
  3809    WORD wParamL;
  3810    WORD wParamH;
  3811  }
  3812  alias tagHARDWAREINPUT HARDWAREINPUT;
  3813  alias tagHARDWAREINPUT* PHARDWAREINPUT;
  3814  alias tagHARDWAREINPUT* LPHARDWAREINPUT;
  3815  
  3816  enum : uint { INPUT_MOUSE = 0 }
  3817  enum : uint { INPUT_KEYBOARD = 1 }
  3818  enum : uint { INPUT_HARDWARE = 2 }
  3819  
  3820  struct tagINPUT {
  3821    DWORD type;
  3822  union {
  3823    MOUSEINPUT mi;
  3824    KEYBDINPUT ki;
  3825    HARDWAREINPUT hi;
  3826  }
  3827  
  3828  }
  3829  alias tagINPUT INPUT;
  3830  alias tagINPUT* PINPUT;
  3831  alias tagINPUT* LPINPUT;
  3832  
  3833  extern(Windows) export UINT SendInput(
  3834    UINT cInputs, // number of input in the array
  3835    LPINPUT pInputs, // array of inputs
  3836    int cbSize);
  3837  
  3838  // #endif // (_WIN32_WINNT > 0x0400)
  3839  
  3840  // #if(_WIN32_WINNT >= 0x0500)
  3841  struct tagLASTINPUTINFO {
  3842    UINT cbSize;
  3843    DWORD dwTime;
  3844  }
  3845  alias tagLASTINPUTINFO LASTINPUTINFO;
  3846  alias tagLASTINPUTINFO* PLASTINPUTINFO;
  3847  
  3848  extern(Windows) export BOOL GetLastInputInfo(
  3849    PLASTINPUTINFO plii);
  3850  // #endif /* _WIN32_WINNT >= 0x0500 */
  3851  
  3852  extern(Windows) export UINT MapVirtualKeyA(
  3853    UINT uCode,
  3854    UINT uMapType);
  3855  extern(Windows) export UINT MapVirtualKeyW(
  3856    UINT uCode,
  3857    UINT uMapType);
  3858  // #ifdef UNICODE
  3859  // #...
  3860  // #else
  3861  alias MapVirtualKeyA MapVirtualKey;
  3862  // #endif // !UNICODE
  3863  
  3864  // #if(WINVER >= 0x0400)
  3865  extern(Windows) export UINT MapVirtualKeyExA(
  3866    UINT uCode,
  3867    UINT uMapType,
  3868    HKL dwhkl);
  3869  extern(Windows) export UINT MapVirtualKeyExW(
  3870    UINT uCode,
  3871    UINT uMapType,
  3872    HKL dwhkl);
  3873  // #ifdef UNICODE
  3874  // #...
  3875  // #else
  3876  alias MapVirtualKeyExA MapVirtualKeyEx;
  3877  // #endif // !UNICODE
  3878  // #endif /* WINVER >= 0x0400 */
  3879  
  3880  extern(Windows) export BOOL GetInputState();
  3881  
  3882  extern(Windows) export DWORD GetQueueStatus(
  3883    UINT flags);
  3884  
  3885  extern(Windows) export HWND GetCapture();
  3886  
  3887  extern(Windows) export HWND SetCapture(
  3888    HWND hWnd);
  3889  
  3890  extern(Windows) export BOOL ReleaseCapture();
  3891  
  3892  extern(Windows) export DWORD MsgWaitForMultipleObjects(
  3893    DWORD nCount,
  3894    HANDLE *pHandles,
  3895    BOOL fWaitAll,
  3896    DWORD dwMilliseconds,
  3897    DWORD dwWakeMask);
  3898  
  3899  extern(Windows) export DWORD MsgWaitForMultipleObjectsEx(
  3900    DWORD nCount,
  3901    HANDLE *pHandles,
  3902    DWORD dwMilliseconds,
  3903    DWORD dwWakeMask,
  3904    DWORD dwFlags);
  3905  
  3906  enum : uint { MWMO_WAITALL = 0x0001 }
  3907  enum : uint { MWMO_ALERTABLE = 0x0002 }
  3908  enum : uint { MWMO_INPUTAVAILABLE = 0x0004 }
  3909  
  3910  enum : uint { QS_KEY = 0x0001 }
  3911  enum : uint { QS_MOUSEMOVE = 0x0002 }
  3912  enum : uint { QS_MOUSEBUTTON = 0x0004 }
  3913  // #define QS_POSTMESSAGE 0x0008
  3914  // #define QS_TIMER 0x0010
  3915  // #define QS_PAINT 0x0020
  3916  // #define QS_SENDMESSAGE 0x0040
  3917  // #define QS_HOTKEY 0x0080
  3918  enum : uint { QS_ALLPOSTMESSAGE = 0x0100 }
  3919  // #if(_WIN32_WINNT >= 0x0501)
  3920  enum : uint { QS_RAWINPUT = 0x0400 }
  3921  // #endif /* _WIN32_WINNT >= 0x0501 */
  3922  
  3923  enum : uint { QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON }
  3924  
  3925  // #if (_WIN32_WINNT >= 0x0501)
  3926  // #define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT)
  3927  // #else
  3928  // #...
  3929  // ...
  3930  // #endif // (_WIN32_WINNT >= 0x0501)
  3931  
  3932  enum : uint { QS_ALLEVENTS = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY }
  3933  
  3934  enum : uint { QS_ALLINPUT = QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE }
  3935  
  3936  extern(Windows) export UINT_PTR SetTimer(
  3937    HWND hWnd,
  3938    UINT_PTR nIDEvent,
  3939    UINT uElapse,
  3940    TIMERPROC lpTimerFunc);
  3941  
  3942  extern(Windows) export BOOL KillTimer(
  3943    HWND hWnd,
  3944    UINT_PTR uIDEvent);
  3945  
  3946  extern(Windows) export BOOL IsWindowUnicode(
  3947    HWND hWnd);
  3948  
  3949  extern(Windows) export BOOL EnableWindow(
  3950    HWND hWnd,
  3951    BOOL bEnable);
  3952  
  3953  extern(Windows) export BOOL IsWindowEnabled(
  3954    HWND hWnd);
  3955  
  3956  extern(Windows) export HACCEL LoadAcceleratorsA(
  3957    HINSTANCE hInstance,
  3958    LPCSTR lpTableName);
  3959  extern(Windows) export HACCEL LoadAcceleratorsW(
  3960    HINSTANCE hInstance,
  3961    LPCWSTR lpTableName);
  3962  // #ifdef UNICODE
  3963  // #...
  3964  // #else
  3965  alias LoadAcceleratorsA LoadAccelerators;
  3966  // #endif // !UNICODE
  3967  
  3968  extern(Windows) export HACCEL CreateAcceleratorTableA(
  3969    LPACCEL, int);
  3970  extern(Windows) export HACCEL CreateAcceleratorTableW(
  3971    LPACCEL, int);
  3972  // #ifdef UNICODE
  3973  // #...
  3974  // #else
  3975  alias CreateAcceleratorTableA CreateAcceleratorTable;
  3976  // #endif // !UNICODE
  3977  
  3978  extern(Windows) export BOOL DestroyAcceleratorTable(
  3979    HACCEL hAccel);
  3980  
  3981  extern(Windows) export int CopyAcceleratorTableA(
  3982    HACCEL hAccelSrc,
  3983    LPACCEL lpAccelDst,
  3984    int cAccelEntries);
  3985  extern(Windows) export int CopyAcceleratorTableW(
  3986    HACCEL hAccelSrc,
  3987    LPACCEL lpAccelDst,
  3988    int cAccelEntries);
  3989  // #ifdef UNICODE
  3990  // #...
  3991  // #else
  3992  alias CopyAcceleratorTableA CopyAcceleratorTable;
  3993  // #endif // !UNICODE
  3994  
  3995  // #ifndef NOMSG
  3996  
  3997  extern(Windows) export int TranslateAcceleratorA(
  3998    HWND hWnd,
  3999    HACCEL hAccTable,
  4000    LPMSG lpMsg);
  4001  extern(Windows) export int TranslateAcceleratorW(
  4002    HWND hWnd,
  4003    HACCEL hAccTable,
  4004    LPMSG lpMsg);
  4005  // #ifdef UNICODE
  4006  // #...
  4007  // #else
  4008  alias TranslateAcceleratorA TranslateAccelerator;
  4009  // #endif // !UNICODE
  4010  
  4011  // #endif /* !NOMSG */
  4012  
  4013  // #ifndef NOSYSMETRICS
  4014  
  4015  enum : uint { SM_CXSCREEN = 0 }
  4016  enum : uint { SM_CYSCREEN = 1 }
  4017  enum : uint { SM_CXVSCROLL = 2 }
  4018  enum : uint { SM_CYHSCROLL = 3 }
  4019  enum : uint { SM_CYCAPTION = 4 }
  4020  enum : uint { SM_CXBORDER = 5 }
  4021  enum : uint { SM_CYBORDER = 6 }
  4022  enum : uint { SM_CXDLGFRAME = 7 }
  4023  enum : uint { SM_CYDLGFRAME = 8 }
  4024  enum : uint { SM_CYVTHUMB = 9 }
  4025  enum : uint { SM_CXHTHUMB = 10 }
  4026  enum : uint { SM_CXICON = 11 }
  4027  enum : uint { SM_CYICON = 12 }
  4028  enum : uint { SM_CXCURSOR = 13 }
  4029  enum : uint { SM_CYCURSOR = 14 }
  4030  enum : uint { SM_CYMENU = 15 }
  4031  enum : uint { SM_CXFULLSCREEN = 16 }
  4032  enum : uint { SM_CYFULLSCREEN = 17 }
  4033  enum : uint { SM_CYKANJIWINDOW = 18 }
  4034  enum : uint { SM_MOUSEPRESENT = 19 }
  4035  enum : uint { SM_CYVSCROLL = 20 }
  4036  enum : uint { SM_CXHSCROLL = 21 }
  4037  enum : uint { SM_DEBUG = 22 }
  4038  enum : uint { SM_SWAPBUTTON = 23 }
  4039  enum : uint { SM_RESERVED1 = 24 }
  4040  enum : uint { SM_RESERVED2 = 25 }
  4041  enum : uint { SM_RESERVED3 = 26 }
  4042  enum : uint { SM_RESERVED4 = 27 }
  4043  enum : uint { SM_CXMIN = 28 }
  4044  enum : uint { SM_CYMIN = 29 }
  4045  enum : uint { SM_CXSIZE = 30 }
  4046  enum : uint { SM_CYSIZE = 31 }
  4047  enum : uint { SM_CXFRAME = 32 }
  4048  enum : uint { SM_CYFRAME = 33 }
  4049  enum : uint { SM_CXMINTRACK = 34 }
  4050  enum : uint { SM_CYMINTRACK = 35 }
  4051  enum : uint { SM_CXDOUBLECLK = 36 }
  4052  enum : uint { SM_CYDOUBLECLK = 37 }
  4053  enum : uint { SM_CXICONSPACING = 38 }
  4054  enum : uint { SM_CYICONSPACING = 39 }
  4055  enum : uint { SM_MENUDROPALIGNMENT = 40 }
  4056  enum : uint { SM_PENWINDOWS = 41 }
  4057  enum : uint { SM_DBCSENABLED = 42 }
  4058  enum : uint { SM_CMOUSEBUTTONS = 43 }
  4059  
  4060  // #if(WINVER >= 0x0400)
  4061  alias SM_CXDLGFRAME SM_CXFIXEDFRAME;
  4062  alias SM_CYDLGFRAME SM_CYFIXEDFRAME;
  4063  alias SM_CXFRAME SM_CXSIZEFRAME;
  4064  alias SM_CYFRAME SM_CYSIZEFRAME;
  4065  
  4066  enum : uint { SM_SECURE = 44 }
  4067  enum : uint { SM_CXEDGE = 45 }
  4068  enum : uint { SM_CYEDGE = 46 }
  4069  enum : uint { SM_CXMINSPACING = 47 }
  4070  enum : uint { SM_CYMINSPACING = 48 }
  4071  enum : uint { SM_CXSMICON = 49 }
  4072  enum : uint { SM_CYSMICON = 50 }
  4073  enum : uint { SM_CYSMCAPTION = 51 }
  4074  enum : uint { SM_CXSMSIZE = 52 }
  4075  enum : uint { SM_CYSMSIZE = 53 }
  4076  enum : uint { SM_CXMENUSIZE = 54 }
  4077  enum : uint { SM_CYMENUSIZE = 55 }
  4078  enum : uint { SM_ARRANGE = 56 }
  4079  enum : uint { SM_CXMINIMIZED = 57 }
  4080  enum : uint { SM_CYMINIMIZED = 58 }
  4081  enum : uint { SM_CXMAXTRACK = 59 }
  4082  enum : uint { SM_CYMAXTRACK = 60 }
  4083  enum : uint { SM_CXMAXIMIZED = 61 }
  4084  enum : uint { SM_CYMAXIMIZED = 62 }
  4085  enum : uint { SM_NETWORK = 63 }
  4086  enum : uint { SM_CLEANBOOT = 67 }
  4087  enum : uint { SM_CXDRAG = 68 }
  4088  enum : uint { SM_CYDRAG = 69 }
  4089  // #endif /* WINVER >= 0x0400 */
  4090  enum : uint { SM_SHOWSOUNDS = 70 }
  4091  // #if(WINVER >= 0x0400)
  4092  enum : uint { SM_CXMENUCHECK = 71 }
  4093  enum : uint { SM_CYMENUCHECK = 72 }
  4094  enum : uint { SM_SLOWMACHINE = 73 }
  4095  enum : uint { SM_MIDEASTENABLED = 74 }
  4096  // #endif /* WINVER >= 0x0400 */
  4097  
  4098  // #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  4099  enum : uint { SM_MOUSEWHEELPRESENT = 75 }
  4100  // #endif
  4101  // #if(WINVER >= 0x0500)
  4102  enum : uint { SM_XVIRTUALSCREEN = 76 }
  4103  enum : uint { SM_YVIRTUALSCREEN = 77 }
  4104  enum : uint { SM_CXVIRTUALSCREEN = 78 }
  4105  enum : uint { SM_CYVIRTUALSCREEN = 79 }
  4106  enum : uint { SM_CMONITORS = 80 }
  4107  enum : uint { SM_SAMEDISPLAYFORMAT = 81 }
  4108  // #endif /* WINVER >= 0x0500 */
  4109  // #if(_WIN32_WINNT >= 0x0500)
  4110  enum : uint { SM_IMMENABLED = 82 }
  4111  // #endif /* _WIN32_WINNT >= 0x0500 */
  4112  // #if(_WIN32_WINNT >= 0x0501)
  4113  enum : uint { SM_CXFOCUSBORDER = 83 }
  4114  enum : uint { SM_CYFOCUSBORDER = 84 }
  4115  // #endif /* _WIN32_WINNT >= 0x0501 */
  4116  
  4117  // #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400))
  4118  // #...
  4119  // #else
  4120  enum : uint { SM_CMETRICS = 86 }
  4121  // #endif
  4122  
  4123  // #if(WINVER >= 0x0500)
  4124  enum : uint { SM_REMOTESESSION = 0x1000 }
  4125  
  4126  // #if(_WIN32_WINNT >= 0x0501)
  4127  enum : uint { SM_SHUTTINGDOWN = 0x2000 }
  4128  // #endif /* _WIN32_WINNT >= 0x0501 */
  4129  
  4130  // #endif /* WINVER >= 0x0500 */
  4131  
  4132  extern(Windows) export int GetSystemMetrics(
  4133    int nIndex);
  4134  
  4135  // #endif /* !NOSYSMETRICS */
  4136  
  4137  // #ifndef NOMENUS
  4138  
  4139  extern(Windows) export HMENU LoadMenuA(
  4140    HINSTANCE hInstance,
  4141    LPCSTR lpMenuName);
  4142  extern(Windows) export HMENU LoadMenuW(
  4143    HINSTANCE hInstance,
  4144    LPCWSTR lpMenuName);
  4145  // #ifdef UNICODE
  4146  // #...
  4147  // #else
  4148  alias LoadMenuA LoadMenu;
  4149  // #endif // !UNICODE
  4150  
  4151  extern(Windows) export HMENU LoadMenuIndirectA(
  4152    MENUTEMPLATEA *lpMenuTemplate);
  4153  extern(Windows) export HMENU LoadMenuIndirectW(
  4154    MENUTEMPLATEW *lpMenuTemplate);
  4155  // #ifdef UNICODE
  4156  // #...
  4157  // #else
  4158  alias LoadMenuIndirectA LoadMenuIndirect;
  4159  // #endif // !UNICODE
  4160  
  4161  extern(Windows) export HMENU GetMenu(
  4162    HWND hWnd);
  4163  
  4164  extern(Windows) export BOOL SetMenu(
  4165    HWND hWnd,
  4166    HMENU hMenu);
  4167  
  4168  extern(Windows) export BOOL ChangeMenuA(
  4169    HMENU hMenu,
  4170    UINT cmd,
  4171    LPCSTR lpszNewItem,
  4172    UINT cmdInsert,
  4173    UINT flags);
  4174  extern(Windows) export BOOL ChangeMenuW(
  4175    HMENU hMenu,
  4176    UINT cmd,
  4177    LPCWSTR lpszNewItem,
  4178    UINT cmdInsert,
  4179    UINT flags);
  4180  // #ifdef UNICODE
  4181  // #...
  4182  // #else
  4183  alias ChangeMenuA ChangeMenu;
  4184  // #endif // !UNICODE
  4185  
  4186  extern(Windows) export BOOL HiliteMenuItem(
  4187    HWND hWnd,
  4188    HMENU hMenu,
  4189    UINT uIDHiliteItem,
  4190    UINT uHilite);
  4191  
  4192  extern(Windows) export int GetMenuStringA(
  4193    HMENU hMenu,
  4194    UINT uIDItem,
  4195    LPSTR lpString,
  4196    int nMaxCount,
  4197    UINT uFlag);
  4198  extern(Windows) export int GetMenuStringW(
  4199    HMENU hMenu,
  4200    UINT uIDItem,
  4201    LPWSTR lpString,
  4202    int nMaxCount,
  4203    UINT uFlag);
  4204  // #ifdef UNICODE
  4205  // #...
  4206  // #else
  4207  alias GetMenuStringA GetMenuString;
  4208  // #endif // !UNICODE
  4209  
  4210  extern(Windows) export UINT GetMenuState(
  4211    HMENU hMenu,
  4212    UINT uId,
  4213    UINT uFlags);
  4214  
  4215  extern(Windows) export BOOL DrawMenuBar(
  4216    HWND hWnd);
  4217  
  4218  // #if(_WIN32_WINNT >= 0x0501)
  4219  enum : uint { PMB_ACTIVE = 0x00000001 }
  4220  
  4221  // #endif /* _WIN32_WINNT >= 0x0501 */
  4222  
  4223  extern(Windows) export HMENU GetSystemMenu(
  4224    HWND hWnd,
  4225    BOOL bRevert);
  4226  
  4227  extern(Windows) export HMENU CreateMenu();
  4228  
  4229  extern(Windows) export HMENU CreatePopupMenu();
  4230  
  4231  extern(Windows) export BOOL DestroyMenu(
  4232    HMENU hMenu);
  4233  
  4234  extern(Windows) export DWORD CheckMenuItem(
  4235    HMENU hMenu,
  4236    UINT uIDCheckItem,
  4237    UINT uCheck);
  4238  
  4239  extern(Windows) export BOOL EnableMenuItem(
  4240    HMENU hMenu,
  4241    UINT uIDEnableItem,
  4242    UINT uEnable);
  4243  
  4244  extern(Windows) export HMENU GetSubMenu(
  4245    HMENU hMenu,
  4246    int nPos);
  4247  
  4248  extern(Windows) export UINT GetMenuItemID(
  4249    HMENU hMenu,
  4250    int nPos);
  4251  
  4252  extern(Windows) export int GetMenuItemCount(
  4253    HMENU hMenu);
  4254  
  4255  extern(Windows) export BOOL InsertMenuA(
  4256    HMENU hMenu,
  4257    UINT uPosition,
  4258    UINT uFlags,
  4259    UINT_PTR uIDNewItem,
  4260    LPCSTR lpNewItem);
  4261  extern(Windows) export BOOL InsertMenuW(
  4262    HMENU hMenu,
  4263    UINT uPosition,
  4264    UINT uFlags,
  4265    UINT_PTR uIDNewItem,
  4266    LPCWSTR lpNewItem);
  4267  // #ifdef UNICODE
  4268  // #...
  4269  // #else
  4270  alias InsertMenuA InsertMenu;
  4271  // #endif // !UNICODE
  4272  
  4273  extern(Windows) export BOOL AppendMenuA(
  4274    HMENU hMenu,
  4275    UINT uFlags,
  4276    UINT_PTR uIDNewItem,
  4277    LPCSTR lpNewItem);
  4278  extern(Windows) export BOOL AppendMenuW(
  4279    HMENU hMenu,
  4280    UINT uFlags,
  4281    UINT_PTR uIDNewItem,
  4282    LPCWSTR lpNewItem);
  4283  // #ifdef UNICODE
  4284  // #...
  4285  // #else
  4286  alias AppendMenuA AppendMenu;
  4287  // #endif // !UNICODE
  4288  
  4289  extern(Windows) export BOOL ModifyMenuA(
  4290    HMENU hMnu,
  4291    UINT uPosition,
  4292    UINT uFlags,
  4293    UINT_PTR uIDNewItem,
  4294    LPCSTR lpNewItem);
  4295  extern(Windows) export BOOL ModifyMenuW(
  4296    HMENU hMnu,
  4297    UINT uPosition,
  4298    UINT uFlags,
  4299    UINT_PTR uIDNewItem,
  4300    LPCWSTR lpNewItem);
  4301  // #ifdef UNICODE
  4302  // #...
  4303  // #else
  4304  alias ModifyMenuA ModifyMenu;
  4305  // #endif // !UNICODE
  4306  
  4307  extern(Windows) export BOOL RemoveMenu(
  4308    HMENU hMenu,
  4309    UINT uPosition,
  4310    UINT uFlags);
  4311  
  4312  extern(Windows) export BOOL DeleteMenu(
  4313    HMENU hMenu,
  4314    UINT uPosition,
  4315    UINT uFlags);
  4316  
  4317  extern(Windows) export BOOL SetMenuItemBitmaps(
  4318    HMENU hMenu,
  4319    UINT uPosition,
  4320    UINT uFlags,
  4321    HBITMAP hBitmapUnchecked,
  4322    HBITMAP hBitmapChecked);
  4323  
  4324  extern(Windows) export LONG GetMenuCheckMarkDimensions();
  4325  
  4326  extern(Windows) export BOOL TrackPopupMenu(
  4327    HMENU hMenu,
  4328    UINT uFlags,
  4329    int x,
  4330    int y,
  4331    int nReserved,
  4332    HWND hWnd,
  4333    RECT *prcRect);
  4334  
  4335  // #if(WINVER >= 0x0400)
  4336  
  4337  enum : uint { MNC_IGNORE = 0 }
  4338  enum : uint { MNC_CLOSE = 1 }
  4339  enum : uint { MNC_EXECUTE = 2 }
  4340  enum : uint { MNC_SELECT = 3 }
  4341  
  4342  struct tagTPMPARAMS {
  4343    UINT cbSize;
  4344    RECT rcExclude;
  4345  }
  4346  alias tagTPMPARAMS TPMPARAMS;
  4347  
  4348  alias TPMPARAMS* LPTPMPARAMS;
  4349  
  4350  extern(Windows) export BOOL TrackPopupMenuEx(
  4351    HMENU,
  4352    UINT,
  4353    int,
  4354    int,
  4355    HWND,
  4356    LPTPMPARAMS);
  4357  // #endif /* WINVER >= 0x0400 */
  4358  
  4359  // #if(WINVER >= 0x0500)
  4360  
  4361  enum : uint { MNS_NOCHECK = 0x80000000 }
  4362  enum : uint { MNS_MODELESS = 0x40000000 }
  4363  enum : uint { MNS_DRAGDROP = 0x20000000 }
  4364  enum : uint { MNS_AUTODISMISS = 0x10000000 }
  4365  enum : uint { MNS_NOTIFYBYPOS = 0x08000000 }
  4366  enum : uint { MNS_CHECKORBMP = 0x04000000 }
  4367  
  4368  enum : uint { MIM_MAXHEIGHT = 0x00000001 }
  4369  enum : uint { MIM_BACKGROUND = 0x00000002 }
  4370  enum : uint { MIM_HELPID = 0x00000004 }
  4371  enum : uint { MIM_MENUDATA = 0x00000008 }
  4372  enum : uint { MIM_STYLE = 0x00000010 }
  4373  enum : uint { MIM_APPLYTOSUBMENUS = 0x80000000 }
  4374  
  4375  struct tagMENUINFO {
  4376    DWORD cbSize;
  4377    DWORD fMask;
  4378    DWORD dwStyle;
  4379    UINT cyMax;
  4380    HBRUSH hbrBack;
  4381    DWORD dwContextHelpID;
  4382    ULONG_PTR dwMenuData;
  4383  }
  4384  alias tagMENUINFO MENUINFO;
  4385  alias tagMENUINFO* LPMENUINFO;
  4386  
  4387  alias MENUINFO* LPCMENUINFO;
  4388  
  4389  extern(Windows) export BOOL GetMenuInfo(
  4390    HMENU,
  4391    LPMENUINFO);
  4392  
  4393  extern(Windows) export BOOL SetMenuInfo(
  4394    HMENU,
  4395    LPCMENUINFO);
  4396  
  4397  extern(Windows) export BOOL EndMenu();
  4398  
  4399  enum : uint { MND_CONTINUE = 0 }
  4400  enum : uint { MND_ENDMENU = 1 }
  4401  
  4402  struct tagMENUGETOBJECTINFO {
  4403    DWORD dwFlags;
  4404    UINT uPos;
  4405    HMENU hmenu;
  4406    PVOID riid;
  4407    PVOID pvObj;
  4408  }
  4409  alias tagMENUGETOBJECTINFO MENUGETOBJECTINFO;
  4410  alias tagMENUGETOBJECTINFO* PMENUGETOBJECTINFO;
  4411  
  4412  enum : uint { MNGOF_TOPGAP = 0x00000001 }
  4413  enum : uint { MNGOF_BOTTOMGAP = 0x00000002 }
  4414  
  4415  enum : uint { MNGO_NOINTERFACE = 0x00000000 }
  4416  enum : uint { MNGO_NOERROR = 0x00000001 }
  4417  // #endif /* WINVER >= 0x0500 */
  4418  
  4419  // #if(WINVER >= 0x0400)
  4420  enum : uint { MIIM_STATE = 0x00000001 }
  4421  enum : uint { MIIM_ID = 0x00000002 }
  4422  enum : uint { MIIM_SUBMENU = 0x00000004 }
  4423  enum : uint { MIIM_CHECKMARKS = 0x00000008 }
  4424  enum : uint { MIIM_TYPE = 0x00000010 }
  4425  enum : uint { MIIM_DATA = 0x00000020 }
  4426  // #endif /* WINVER >= 0x0400 */
  4427  
  4428  // #if(WINVER >= 0x0500)
  4429  enum : uint { MIIM_STRING = 0x00000040 }
  4430  enum : uint { MIIM_BITMAP = 0x00000080 }
  4431  enum : uint { MIIM_FTYPE = 0x00000100 }
  4432  
  4433  const HBITMAP HBMMENU_CALLBACK = cast(HBITMAP)-1;
  4434  const HBITMAP HBMMENU_SYSTEM = cast(HBITMAP)1;
  4435  const HBITMAP HBMMENU_MBAR_RESTORE = cast(HBITMAP)2;
  4436  const HBITMAP HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3;
  4437  const HBITMAP HBMMENU_MBAR_CLOSE = cast(HBITMAP)5;
  4438  const HBITMAP HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6;
  4439  const HBITMAP HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7;
  4440  const HBITMAP HBMMENU_POPUP_CLOSE = cast(HBITMAP)8;
  4441  const HBITMAP HBMMENU_POPUP_RESTORE = cast(HBITMAP)9;
  4442  const HBITMAP HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10;
  4443  const HBITMAP HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11;
  4444  // #endif /* WINVER >= 0x0500 */
  4445  
  4446  // #if(WINVER >= 0x0400)
  4447  struct tagMENUITEMINFOA {
  4448    UINT cbSize;
  4449    UINT fMask;
  4450    UINT fType;
  4451    UINT fState;
  4452    UINT wID;
  4453    HMENU hSubMenu;
  4454    HBITMAP hbmpChecked;
  4455    HBITMAP hbmpUnchecked;
  4456    ULONG_PTR dwItemData;
  4457    LPSTR dwTypeData;
  4458    UINT cch;
  4459  // #if(WINVER >= 0x0500)
  4460    HBITMAP hbmpItem;
  4461  // #endif /* WINVER >= 0x0500 */
  4462  }
  4463  alias tagMENUITEMINFOA MENUITEMINFOA;
  4464  alias tagMENUITEMINFOA* LPMENUITEMINFOA;
  4465  
  4466  struct tagMENUITEMINFOW {
  4467    UINT cbSize;
  4468    UINT fMask;
  4469    UINT fType;
  4470    UINT fState;
  4471    UINT wID;
  4472    HMENU hSubMenu;
  4473    HBITMAP hbmpChecked;
  4474    HBITMAP hbmpUnchecked;
  4475    ULONG_PTR dwItemData;
  4476    LPWSTR dwTypeData;
  4477    UINT cch;
  4478  // #if(WINVER >= 0x0500)
  4479    HBITMAP hbmpItem;
  4480  // #endif /* WINVER >= 0x0500 */
  4481  }
  4482  alias tagMENUITEMINFOW MENUITEMINFOW;
  4483  alias tagMENUITEMINFOW* LPMENUITEMINFOW;
  4484  
  4485  // #ifdef UNICODE
  4486  // ...
  4487  // #else
  4488  alias MENUITEMINFOA MENUITEMINFO;
  4489  alias LPMENUITEMINFOA LPMENUITEMINFO;
  4490  // #endif // UNICODE
  4491  alias MENUITEMINFOA* LPCMENUITEMINFOA;
  4492  alias MENUITEMINFOW* LPCMENUITEMINFOW;
  4493  // #ifdef UNICODE
  4494  // ...
  4495  // #else
  4496  alias LPCMENUITEMINFOA LPCMENUITEMINFO;
  4497  // #endif // UNICODE
  4498  
  4499  extern(Windows) export BOOL InsertMenuItemA(
  4500    HMENU,
  4501    UINT,
  4502    BOOL,
  4503    LPCMENUITEMINFOA);
  4504  extern(Windows) export BOOL InsertMenuItemW(
  4505    HMENU,
  4506    UINT,
  4507    BOOL,
  4508    LPCMENUITEMINFOW);
  4509  // #ifdef UNICODE
  4510  // #...
  4511  // #else
  4512  alias InsertMenuItemA InsertMenuItem;
  4513  // #endif // !UNICODE
  4514  
  4515  extern(Windows) export BOOL GetMenuItemInfoA(
  4516    HMENU,
  4517    UINT,
  4518    BOOL,
  4519    LPMENUITEMINFOA);
  4520  extern(Windows) export BOOL GetMenuItemInfoW(
  4521    HMENU,
  4522    UINT,
  4523    BOOL,
  4524    LPMENUITEMINFOW);
  4525  // #ifdef UNICODE
  4526  // #...
  4527  // #else
  4528  alias GetMenuItemInfoA GetMenuItemInfo;
  4529  // #endif // !UNICODE
  4530  
  4531  extern(Windows) export BOOL SetMenuItemInfoA(
  4532    HMENU,
  4533    UINT,
  4534    BOOL,
  4535    LPCMENUITEMINFOA);
  4536  extern(Windows) export BOOL SetMenuItemInfoW(
  4537    HMENU,
  4538    UINT,
  4539    BOOL,
  4540    LPCMENUITEMINFOW);
  4541  // #ifdef UNICODE
  4542  // #...
  4543  // #else
  4544  alias SetMenuItemInfoA SetMenuItemInfo;
  4545  // #endif // !UNICODE
  4546  
  4547  enum : uint { GMDI_USEDISABLED = 0x0001 }
  4548  enum : uint { GMDI_GOINTOPOPUPS = 0x0002 }
  4549  
  4550  extern(Windows) export UINT GetMenuDefaultItem(HMENU hMenu, UINT fByPos, UINT gmdiFlags);
  4551  extern(Windows) export BOOL SetMenuDefaultItem(HMENU hMenu, UINT uItem, UINT fByPos);
  4552  
  4553  extern(Windows) export BOOL GetMenuItemRect(HWND hWnd, HMENU hMenu, UINT uItem, LPRECT lprcItem);
  4554  extern(Windows) export int MenuItemFromPoint(HWND hWnd, HMENU hMenu, POINT ptScreen);
  4555  // #endif /* WINVER >= 0x0400 */
  4556  
  4557  enum : uint { TPM_LEFTBUTTON = 0x0000 }
  4558  enum : uint { TPM_RIGHTBUTTON = 0x0002 }
  4559  enum : uint { TPM_LEFTALIGN = 0x0000 }
  4560  enum : uint { TPM_CENTERALIGN = 0x0004 }
  4561  enum : uint { TPM_RIGHTALIGN = 0x0008 }
  4562  // #if(WINVER >= 0x0400)
  4563  enum : uint { TPM_TOPALIGN = 0x0000 }
  4564  enum : uint { TPM_VCENTERALIGN = 0x0010 }
  4565  enum : uint { TPM_BOTTOMALIGN = 0x0020 }
  4566  
  4567  enum : uint { TPM_HORIZONTAL = 0x0000 }
  4568  enum : uint { TPM_VERTICAL = 0x0040 }
  4569  enum : uint { TPM_NONOTIFY = 0x0080 }
  4570  enum : uint { TPM_RETURNCMD = 0x0100 }
  4571  // #endif /* WINVER >= 0x0400 */
  4572  // #if(WINVER >= 0x0500)
  4573  enum : uint { TPM_RECURSE = 0x0001 }
  4574  enum : uint { TPM_HORPOSANIMATION = 0x0400 }
  4575  enum : uint { TPM_HORNEGANIMATION = 0x0800 }
  4576  enum : uint { TPM_VERPOSANIMATION = 0x1000 }
  4577  enum : uint { TPM_VERNEGANIMATION = 0x2000 }
  4578  // #if(_WIN32_WINNT >= 0x0500)
  4579  enum : uint { TPM_NOANIMATION = 0x4000 }
  4580  // #endif /* _WIN32_WINNT >= 0x0500 */
  4581  // #if(_WIN32_WINNT >= 0x0501)
  4582  enum : uint { TPM_LAYOUTRTL = 0x8000 }
  4583  // #endif /* _WIN32_WINNT >= 0x0501 */
  4584  // #endif /* WINVER >= 0x0500 */
  4585  
  4586  // #endif /* !NOMENUS */
  4587  
  4588  // #if(WINVER >= 0x0400)
  4589  
  4590  struct tagDROPSTRUCT {
  4591    HWND hwndSource;
  4592    HWND hwndSink;
  4593    DWORD wFmt;
  4594    ULONG_PTR dwData;
  4595    POINT ptDrop;
  4596    DWORD dwControlData;
  4597  }
  4598  alias tagDROPSTRUCT DROPSTRUCT;
  4599  alias tagDROPSTRUCT* PDROPSTRUCT;
  4600  alias tagDROPSTRUCT* LPDROPSTRUCT;
  4601  
  4602  enum : uint { DOF_EXECUTABLE = 0x8001 }
  4603  enum : uint { DOF_DOCUMENT = 0x8002 }
  4604  enum : uint { DOF_DIRECTORY = 0x8003 }
  4605  enum : uint { DOF_MULTIPLE = 0x8004 }
  4606  enum : uint { DOF_PROGMAN = 0x0001 }
  4607  enum : uint { DOF_SHELLDATA = 0x0002 }
  4608  
  4609  enum : uint { DO_DROPFILE = 0x454C4946 }
  4610  enum : uint { DO_PRINTFILE = 0x544E5250 }
  4611  
  4612  extern(Windows) export DWORD DragObject(
  4613    HWND,
  4614    HWND,
  4615    UINT,
  4616    ULONG_PTR,
  4617    HCURSOR);
  4618  
  4619  extern(Windows) export BOOL DragDetect(
  4620    HWND,
  4621    POINT);
  4622  // #endif /* WINVER >= 0x0400 */
  4623  
  4624  extern(Windows) export BOOL DrawIcon(
  4625    HDC hDC,
  4626    int X,
  4627    int Y,
  4628    HICON hIcon);
  4629  
  4630  // #ifndef NODRAWTEXT
  4631  
  4632  enum : uint { DT_TOP = 0x00000000 }
  4633  enum : uint { DT_LEFT = 0x00000000 }
  4634  enum : uint { DT_CENTER = 0x00000001 }
  4635  enum : uint { DT_RIGHT = 0x00000002 }
  4636  enum : uint { DT_VCENTER = 0x00000004 }
  4637  enum : uint { DT_BOTTOM = 0x00000008 }
  4638  enum : uint { DT_WORDBREAK = 0x00000010 }
  4639  enum : uint { DT_SINGLELINE = 0x00000020 }
  4640  enum : uint { DT_EXPANDTABS = 0x00000040 }
  4641  enum : uint { DT_TABSTOP = 0x00000080 }
  4642  enum : uint { DT_NOCLIP = 0x00000100 }
  4643  enum : uint { DT_EXTERNALLEADING = 0x00000200 }
  4644  enum : uint { DT_CALCRECT = 0x00000400 }
  4645  enum : uint { DT_NOPREFIX = 0x00000800 }
  4646  enum : uint { DT_INTERNAL = 0x00001000 }
  4647  
  4648  // #if(WINVER >= 0x0400)
  4649  enum : uint { DT_EDITCONTROL = 0x00002000 }
  4650  enum : uint { DT_PATH_ELLIPSIS = 0x00004000 }
  4651  enum : uint { DT_END_ELLIPSIS = 0x00008000 }
  4652  enum : uint { DT_MODIFYSTRING = 0x00010000 }
  4653  enum : uint { DT_RTLREADING = 0x00020000 }
  4654  enum : uint { DT_WORD_ELLIPSIS = 0x00040000 }
  4655  // #if(WINVER >= 0x0500)
  4656  enum : uint { DT_NOFULLWIDTHCHARBREAK = 0x00080000 }
  4657  // #if(_WIN32_WINNT >= 0x0500)
  4658  enum : uint { DT_HIDEPREFIX = 0x00100000 }
  4659  enum : uint { DT_PREFIXONLY = 0x00200000 }
  4660  // #endif /* _WIN32_WINNT >= 0x0500 */
  4661  // #endif /* WINVER >= 0x0500 */
  4662  
  4663  struct tagDRAWTEXTPARAMS {
  4664    UINT cbSize;
  4665    int iTabLength;
  4666    int iLeftMargin;
  4667    int iRightMargin;
  4668    UINT uiLengthDrawn;
  4669  }
  4670  alias tagDRAWTEXTPARAMS DRAWTEXTPARAMS;
  4671  alias tagDRAWTEXTPARAMS* LPDRAWTEXTPARAMS;
  4672  
  4673  // #endif /* WINVER >= 0x0400 */
  4674  
  4675  extern(Windows) export int DrawTextA(
  4676    HDC hDC,
  4677    LPCSTR lpString,
  4678    int nCount,
  4679    LPRECT lpRect,
  4680    UINT uFormat);
  4681  extern(Windows) export int DrawTextW(
  4682    HDC hDC,
  4683    LPCWSTR lpString,
  4684    int nCount,
  4685    LPRECT lpRect,
  4686    UINT uFormat);
  4687  // #ifdef UNICODE
  4688  // #...
  4689  // #else
  4690  alias DrawTextA DrawText;
  4691  // #endif // !UNICODE
  4692  
  4693  // #if(WINVER >= 0x0400)
  4694  extern(Windows) export int DrawTextExA(
  4695    HDC,
  4696    LPSTR,
  4697    int,
  4698    LPRECT,
  4699    UINT,
  4700    LPDRAWTEXTPARAMS);
  4701  extern(Windows) export int DrawTextExW(
  4702    HDC,
  4703    LPWSTR,
  4704    int,
  4705    LPRECT,
  4706    UINT,
  4707    LPDRAWTEXTPARAMS);
  4708  // #ifdef UNICODE
  4709  // #...
  4710  // #else
  4711  alias DrawTextExA DrawTextEx;
  4712  // #endif // !UNICODE
  4713  // #endif /* WINVER >= 0x0400 */
  4714  
  4715  // #endif /* !NODRAWTEXT */
  4716  
  4717  extern(Windows) export BOOL GrayStringA(
  4718    HDC hDC,
  4719    HBRUSH hBrush,
  4720    GRAYSTRINGPROC lpOutputFunc,
  4721    LPARAM lpData,
  4722    int nCount,
  4723    int X,
  4724    int Y,
  4725    int nWidth,
  4726    int nHeight);
  4727  extern(Windows) export BOOL GrayStringW(
  4728    HDC hDC,
  4729    HBRUSH hBrush,
  4730    GRAYSTRINGPROC lpOutputFunc,
  4731    LPARAM lpData,
  4732    int nCount,
  4733    int X,
  4734    int Y,
  4735    int nWidth,
  4736    int nHeight);
  4737  // #ifdef UNICODE
  4738  // #...
  4739  // #else
  4740  alias GrayStringA GrayString;
  4741  // #endif // !UNICODE
  4742  
  4743  // #if(WINVER >= 0x0400)
  4744  
  4745  enum : uint { DST_COMPLEX = 0x0000 }
  4746  enum : uint { DST_TEXT = 0x0001 }
  4747  enum : uint { DST_PREFIXTEXT = 0x0002 }
  4748  enum : uint { DST_ICON = 0x0003 }
  4749  enum : uint { DST_BITMAP = 0x0004 }
  4750  
  4751  enum : uint { DSS_NORMAL = 0x0000 }
  4752  enum : uint { DSS_UNION = 0x0010 }
  4753  enum : uint { DSS_DISABLED = 0x0020 }
  4754  enum : uint { DSS_MONO = 0x0080 }
  4755  // #if(_WIN32_WINNT >= 0x0500)
  4756  enum : uint { DSS_HIDEPREFIX = 0x0200 }
  4757  enum : uint { DSS_PREFIXONLY = 0x0400 }
  4758  // #endif /* _WIN32_WINNT >= 0x0500 */
  4759  enum : uint { DSS_RIGHT = 0x8000 }
  4760  
  4761  extern(Windows) export BOOL DrawStateA(
  4762    HDC,
  4763    HBRUSH,
  4764    DRAWSTATEPROC,
  4765    LPARAM,
  4766    WPARAM,
  4767    int,
  4768    int,
  4769    int,
  4770    int,
  4771    UINT);
  4772  extern(Windows) export BOOL DrawStateW(
  4773    HDC,
  4774    HBRUSH,
  4775    DRAWSTATEPROC,
  4776    LPARAM,
  4777    WPARAM,
  4778    int,
  4779    int,
  4780    int,
  4781    int,
  4782    UINT);
  4783  // #ifdef UNICODE
  4784  // #...
  4785  // #else
  4786  alias DrawStateA DrawState;
  4787  // #endif // !UNICODE
  4788  // #endif /* WINVER >= 0x0400 */
  4789  
  4790  extern(Windows) export LONG TabbedTextOutA(
  4791    HDC hDC,
  4792    int X,
  4793    int Y,
  4794    LPCSTR lpString,
  4795    int nCount,
  4796    int nTabPositions,
  4797    INT *lpnTabStopPositions,
  4798    int nTabOrigin);
  4799  extern(Windows) export LONG TabbedTextOutW(
  4800    HDC hDC,
  4801    int X,
  4802    int Y,
  4803    LPCWSTR lpString,
  4804    int nCount,
  4805    int nTabPositions,
  4806    INT *lpnTabStopPositions,
  4807    int nTabOrigin);
  4808  // #ifdef UNICODE
  4809  // #...
  4810  // #else
  4811  alias TabbedTextOutA TabbedTextOut;
  4812  // #endif // !UNICODE
  4813  
  4814  extern(Windows) export DWORD GetTabbedTextExtentA(
  4815    HDC hDC,
  4816    LPCSTR lpString,
  4817    int nCount,
  4818    int nTabPositions,
  4819    INT *lpnTabStopPositions);
  4820  extern(Windows) export DWORD GetTabbedTextExtentW(
  4821    HDC hDC,
  4822    LPCWSTR lpString,
  4823    int nCount,
  4824    int nTabPositions,
  4825    INT *lpnTabStopPositions);
  4826  // #ifdef UNICODE
  4827  // #...
  4828  // #else
  4829  alias GetTabbedTextExtentA GetTabbedTextExtent;
  4830  // #endif // !UNICODE
  4831  
  4832  extern(Windows) export BOOL UpdateWindow(
  4833    HWND hWnd);
  4834  
  4835  extern(Windows) export HWND SetActiveWindow(
  4836    HWND hWnd);
  4837  
  4838  extern(Windows) export HWND GetForegroundWindow();
  4839  
  4840  // #if(WINVER >= 0x0400)
  4841  extern(Windows) export BOOL PaintDesktop(
  4842    HDC hdc);
  4843  
  4844  // #endif /* WINVER >= 0x0400 */
  4845  
  4846  extern(Windows) export BOOL SetForegroundWindow(
  4847    HWND hWnd);
  4848  
  4849  // #if(_WIN32_WINNT >= 0x0500)
  4850  extern(Windows) export BOOL AllowSetForegroundWindow(
  4851    DWORD dwProcessId);
  4852  
  4853  enum : DWORD { ASFW_ANY = cast(DWORD)-1 }
  4854  
  4855  extern(Windows) export BOOL LockSetForegroundWindow(
  4856    UINT uLockCode);
  4857  
  4858  enum : uint { LSFW_LOCK = 1 }
  4859  enum : uint { LSFW_UNLOCK = 2 }
  4860  
  4861  // #endif /* _WIN32_WINNT >= 0x0500 */
  4862  
  4863  extern(Windows) export HWND WindowFromDC(
  4864    HDC hDC);
  4865  
  4866  extern(Windows) export HDC GetDC(
  4867    HWND hWnd);
  4868  
  4869  extern(Windows) export HDC GetDCEx(
  4870    HWND hWnd,
  4871    HRGN hrgnClip,
  4872    DWORD flags);
  4873  
  4874  enum : uint { DCX_WINDOW = 0x00000001 }
  4875  enum : uint { DCX_CACHE = 0x00000002 }
  4876  enum : uint { DCX_NORESETATTRS = 0x00000004 }
  4877  enum : uint { DCX_CLIPCHILDREN = 0x00000008 }
  4878  enum : uint { DCX_CLIPSIBLINGS = 0x00000010 }
  4879  enum : uint { DCX_PARENTCLIP = 0x00000020 }
  4880  enum : uint { DCX_EXCLUDERGN = 0x00000040 }
  4881  enum : uint { DCX_INTERSECTRGN = 0x00000080 }
  4882  enum : uint { DCX_EXCLUDEUPDATE = 0x00000100 }
  4883  enum : uint { DCX_INTERSECTUPDATE = 0x00000200 }
  4884  enum : uint { DCX_LOCKWINDOWUPDATE = 0x00000400 }
  4885  
  4886  enum : uint { DCX_VALIDATE = 0x00200000 }
  4887  
  4888  extern(Windows) export HDC GetWindowDC(
  4889    HWND hWnd);
  4890  
  4891  extern(Windows) export int ReleaseDC(
  4892    HWND hWnd,
  4893    HDC hDC);
  4894  
  4895  extern(Windows) export HDC BeginPaint(
  4896    HWND hWnd,
  4897    LPPAINTSTRUCT lpPaint);
  4898  
  4899  extern(Windows) export BOOL EndPaint(
  4900    HWND hWnd,
  4901    PAINTSTRUCT *lpPaint);
  4902  
  4903  extern(Windows) export BOOL GetUpdateRect(
  4904    HWND hWnd,
  4905    LPRECT lpRect,
  4906    BOOL bErase);
  4907  
  4908  extern(Windows) export int GetUpdateRgn(
  4909    HWND hWnd,
  4910    HRGN hRgn,
  4911    BOOL bErase);
  4912  
  4913  extern(Windows) export int SetWindowRgn(
  4914    HWND hWnd,
  4915    HRGN hRgn,
  4916    BOOL bRedraw);
  4917  
  4918  extern(Windows) export int GetWindowRgn(
  4919    HWND hWnd,
  4920    HRGN hRgn);
  4921  
  4922  // #if(_WIN32_WINNT >= 0x0501)
  4923  
  4924  extern(Windows) export int GetWindowRgnBox(
  4925    HWND hWnd,
  4926    LPRECT lprc);
  4927  
  4928  // #endif /* _WIN32_WINNT >= 0x0501 */
  4929  
  4930  extern(Windows) export int ExcludeUpdateRgn(
  4931    HDC hDC,
  4932    HWND hWnd);
  4933  
  4934  extern(Windows) export BOOL InvalidateRect(
  4935    HWND hWnd,
  4936    RECT *lpRect,
  4937    BOOL bErase);
  4938  
  4939  extern(Windows) export BOOL ValidateRect(
  4940    HWND hWnd,
  4941    RECT *lpRect);
  4942  
  4943  extern(Windows) export BOOL InvalidateRgn(
  4944    HWND hWnd,
  4945    HRGN hRgn,
  4946    BOOL bErase);
  4947  
  4948  extern(Windows) export BOOL ValidateRgn(
  4949    HWND hWnd,
  4950    HRGN hRgn);
  4951  
  4952  extern(Windows) export BOOL RedrawWindow(
  4953    HWND hWnd,
  4954    RECT *lprcUpdate,
  4955    HRGN hrgnUpdate,
  4956    UINT flags);
  4957  
  4958  enum : uint { RDW_INVALIDATE = 0x0001 }
  4959  enum : uint { RDW_INTERNALPAINT = 0x0002 }
  4960  enum : uint { RDW_ERASE = 0x0004 }
  4961  
  4962  enum : uint { RDW_VALIDATE = 0x0008 }
  4963  enum : uint { RDW_NOINTERNALPAINT = 0x0010 }
  4964  enum : uint { RDW_NOERASE = 0x0020 }
  4965  
  4966  enum : uint { RDW_NOCHILDREN = 0x0040 }
  4967  enum : uint { RDW_ALLCHILDREN = 0x0080 }
  4968  
  4969  enum : uint { RDW_UPDATENOW = 0x0100 }
  4970  enum : uint { RDW_ERASENOW = 0x0200 }
  4971  
  4972  enum : uint { RDW_FRAME = 0x0400 }
  4973  enum : uint { RDW_NOFRAME = 0x0800 }
  4974  
  4975  extern(Windows) export BOOL LockWindowUpdate(
  4976    HWND hWndLock);
  4977  
  4978  extern(Windows) export BOOL ScrollWindow(
  4979    HWND hWnd,
  4980    int XAmount,
  4981    int YAmount,
  4982    RECT *lpRect,
  4983    RECT *lpClipRect);
  4984  
  4985  extern(Windows) export BOOL ScrollDC(
  4986    HDC hDC,
  4987    int dx,
  4988    int dy,
  4989    RECT *lprcScroll,
  4990    RECT *lprcClip,
  4991    HRGN hrgnUpdate,
  4992    LPRECT lprcUpdate);
  4993  
  4994  extern(Windows) export int ScrollWindowEx(
  4995    HWND hWnd,
  4996    int dx,
  4997    int dy,
  4998    RECT *prcScroll,
  4999    RECT *prcClip,
  5000    HRGN hrgnUpdate,
  5001    LPRECT prcUpdate,
  5002    UINT flags);
  5003  
  5004  enum : uint { SW_SCROLLCHILDREN = 0x0001 }
  5005  enum : uint { SW_INVALIDATE = 0x0002 }
  5006  enum : uint { SW_ERASE = 0x0004 }
  5007  // #if(WINVER >= 0x0500)
  5008  enum : uint { SW_SMOOTHSCROLL = 0x0010 }
  5009  // #endif /* WINVER >= 0x0500 */
  5010  
  5011  // #ifndef NOSCROLL
  5012  
  5013  extern(Windows) export int SetScrollPos(
  5014    HWND hWnd,
  5015    int nBar,
  5016    int nPos,
  5017    BOOL bRedraw);
  5018  
  5019  extern(Windows) export int GetScrollPos(
  5020    HWND hWnd,
  5021    int nBar);
  5022  
  5023  extern(Windows) export BOOL SetScrollRange(
  5024    HWND hWnd,
  5025    int nBar,
  5026    int nMinPos,
  5027    int nMaxPos,
  5028    BOOL bRedraw);
  5029  
  5030  extern(Windows) export BOOL GetScrollRange(
  5031    HWND hWnd,
  5032    int nBar,
  5033    LPINT lpMinPos,
  5034    LPINT lpMaxPos);
  5035  
  5036  extern(Windows) export BOOL ShowScrollBar(
  5037    HWND hWnd,
  5038    int wBar,
  5039    BOOL bShow);
  5040  
  5041  extern(Windows) export BOOL EnableScrollBar(
  5042    HWND hWnd,
  5043    UINT wSBflags,
  5044    UINT wArrows);
  5045  
  5046  enum : uint { ESB_ENABLE_BOTH = 0x0000 }
  5047  enum : uint { ESB_DISABLE_BOTH = 0x0003 }
  5048  
  5049  enum : uint { ESB_DISABLE_LEFT = 0x0001 }
  5050  enum : uint { ESB_DISABLE_RIGHT = 0x0002 }
  5051  
  5052  enum : uint { ESB_DISABLE_UP = 0x0001 }
  5053  enum : uint { ESB_DISABLE_DOWN = 0x0002 }
  5054  
  5055  alias ESB_DISABLE_LEFT ESB_DISABLE_LTUP;
  5056  alias ESB_DISABLE_RIGHT ESB_DISABLE_RTDN;
  5057  
  5058  // #endif  /* !NOSCROLL */
  5059  
  5060  extern(Windows) export BOOL SetPropA(
  5061    HWND hWnd,
  5062    LPCSTR lpString,
  5063    HANDLE hData);
  5064  extern(Windows) export BOOL SetPropW(
  5065    HWND hWnd,
  5066    LPCWSTR lpString,
  5067    HANDLE hData);
  5068  // #ifdef UNICODE
  5069  // #...
  5070  // #else
  5071  alias SetPropA SetProp;
  5072  // #endif // !UNICODE
  5073  
  5074  extern(Windows) export HANDLE GetPropA(
  5075    HWND hWnd,
  5076    LPCSTR lpString);
  5077  extern(Windows) export HANDLE GetPropW(
  5078    HWND hWnd,
  5079    LPCWSTR lpString);
  5080  // #ifdef UNICODE
  5081  // #...
  5082  // #else
  5083  alias GetPropA GetProp;
  5084  // #endif // !UNICODE
  5085  
  5086  extern(Windows) export HANDLE RemovePropA(
  5087    HWND hWnd,
  5088    LPCSTR lpString);
  5089  extern(Windows) export HANDLE RemovePropW(
  5090    HWND hWnd,
  5091    LPCWSTR lpString);
  5092  // #ifdef UNICODE
  5093  // #...
  5094  // #else
  5095  alias RemovePropA RemoveProp;
  5096  // #endif // !UNICODE
  5097  
  5098  extern(Windows) export int EnumPropsExA(
  5099    HWND hWnd,
  5100    PROPENUMPROCEXA lpEnumFunc,
  5101    LPARAM lParam);
  5102  extern(Windows) export int EnumPropsExW(
  5103    HWND hWnd,
  5104    PROPENUMPROCEXW lpEnumFunc,
  5105    LPARAM lParam);
  5106  // #ifdef UNICODE
  5107  // #...
  5108  // #else
  5109  alias EnumPropsExA EnumPropsEx;
  5110  // #endif // !UNICODE
  5111  
  5112  extern(Windows) export int EnumPropsA(
  5113    HWND hWnd,
  5114    PROPENUMPROCA lpEnumFunc);
  5115  extern(Windows) export int EnumPropsW(
  5116    HWND hWnd,
  5117    PROPENUMPROCW lpEnumFunc);
  5118  // #ifdef UNICODE
  5119  // #...
  5120  // #else
  5121  alias EnumPropsA EnumProps;
  5122  // #endif // !UNICODE
  5123  
  5124  extern(Windows) export BOOL SetWindowTextA(
  5125    HWND hWnd,
  5126    LPCSTR lpString);
  5127  extern(Windows) export BOOL SetWindowTextW(
  5128    HWND hWnd,
  5129    LPCWSTR lpString);
  5130  // #ifdef UNICODE
  5131  // #...
  5132  // #else
  5133  alias SetWindowTextA SetWindowText;
  5134  // #endif // !UNICODE
  5135  
  5136  extern(Windows) export int GetWindowTextA(
  5137    HWND hWnd,
  5138    LPSTR lpString,
  5139    int nMaxCount);
  5140  extern(Windows) export int GetWindowTextW(
  5141    HWND hWnd,
  5142    LPWSTR lpString,
  5143    int nMaxCount);
  5144  // #ifdef UNICODE
  5145  // #...
  5146  // #else
  5147  alias GetWindowTextA GetWindowText;
  5148  // #endif // !UNICODE
  5149  
  5150  extern(Windows) export int GetWindowTextLengthA(
  5151    HWND hWnd);
  5152  extern(Windows) export int GetWindowTextLengthW(
  5153    HWND hWnd);
  5154  // #ifdef UNICODE
  5155  // #...
  5156  // #else
  5157  alias GetWindowTextLengthA GetWindowTextLength;
  5158  // #endif // !UNICODE
  5159  
  5160  extern(Windows) export BOOL GetClientRect(
  5161    HWND hWnd,
  5162    LPRECT lpRect);
  5163  
  5164  extern(Windows) export BOOL GetWindowRect(
  5165    HWND hWnd,
  5166    LPRECT lpRect);
  5167  
  5168  extern(Windows) export BOOL AdjustWindowRect(
  5169    LPRECT lpRect,
  5170    DWORD dwStyle,
  5171    BOOL bMenu);
  5172  
  5173  extern(Windows) export BOOL AdjustWindowRectEx(
  5174    LPRECT lpRect,
  5175    DWORD dwStyle,
  5176    BOOL bMenu,
  5177    DWORD dwExStyle);
  5178  
  5179  // #if(WINVER >= 0x0400)
  5180  enum : uint { HELPINFO_WINDOW = 0x0001 }
  5181  enum : uint { HELPINFO_MENUITEM = 0x0002 }
  5182  struct tagHELPINFO {
  5183    UINT cbSize;
  5184    int iContextType;
  5185    int iCtrlId;
  5186    HANDLE hItemHandle;
  5187    DWORD_PTR dwContextId;
  5188    POINT MousePos;
  5189  }
  5190  alias tagHELPINFO HELPINFO;
  5191  alias tagHELPINFO* LPHELPINFO;
  5192  
  5193  extern(Windows) export BOOL SetWindowContextHelpId(
  5194    HWND,
  5195    DWORD);
  5196  
  5197  extern(Windows) export DWORD GetWindowContextHelpId(
  5198    HWND);
  5199  
  5200  extern(Windows) export BOOL SetMenuContextHelpId(
  5201    HMENU,
  5202    DWORD);
  5203  
  5204  extern(Windows) export DWORD GetMenuContextHelpId(
  5205    HMENU);
  5206  
  5207  // #endif /* WINVER >= 0x0400 */
  5208  
  5209  // #ifndef NOMB
  5210  
  5211  enum : uint { MB_OK = 0x00000000 }
  5212  enum : uint { MB_OKCANCEL = 0x00000001 }
  5213  enum : uint { MB_ABORTRETRYIGNORE = 0x00000002 }
  5214  enum : uint { MB_YESNOCANCEL = 0x00000003 }
  5215  enum : uint { MB_YESNO = 0x00000004 }
  5216  enum : uint { MB_RETRYCANCEL = 0x00000005 }
  5217  // #if(WINVER >= 0x0500)
  5218  enum : uint { MB_CANCELTRYCONTINUE = 0x00000006 }
  5219  // #endif /* WINVER >= 0x0500 */
  5220  
  5221  enum : uint { MB_ICONHAND = 0x00000010 }
  5222  enum : uint { MB_ICONQUESTION = 0x00000020 }
  5223  enum : uint { MB_ICONEXCLAMATION = 0x00000030 }
  5224  enum : uint { MB_ICONASTERISK = 0x00000040 }
  5225  
  5226  // #if(WINVER >= 0x0400)
  5227  enum : uint { MB_USERICON = 0x00000080 }
  5228  alias MB_ICONEXCLAMATION MB_ICONWARNING;
  5229  alias MB_ICONHAND MB_ICONERROR;
  5230  // #endif /* WINVER >= 0x0400 */
  5231  
  5232  alias MB_ICONASTERISK MB_ICONINFORMATION;
  5233  alias MB_ICONHAND MB_ICONSTOP;
  5234  
  5235  enum : uint { MB_DEFBUTTON1 = 0x00000000 }
  5236  enum : uint { MB_DEFBUTTON2 = 0x00000100 }
  5237  enum : uint { MB_DEFBUTTON3 = 0x00000200 }
  5238  // #if(WINVER >= 0x0400)
  5239  enum : uint { MB_DEFBUTTON4 = 0x00000300 }
  5240  // #endif /* WINVER >= 0x0400 */
  5241  
  5242  enum : uint { MB_APPLMODAL = 0x00000000 }
  5243  enum : uint { MB_SYSTEMMODAL = 0x00001000 }
  5244  enum : uint { MB_TASKMODAL = 0x00002000 }
  5245  // #if(WINVER >= 0x0400)
  5246  enum : uint { MB_HELP = 0x00004000 }
  5247  // #endif /* WINVER >= 0x0400 */
  5248  
  5249  enum : uint { MB_NOFOCUS = 0x00008000 }
  5250  enum : uint { MB_SETFOREGROUND = 0x00010000 }
  5251  enum : uint { MB_DEFAULT_DESKTOP_ONLY = 0x00020000 }
  5252  
  5253  // #if(WINVER >= 0x0400)
  5254  enum : uint { MB_TOPMOST = 0x00040000 }
  5255  enum : uint { MB_RIGHT = 0x00080000 }
  5256  enum : uint { MB_RTLREADING = 0x00100000 }
  5257  
  5258  // #endif /* WINVER >= 0x0400 */
  5259  
  5260  // #ifdef _WIN32_WINNT
  5261  // #if (_WIN32_WINNT >= 0x0400)
  5262  enum : uint { MB_SERVICE_NOTIFICATION = 0x00200000 }
  5263  // #else
  5264  // #...
  5265  // #endif
  5266  enum : uint { MB_SERVICE_NOTIFICATION_NT3X = 0x00040000 }
  5267  // #endif
  5268  
  5269  enum : uint { MB_TYPEMASK = 0x0000000F }
  5270  enum : uint { MB_ICONMASK = 0x000000F0 }
  5271  enum : uint { MB_DEFMASK = 0x00000F00 }
  5272  enum : uint { MB_MODEMASK = 0x00003000 }
  5273  enum : uint { MB_MISCMASK = 0x0000C000 }
  5274  
  5275  extern(Windows) export int MessageBoxA(
  5276    HWND hWnd,
  5277    LPCSTR lpText,
  5278    LPCSTR lpCaption,
  5279    UINT uType);
  5280  extern(Windows) export int MessageBoxW(
  5281    HWND hWnd,
  5282    LPCWSTR lpText,
  5283    LPCWSTR lpCaption,
  5284    UINT uType);
  5285  // #ifdef UNICODE
  5286  // #...
  5287  // #else
  5288  alias MessageBoxA MessageBox;
  5289  // #endif // !UNICODE
  5290  
  5291  extern(Windows) export int MessageBoxExA(
  5292    HWND hWnd,
  5293    LPCSTR lpText,
  5294    LPCSTR lpCaption,
  5295    UINT uType,
  5296    WORD wLanguageId);
  5297  extern(Windows) export int MessageBoxExW(
  5298    HWND hWnd,
  5299    LPCWSTR lpText,
  5300    LPCWSTR lpCaption,
  5301    UINT uType,
  5302    WORD wLanguageId);
  5303  // #ifdef UNICODE
  5304  // #...
  5305  // #else
  5306  alias MessageBoxExA MessageBoxEx;
  5307  // #endif // !UNICODE
  5308  
  5309  // #if(WINVER >= 0x0400)
  5310  
  5311  extern(Windows) alias void function(LPHELPINFO lpHelpInfo) MSGBOXCALLBACK;
  5312  
  5313  struct tagMSGBOXPARAMSA {
  5314    UINT cbSize;
  5315    HWND hwndOwner;
  5316    HINSTANCE hInstance;
  5317    LPCSTR lpszText;
  5318    LPCSTR lpszCaption;
  5319    DWORD dwStyle;
  5320    LPCSTR lpszIcon;
  5321    DWORD_PTR dwContextHelpId;
  5322    MSGBOXCALLBACK lpfnMsgBoxCallback;
  5323    DWORD dwLanguageId;
  5324  }
  5325  alias tagMSGBOXPARAMSA MSGBOXPARAMSA;
  5326  alias tagMSGBOXPARAMSA* PMSGBOXPARAMSA;
  5327  alias tagMSGBOXPARAMSA* LPMSGBOXPARAMSA;
  5328  
  5329  struct tagMSGBOXPARAMSW {
  5330    UINT cbSize;
  5331    HWND hwndOwner;
  5332    HINSTANCE hInstance;
  5333    LPCWSTR lpszText;
  5334    LPCWSTR lpszCaption;
  5335    DWORD dwStyle;
  5336    LPCWSTR lpszIcon;
  5337    DWORD_PTR dwContextHelpId;
  5338    MSGBOXCALLBACK lpfnMsgBoxCallback;
  5339    DWORD dwLanguageId;
  5340  }
  5341  alias tagMSGBOXPARAMSW MSGBOXPARAMSW;
  5342  alias tagMSGBOXPARAMSW* PMSGBOXPARAMSW;
  5343  alias tagMSGBOXPARAMSW* LPMSGBOXPARAMSW;
  5344  
  5345  // #ifdef UNICODE
  5346  // ...
  5347  // #else
  5348  alias MSGBOXPARAMSA MSGBOXPARAMS;
  5349  alias PMSGBOXPARAMSA PMSGBOXPARAMS;
  5350  alias LPMSGBOXPARAMSA LPMSGBOXPARAMS;
  5351  // #endif // UNICODE
  5352  
  5353  extern(Windows) export int MessageBoxIndirectA(
  5354    MSGBOXPARAMSA *);
  5355  extern(Windows) export int MessageBoxIndirectW(
  5356    MSGBOXPARAMSW *);
  5357  // #ifdef UNICODE
  5358  // #...
  5359  // #else
  5360  alias MessageBoxIndirectA MessageBoxIndirect;
  5361  // #endif // !UNICODE
  5362  // #endif /* WINVER >= 0x0400 */
  5363  
  5364  extern(Windows) export BOOL MessageBeep(
  5365    UINT uType);
  5366  
  5367  // #endif /* !NOMB */
  5368  
  5369  extern(Windows) export int ShowCursor(
  5370    BOOL bShow);
  5371  
  5372  extern(Windows) export BOOL SetCursorPos(
  5373    int X,
  5374    int Y);
  5375  
  5376  extern(Windows) export HCURSOR SetCursor(
  5377    HCURSOR hCursor);
  5378  
  5379  extern(Windows) export BOOL GetCursorPos(
  5380    LPPOINT lpPoint);
  5381  
  5382  extern(Windows) export BOOL ClipCursor(
  5383    RECT *lpRect);
  5384  
  5385  extern(Windows) export BOOL GetClipCursor(
  5386    LPRECT lpRect);
  5387  
  5388  extern(Windows) export HCURSOR GetCursor();
  5389  
  5390  extern(Windows) export BOOL CreateCaret(
  5391    HWND hWnd,
  5392    HBITMAP hBitmap,
  5393    int nWidth,
  5394    int nHeight);
  5395  
  5396  extern(Windows) export UINT GetCaretBlinkTime();
  5397  
  5398  extern(Windows) export BOOL SetCaretBlinkTime(
  5399    UINT uMSeconds);
  5400  
  5401  extern(Windows) export BOOL DestroyCaret();
  5402  
  5403  extern(Windows) export BOOL HideCaret(
  5404    HWND hWnd);
  5405  
  5406  extern(Windows) export BOOL ShowCaret(
  5407    HWND hWnd);
  5408  
  5409  extern(Windows) export BOOL SetCaretPos(
  5410    int X,
  5411    int Y);
  5412  
  5413  extern(Windows) export BOOL GetCaretPos(
  5414    LPPOINT lpPoint);
  5415  
  5416  extern(Windows) export BOOL ClientToScreen(
  5417    HWND hWnd,
  5418    LPPOINT lpPoint);
  5419  
  5420  extern(Windows) export BOOL ScreenToClient(
  5421    HWND hWnd,
  5422    LPPOINT lpPoint);
  5423  
  5424  extern(Windows) export int MapWindowPoints(
  5425    HWND hWndFrom,
  5426    HWND hWndTo,
  5427    LPPOINT lpPoints,
  5428    UINT cPoints);
  5429  
  5430  extern(Windows) export HWND WindowFromPoint(
  5431    POINT Point);
  5432  
  5433  extern(Windows) export HWND ChildWindowFromPoint(
  5434    HWND hWndParent,
  5435    POINT Point);
  5436  
  5437  // #if(WINVER >= 0x0400)
  5438  enum : uint { CWP_ALL = 0x0000 }
  5439  enum : uint { CWP_SKIPINVISIBLE = 0x0001 }
  5440  enum : uint { CWP_SKIPDISABLED = 0x0002 }
  5441  enum : uint { CWP_SKIPTRANSPARENT = 0x0004 }
  5442  
  5443  extern(Windows) export HWND ChildWindowFromPointEx(HWND, POINT, UINT);
  5444  // #endif /* WINVER >= 0x0400 */
  5445  
  5446  // #ifndef NOCOLOR
  5447  
  5448  enum : uint { CTLCOLOR_MSGBOX = 0 }
  5449  enum : uint { CTLCOLOR_EDIT = 1 }
  5450  enum : uint { CTLCOLOR_LISTBOX = 2 }
  5451  enum : uint { CTLCOLOR_BTN = 3 }
  5452  enum : uint { CTLCOLOR_DLG = 4 }
  5453  enum : uint { CTLCOLOR_SCROLLBAR = 5 }
  5454  enum : uint { CTLCOLOR_STATIC = 6 }
  5455  enum : uint { CTLCOLOR_MAX = 7 }
  5456  
  5457  enum : uint { COLOR_SCROLLBAR = 0 }
  5458  enum : uint { COLOR_BACKGROUND = 1 }
  5459  enum : uint { COLOR_ACTIVECAPTION = 2 }
  5460  enum : uint { COLOR_INACTIVECAPTION = 3 }
  5461  enum : uint { COLOR_MENU = 4 }
  5462  enum : uint { COLOR_WINDOW = 5 }
  5463  enum : uint { COLOR_WINDOWFRAME = 6 }
  5464  enum : uint { COLOR_MENUTEXT = 7 }
  5465  enum : uint { COLOR_WINDOWTEXT = 8 }
  5466  enum : uint { COLOR_CAPTIONTEXT = 9 }
  5467  enum : uint { COLOR_ACTIVEBORDER = 10 }
  5468  enum : uint { COLOR_INACTIVEBORDER = 11 }
  5469  enum : uint { COLOR_APPWORKSPACE = 12 }
  5470  enum : uint { COLOR_HIGHLIGHT = 13 }
  5471  enum : uint { COLOR_HIGHLIGHTTEXT = 14 }
  5472  enum : uint { COLOR_BTNFACE = 15 }
  5473  enum : uint { COLOR_BTNSHADOW = 16 }
  5474  enum : uint { COLOR_GRAYTEXT = 17 }
  5475  enum : uint { COLOR_BTNTEXT = 18 }
  5476  enum : uint { COLOR_INACTIVECAPTIONTEXT = 19 }
  5477  enum : uint { COLOR_BTNHIGHLIGHT = 20 }
  5478  
  5479  // #if(WINVER >= 0x0400)
  5480  enum : uint { COLOR_3DDKSHADOW = 21 }
  5481  enum : uint { COLOR_3DLIGHT = 22 }
  5482  enum : uint { COLOR_INFOTEXT = 23 }
  5483  enum : uint { COLOR_INFOBK = 24 }
  5484  // #endif /* WINVER >= 0x0400 */
  5485  
  5486  // #if(WINVER >= 0x0500)
  5487  enum : uint { COLOR_HOTLIGHT = 26 }
  5488  enum : uint { COLOR_GRADIENTACTIVECAPTION = 27 }
  5489  enum : uint { COLOR_GRADIENTINACTIVECAPTION = 28 }
  5490  // #if(WINVER >= 0x0501)
  5491  enum : uint { COLOR_MENUHILIGHT = 29 }
  5492  enum : uint { COLOR_MENUBAR = 30 }
  5493  // #endif /* WINVER >= 0x0501 */
  5494  // #endif /* WINVER >= 0x0500 */
  5495  
  5496  // #if(WINVER >= 0x0400)
  5497  alias COLOR_BACKGROUND COLOR_DESKTOP;
  5498  alias COLOR_BTNFACE COLOR_3DFACE;
  5499  alias COLOR_BTNSHADOW COLOR_3DSHADOW;
  5500  alias COLOR_BTNHIGHLIGHT COLOR_3DHIGHLIGHT;
  5501  alias COLOR_BTNHIGHLIGHT COLOR_3DHILIGHT;
  5502  alias COLOR_BTNHIGHLIGHT COLOR_BTNHILIGHT;
  5503  // #endif /* WINVER >= 0x0400 */
  5504  
  5505  extern(Windows) export DWORD GetSysColor(
  5506    int nIndex);
  5507  
  5508  // #if(WINVER >= 0x0400)
  5509  extern(Windows) export HBRUSH GetSysColorBrush(
  5510    int nIndex);
  5511  
  5512  // #endif /* WINVER >= 0x0400 */
  5513  
  5514  extern(Windows) export BOOL SetSysColors(
  5515    int cElements,
  5516    INT * lpaElements,
  5517    COLORREF * lpaRgbValues);
  5518  
  5519  // #endif /* !NOCOLOR */
  5520  
  5521  extern(Windows) export BOOL DrawFocusRect(
  5522    HDC hDC,
  5523    RECT * lprc);
  5524  
  5525  extern(Windows) export int FillRect(
  5526    HDC hDC,
  5527    RECT *lprc,
  5528    HBRUSH hbr);
  5529  
  5530  extern(Windows) export int FrameRect(
  5531    HDC hDC,
  5532    RECT *lprc,
  5533    HBRUSH hbr);
  5534  
  5535  extern(Windows) export BOOL InvertRect(
  5536    HDC hDC,
  5537    RECT *lprc);
  5538  
  5539  extern(Windows) export BOOL SetRect(
  5540    LPRECT lprc,
  5541    int xLeft,
  5542    int yTop,
  5543    int xRight,
  5544    int yBottom);
  5545  
  5546  extern(Windows) export BOOL SetRectEmpty(
  5547    LPRECT lprc);
  5548  
  5549  extern(Windows) export BOOL CopyRect(
  5550    LPRECT lprcDst,
  5551    RECT *lprcSrc);
  5552  
  5553  extern(Windows) export BOOL InflateRect(
  5554    LPRECT lprc,
  5555    int dx,
  5556    int dy);
  5557  
  5558  extern(Windows) export BOOL IntersectRect(
  5559    LPRECT lprcDst,
  5560    RECT *lprcSrc1,
  5561    RECT *lprcSrc2);
  5562  
  5563  extern(Windows) export BOOL UnionRect(
  5564    LPRECT lprcDst,
  5565    RECT *lprcSrc1,
  5566    RECT *lprcSrc2);
  5567  
  5568  extern(Windows) export BOOL SubtractRect(
  5569    LPRECT lprcDst,
  5570    RECT *lprcSrc1,
  5571    RECT *lprcSrc2);
  5572  
  5573  extern(Windows) export BOOL OffsetRect(
  5574    LPRECT lprc,
  5575    int dx,
  5576    int dy);
  5577  
  5578  extern(Windows) export BOOL IsRectEmpty(
  5579    RECT *lprc);
  5580  
  5581  extern(Windows) export BOOL EqualRect(
  5582    RECT *lprc1,
  5583    RECT *lprc2);
  5584  
  5585  extern(Windows) export BOOL PtInRect(
  5586    RECT *lprc,
  5587    POINT pt);
  5588  
  5589  // #ifndef NOWINOFFSETS
  5590  
  5591  extern(Windows) export WORD GetWindowWord(
  5592    HWND hWnd,
  5593    int nIndex);
  5594  
  5595  extern(Windows) export WORD SetWindowWord(
  5596    HWND hWnd,
  5597    int nIndex,
  5598    WORD wNewWord);
  5599  
  5600  extern(Windows) export LONG GetWindowLongA(
  5601    HWND hWnd,
  5602    int nIndex);
  5603  extern(Windows) export LONG GetWindowLongW(
  5604    HWND hWnd,
  5605    int nIndex);
  5606  // #ifdef UNICODE
  5607  // #...
  5608  // #else
  5609  alias GetWindowLongA GetWindowLong;
  5610  // #endif // !UNICODE
  5611  
  5612  extern(Windows) export LONG SetWindowLongA(
  5613    HWND hWnd,
  5614    int nIndex,
  5615    LONG dwNewLong);
  5616  extern(Windows) export LONG SetWindowLongW(
  5617    HWND hWnd,
  5618    int nIndex,
  5619    LONG dwNewLong);
  5620  // #ifdef UNICODE
  5621  // #...
  5622  // #else
  5623  alias SetWindowLongA SetWindowLong;
  5624  // #endif // !UNICODE
  5625  
  5626  // #ifdef _WIN64
  5627  
  5628  // ...
  5629  // #ifdef UNICODE
  5630  // #...
  5631  // #else
  5632  // #...
  5633  // #endif // !UNICODE
  5634  
  5635  // ...
  5636  // #ifdef UNICODE
  5637  // #...
  5638  // #else
  5639  // #...
  5640  // #endif // !UNICODE
  5641  
  5642  // #else  /* _WIN64 */
  5643  
  5644  alias GetWindowLongA GetWindowLongPtrA;
  5645  alias GetWindowLongW GetWindowLongPtrW;
  5646  // #ifdef UNICODE
  5647  // #...
  5648  // #else
  5649  alias GetWindowLongPtrA GetWindowLongPtr;
  5650  // #endif // !UNICODE
  5651  
  5652  alias SetWindowLongA SetWindowLongPtrA;
  5653  alias SetWindowLongW SetWindowLongPtrW;
  5654  // #ifdef UNICODE
  5655  // #...
  5656  // #else
  5657  alias SetWindowLongPtrA SetWindowLongPtr;
  5658  // #endif // !UNICODE
  5659  
  5660  // #endif /* _WIN64 */
  5661  
  5662  extern(Windows) export WORD GetClassWord(
  5663    HWND hWnd,
  5664    int nIndex);
  5665  
  5666  extern(Windows) export WORD SetClassWord(
  5667    HWND hWnd,
  5668    int nIndex,
  5669    WORD wNewWord);
  5670  
  5671  extern(Windows) export DWORD GetClassLongA(
  5672    HWND hWnd,
  5673    int nIndex);
  5674  extern(Windows) export DWORD GetClassLongW(
  5675    HWND hWnd,
  5676    int nIndex);
  5677  // #ifdef UNICODE
  5678  // #...
  5679  // #else
  5680  alias GetClassLongA GetClassLong;
  5681  // #endif // !UNICODE
  5682  
  5683  extern(Windows) export DWORD SetClassLongA(
  5684    HWND hWnd,
  5685    int nIndex,
  5686    LONG dwNewLong);
  5687  extern(Windows) export DWORD SetClassLongW(
  5688    HWND hWnd,
  5689    int nIndex,
  5690    LONG dwNewLong);
  5691  // #ifdef UNICODE
  5692  // #...
  5693  // #else
  5694  alias SetClassLongA SetClassLong;
  5695  // #endif // !UNICODE
  5696  
  5697  // #ifdef _WIN64
  5698  
  5699  // ...
  5700  // #ifdef UNICODE
  5701  // #...
  5702  // #else
  5703  // #...
  5704  // #endif // !UNICODE
  5705  
  5706  // ...
  5707  // #ifdef UNICODE
  5708  // #...
  5709  // #else
  5710  // #...
  5711  // #endif // !UNICODE
  5712  
  5713  // #else  /* _WIN64 */
  5714  
  5715  alias GetClassLongA GetClassLongPtrA;
  5716  alias GetClassLongW GetClassLongPtrW;
  5717  // #ifdef UNICODE
  5718  // #...
  5719  // #else
  5720  alias GetClassLongPtrA GetClassLongPtr;
  5721  // #endif // !UNICODE
  5722  
  5723  alias SetClassLongA SetClassLongPtrA;
  5724  alias SetClassLongW SetClassLongPtrW;
  5725  // #ifdef UNICODE
  5726  // #...
  5727  // #else
  5728  alias SetClassLongPtrA SetClassLongPtr;
  5729  // #endif // !UNICODE
  5730  
  5731  // #endif /* _WIN64 */
  5732  
  5733  // #endif /* !NOWINOFFSETS */
  5734  
  5735  // #if(WINVER >= 0x0500)
  5736  extern(Windows) export BOOL GetProcessDefaultLayout(
  5737    DWORD *pdwDefaultLayout);
  5738  
  5739  extern(Windows) export BOOL SetProcessDefaultLayout(
  5740    DWORD dwDefaultLayout);
  5741  // #endif /* WINVER >= 0x0500 */
  5742  
  5743  extern(Windows) export HWND GetDesktopWindow();
  5744  
  5745  extern(Windows) export HWND GetParent(
  5746    HWND hWnd);
  5747  
  5748  extern(Windows) export HWND SetParent(
  5749    HWND hWndChild,
  5750    HWND hWndNewParent);
  5751  
  5752  extern(Windows) export BOOL EnumChildWindows(
  5753    HWND hWndParent,
  5754    WNDENUMPROC lpEnumFunc,
  5755    LPARAM lParam);
  5756  
  5757  extern(Windows) export HWND FindWindowA(
  5758    LPCSTR lpClassName,
  5759    LPCSTR lpWindowName);
  5760  extern(Windows) export HWND FindWindowW(
  5761    LPCWSTR lpClassName,
  5762    LPCWSTR lpWindowName);
  5763  // #ifdef UNICODE
  5764  // #...
  5765  // #else
  5766  alias FindWindowA FindWindow;
  5767  // #endif // !UNICODE
  5768  
  5769  // #if(WINVER >= 0x0400)
  5770  extern(Windows) export HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);
  5771  extern(Windows) export HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);
  5772  // #ifdef UNICODE
  5773  // #...
  5774  // #else
  5775  alias FindWindowExA FindWindowEx;
  5776  // #endif // !UNICODE
  5777  
  5778  // #endif /* WINVER >= 0x0400 */
  5779  
  5780  extern(Windows) export BOOL EnumWindows(
  5781    WNDENUMPROC lpEnumFunc,
  5782    LPARAM lParam);
  5783  
  5784  extern(Windows) export BOOL EnumThreadWindows(
  5785    DWORD dwThreadId,
  5786    WNDENUMPROC lpfn,
  5787    LPARAM lParam);
  5788  
  5789  // #define EnumTaskWindows(hTask, lpfn, lParam) EnumThreadWindows(HandleToUlong(hTask), lpfn, lParam)
  5790  
  5791  extern(Windows) export int GetClassNameA(
  5792    HWND hWnd,
  5793    LPSTR lpClassName,
  5794    int nMaxCount);
  5795  extern(Windows) export int GetClassNameW(
  5796    HWND hWnd,
  5797    LPWSTR lpClassName,
  5798    int nMaxCount);
  5799  // #ifdef UNICODE
  5800  // #...
  5801  // #else
  5802  alias GetClassNameA GetClassName;
  5803  // #endif // !UNICODE
  5804  
  5805  extern(Windows) export HWND GetTopWindow(
  5806    HWND hWnd);
  5807  
  5808  // #define GetNextWindow(hWnd, wCmd) GetWindow(hWnd, wCmd)
  5809  // #define GetSysModalWindow() (NULL)
  5810  // #define SetSysModalWindow(hWnd) (NULL)
  5811  
  5812  extern(Windows) export DWORD GetWindowThreadProcessId(
  5813    HWND hWnd,
  5814    LPDWORD lpdwProcessId);
  5815  
  5816  // #if(_WIN32_WINNT >= 0x0501)
  5817  extern(Windows) export BOOL IsGUIThread(
  5818    BOOL bConvert);
  5819  
  5820  // #endif /* _WIN32_WINNT >= 0x0501 */
  5821  
  5822  // #define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd, NULL))
  5823  
  5824  extern(Windows) export HWND GetLastActivePopup(
  5825    HWND hWnd);
  5826  
  5827  enum : uint { GW_HWNDFIRST = 0 }
  5828  enum : uint { GW_HWNDLAST = 1 }
  5829  enum : uint { GW_HWNDNEXT = 2 }
  5830  enum : uint { GW_HWNDPREV = 3 }
  5831  enum : uint { GW_OWNER = 4 }
  5832  enum : uint { GW_CHILD = 5 }
  5833  // #if(WINVER <= 0x0400)
  5834  // #...
  5835  // #else
  5836  enum : uint { GW_ENABLEDPOPUP = 6 }
  5837  enum : uint { GW_MAX = 6 }
  5838  // #endif
  5839  
  5840  extern(Windows) export HWND GetWindow(
  5841    HWND hWnd,
  5842    UINT uCmd);
  5843  
  5844  // #ifndef NOWH
  5845  
  5846  // #ifdef STRICT
  5847  
  5848  extern(Windows) export HHOOK SetWindowsHookA(
  5849    int nFilterType,
  5850    HOOKPROC pfnFilterProc);
  5851  extern(Windows) export HHOOK SetWindowsHookW(
  5852    int nFilterType,
  5853    HOOKPROC pfnFilterProc);
  5854  // #ifdef UNICODE
  5855  // #...
  5856  // #else
  5857  alias SetWindowsHookA SetWindowsHook;
  5858  // #endif // !UNICODE
  5859  
  5860  // #else /* !STRICT */
  5861  
  5862  // ...
  5863  // #ifdef UNICODE
  5864  // #...
  5865  // #else
  5866  // #...
  5867  // #endif // !UNICODE
  5868  
  5869  // #endif /* !STRICT */
  5870  
  5871  extern(Windows) export BOOL UnhookWindowsHook(
  5872    int nCode,
  5873    HOOKPROC pfnFilterProc);
  5874  
  5875  extern(Windows) export HHOOK SetWindowsHookExA(
  5876    int idHook,
  5877    HOOKPROC lpfn,
  5878    HINSTANCE hmod,
  5879    DWORD dwThreadId);
  5880  extern(Windows) export HHOOK SetWindowsHookExW(
  5881    int idHook,
  5882    HOOKPROC lpfn,
  5883    HINSTANCE hmod,
  5884    DWORD dwThreadId);
  5885  // #ifdef UNICODE
  5886  // #...
  5887  // #else
  5888  alias SetWindowsHookExA SetWindowsHookEx;
  5889  // #endif // !UNICODE
  5890  
  5891  extern(Windows) export BOOL UnhookWindowsHookEx(
  5892    HHOOK hhk);
  5893  
  5894  extern(Windows) export LRESULT CallNextHookEx(
  5895    HHOOK hhk,
  5896    int nCode,
  5897    WPARAM wParam,
  5898    LPARAM lParam);
  5899  
  5900  // #ifdef STRICT
  5901  // #define DefHookProc(nCode, wParam, lParam, phhk) CallNextHookEx(*phhk, nCode, wParam, lParam)
  5902  // #else
  5903  // #...
  5904  // ...
  5905  // #endif /* STRICT */
  5906  // #endif /* !NOWH */
  5907  
  5908  // #ifndef NOMENUS
  5909  
  5910  enum : uint { MF_INSERT = 0x00000000 }
  5911  enum : uint { MF_CHANGE = 0x00000080 }
  5912  enum : uint { MF_APPEND = 0x00000100 }
  5913  enum : uint { MF_DELETE = 0x00000200 }
  5914  enum : uint { MF_REMOVE = 0x00001000 }
  5915  
  5916  enum : uint { MF_BYCOMMAND = 0x00000000 }
  5917  enum : uint { MF_BYPOSITION = 0x00000400 }
  5918  
  5919  enum : uint { MF_SEPARATOR = 0x00000800 }
  5920  
  5921  enum : uint { MF_ENABLED = 0x00000000 }
  5922  enum : uint { MF_GRAYED = 0x00000001 }
  5923  enum : uint { MF_DISABLED = 0x00000002 }
  5924  
  5925  enum : uint { MF_UNCHECKED = 0x00000000 }
  5926  enum : uint { MF_CHECKED = 0x00000008 }
  5927  enum : uint { MF_USECHECKBITMAPS = 0x00000200 }
  5928  
  5929  enum : uint { MF_STRING = 0x00000000 }
  5930  enum : uint { MF_BITMAP = 0x00000004 }
  5931  enum : uint { MF_OWNERDRAW = 0x00000100 }
  5932  
  5933  enum : uint { MF_POPUP = 0x00000010 }
  5934  enum : uint { MF_MENUBARBREAK = 0x00000020 }
  5935  enum : uint { MF_MENUBREAK = 0x00000040 }
  5936  
  5937  enum : uint { MF_UNHILITE = 0x00000000 }
  5938  enum : uint { MF_HILITE = 0x00000080 }
  5939  
  5940  // #if(WINVER >= 0x0400)
  5941  enum : uint { MF_DEFAULT = 0x00001000 }
  5942  // #endif /* WINVER >= 0x0400 */
  5943  enum : uint { MF_SYSMENU = 0x00002000 }
  5944  enum : uint { MF_HELP = 0x00004000 }
  5945  // #if(WINVER >= 0x0400)
  5946  enum : uint { MF_RIGHTJUSTIFY = 0x00004000 }
  5947  // #endif /* WINVER >= 0x0400 */
  5948  
  5949  enum : uint { MF_MOUSESELECT = 0x00008000 }
  5950  // #if(WINVER >= 0x0400)
  5951  enum : uint { MF_END = 0x00000080 }
  5952  // #endif /* WINVER >= 0x0400 */
  5953  
  5954  // #if(WINVER >= 0x0400)
  5955  alias MF_STRING MFT_STRING;
  5956  alias MF_BITMAP MFT_BITMAP;
  5957  alias MF_MENUBARBREAK MFT_MENUBARBREAK;
  5958  alias MF_MENUBREAK MFT_MENUBREAK;
  5959  alias MF_OWNERDRAW MFT_OWNERDRAW;
  5960  enum : uint { MFT_RADIOCHECK = 0x00000200 }
  5961  alias MF_SEPARATOR MFT_SEPARATOR;
  5962  enum : uint { MFT_RIGHTORDER = 0x00002000 }
  5963  alias MF_RIGHTJUSTIFY MFT_RIGHTJUSTIFY;
  5964  
  5965  enum : uint { MFS_GRAYED = 0x00000003 }
  5966  alias MFS_GRAYED MFS_DISABLED;
  5967  alias MF_CHECKED MFS_CHECKED;
  5968  alias MF_HILITE MFS_HILITE;
  5969  alias MF_ENABLED MFS_ENABLED;
  5970  alias MF_UNCHECKED MFS_UNCHECKED;
  5971  alias MF_UNHILITE MFS_UNHILITE;
  5972  alias MF_DEFAULT MFS_DEFAULT;
  5973  // #endif /* WINVER >= 0x0400 */
  5974  
  5975  // #if(WINVER >= 0x0400)
  5976  
  5977  extern(Windows) export BOOL CheckMenuRadioItem(
  5978    HMENU,
  5979    UINT,
  5980    UINT,
  5981    UINT,
  5982    UINT);
  5983  // #endif /* WINVER >= 0x0400 */
  5984  
  5985  struct _4 {
  5986    WORD versionNumber;
  5987    WORD offset;
  5988  }
  5989  alias _4 MENUITEMTEMPLATEHEADER;
  5990  alias _4* PMENUITEMTEMPLATEHEADER;
  5991  
  5992  struct _5 {
  5993    WORD mtOption;
  5994    WORD mtID;
  5995    WCHAR mtString[1];
  5996  }
  5997  alias _5 MENUITEMTEMPLATE;
  5998  alias _5* PMENUITEMTEMPLATE;
  5999  
  6000  // skip #define MF_END 0x00000080L
  6001  
  6002  // #endif /* !NOMENUS */
  6003  
  6004  // #ifndef NOSYSCOMMANDS
  6005  
  6006  enum : uint { SC_SIZE = 0xF000 }
  6007  enum : uint { SC_MOVE = 0xF010 }
  6008  enum : uint { SC_MINIMIZE = 0xF020 }
  6009  enum : uint { SC_MAXIMIZE = 0xF030 }
  6010  enum : uint { SC_NEXTWINDOW = 0xF040 }
  6011  enum : uint { SC_PREVWINDOW = 0xF050 }
  6012  enum : uint { SC_CLOSE = 0xF060 }
  6013  enum : uint { SC_VSCROLL = 0xF070 }
  6014  enum : uint { SC_HSCROLL = 0xF080 }
  6015  enum : uint { SC_MOUSEMENU = 0xF090 }
  6016  enum : uint { SC_KEYMENU = 0xF100 }
  6017  enum : uint { SC_ARRANGE = 0xF110 }
  6018  enum : uint { SC_RESTORE = 0xF120 }
  6019  enum : uint { SC_TASKLIST = 0xF130 }
  6020  enum : uint { SC_SCREENSAVE = 0xF140 }
  6021  enum : uint { SC_HOTKEY = 0xF150 }
  6022  // #if(WINVER >= 0x0400)
  6023  enum : uint { SC_DEFAULT = 0xF160 }
  6024  enum : uint { SC_MONITORPOWER = 0xF170 }
  6025  enum : uint { SC_CONTEXTHELP = 0xF180 }
  6026  enum : uint { SC_SEPARATOR = 0xF00F }
  6027  // #endif /* WINVER >= 0x0400 */
  6028  
  6029  alias SC_MINIMIZE SC_ICON;
  6030  alias SC_MAXIMIZE SC_ZOOM;
  6031  
  6032  // #endif /* !NOSYSCOMMANDS */
  6033  
  6034  extern(Windows) export HBITMAP LoadBitmapA(
  6035    HINSTANCE hInstance,
  6036    LPCSTR lpBitmapName);
  6037  extern(Windows) export HBITMAP LoadBitmapW(
  6038    HINSTANCE hInstance,
  6039    LPCWSTR lpBitmapName);
  6040  // #ifdef UNICODE
  6041  // #...
  6042  // #else
  6043  alias LoadBitmapA LoadBitmap;
  6044  // #endif // !UNICODE
  6045  
  6046  extern(Windows) export HCURSOR LoadCursorA(
  6047    HINSTANCE hInstance,
  6048    LPCSTR lpCursorName);
  6049  extern(Windows) export HCURSOR LoadCursorW(
  6050    HINSTANCE hInstance,
  6051    LPCWSTR lpCursorName);
  6052  // #ifdef UNICODE
  6053  // #...
  6054  // #else
  6055  alias LoadCursorA LoadCursor;
  6056  // #endif // !UNICODE
  6057  
  6058  extern(Windows) export HCURSOR LoadCursorFromFileA(
  6059    LPCSTR lpFileName);
  6060  extern(Windows) export HCURSOR LoadCursorFromFileW(
  6061    LPCWSTR lpFileName);
  6062  // #ifdef UNICODE
  6063  // #...
  6064  // #else
  6065  alias LoadCursorFromFileA LoadCursorFromFile;
  6066  // #endif // !UNICODE
  6067  
  6068  extern(Windows) export HCURSOR CreateCursor(
  6069    HINSTANCE hInst,
  6070    int xHotSpot,
  6071    int yHotSpot,
  6072    int nWidth,
  6073    int nHeight,
  6074    VOID *pvANDPlane,
  6075    VOID *pvXORPlane);
  6076  
  6077  extern(Windows) export BOOL DestroyCursor(
  6078    HCURSOR hCursor);
  6079  
  6080  // #ifndef _MAC
  6081  alias CopyIcon CopyCursor;
  6082  // #else
  6083  // ...
  6084  // #endif
  6085  
  6086  const LPTSTR IDC_ARROW = cast(LPTSTR)(32512);
  6087  const LPTSTR IDC_IBEAM = cast(LPTSTR)(32513);
  6088  const LPTSTR IDC_WAIT = cast(LPTSTR)(32514);
  6089  const LPTSTR IDC_CROSS = cast(LPTSTR)(32515);
  6090  const LPTSTR IDC_UPARROW = cast(LPTSTR)(32516);
  6091  const LPTSTR IDC_SIZE = cast(LPTSTR)(32640);
  6092  const LPTSTR IDC_ICON = cast(LPTSTR)(32641);
  6093  const LPTSTR IDC_SIZENWSE = cast(LPTSTR)(32642);
  6094  const LPTSTR IDC_SIZENESW = cast(LPTSTR)(32643);
  6095  const LPTSTR IDC_SIZEWE = cast(LPTSTR)(32644);
  6096  const LPTSTR IDC_SIZENS = cast(LPTSTR)(32645);
  6097  const LPTSTR IDC_SIZEALL = cast(LPTSTR)(32646);
  6098  const LPTSTR IDC_NO = cast(LPTSTR)(32648);
  6099  // #if(WINVER >= 0x0500)
  6100  const LPTSTR IDC_HAND = cast(LPTSTR)(32649);
  6101  // #endif /* WINVER >= 0x0500 */
  6102  const LPTSTR IDC_APPSTARTING = cast(LPTSTR)(32650);
  6103  // #if(WINVER >= 0x0400)
  6104  const LPTSTR IDC_HELP = cast(LPTSTR)(32651);
  6105  // #endif /* WINVER >= 0x0400 */
  6106  
  6107  extern(Windows) export BOOL SetSystemCursor(
  6108    HCURSOR hcur,
  6109    DWORD id);
  6110  
  6111  struct _ICONINFO {
  6112    BOOL fIcon;
  6113    DWORD xHotspot;
  6114    DWORD yHotspot;
  6115    HBITMAP hbmMask;
  6116    HBITMAP hbmColor;
  6117  }
  6118  alias _ICONINFO ICONINFO;
  6119  
  6120  alias ICONINFO* PICONINFO;
  6121  
  6122  extern(Windows) export HICON LoadIconA(
  6123    HINSTANCE hInstance,
  6124    LPCSTR lpIconName);
  6125  extern(Windows) export HICON LoadIconW(
  6126    HINSTANCE hInstance,
  6127    LPCWSTR lpIconName);
  6128  // #ifdef UNICODE
  6129  // #...
  6130  // #else
  6131  alias LoadIconA LoadIcon;
  6132  // #endif // !UNICODE
  6133  
  6134  extern(Windows) export HICON CreateIcon(
  6135    HINSTANCE hInstance,
  6136    int nWidth,
  6137    int nHeight,
  6138    BYTE cPlanes,
  6139    BYTE cBitsPixel,
  6140    BYTE *lpbANDbits,
  6141    BYTE *lpbXORbits);
  6142  
  6143  extern(Windows) export BOOL DestroyIcon(
  6144    HICON hIcon);
  6145  
  6146  extern(Windows) export int LookupIconIdFromDirectory(
  6147    PBYTE presbits,
  6148    BOOL fIcon);
  6149  
  6150  // #if(WINVER >= 0x0400)
  6151  extern(Windows) export int LookupIconIdFromDirectoryEx(
  6152    PBYTE presbits,
  6153    BOOL fIcon,
  6154    int cxDesired,
  6155    int cyDesired,
  6156    UINT Flags);
  6157  // #endif /* WINVER >= 0x0400 */
  6158  
  6159  extern(Windows) export HICON CreateIconFromResource(
  6160    PBYTE presbits,
  6161    DWORD dwResSize,
  6162    BOOL fIcon,
  6163    DWORD dwVer);
  6164  
  6165  // #if(WINVER >= 0x0400)
  6166  extern(Windows) export HICON CreateIconFromResourceEx(
  6167    PBYTE presbits,
  6168    DWORD dwResSize,
  6169    BOOL fIcon,
  6170    DWORD dwVer,
  6171    int cxDesired,
  6172    int cyDesired,
  6173    UINT Flags);
  6174  
  6175  struct tagCURSORSHAPE {
  6176    int xHotSpot;
  6177    int yHotSpot;
  6178    int cx;
  6179    int cy;
  6180    int cbWidth;
  6181    BYTE Planes;
  6182    BYTE BitsPixel;
  6183  }
  6184  alias tagCURSORSHAPE CURSORSHAPE;
  6185  alias tagCURSORSHAPE* LPCURSORSHAPE;
  6186  
  6187  // #endif /* WINVER >= 0x0400 */
  6188  
  6189  enum : uint { IMAGE_BITMAP = 0 }
  6190  enum : uint { IMAGE_ICON = 1 }
  6191  enum : uint { IMAGE_CURSOR = 2 }
  6192  // #if(WINVER >= 0x0400)
  6193  enum : uint { IMAGE_ENHMETAFILE = 3 }
  6194  
  6195  enum : uint { LR_DEFAULTCOLOR = 0x0000 }
  6196  enum : uint { LR_MONOCHROME = 0x0001 }
  6197  enum : uint { LR_COLOR = 0x0002 }
  6198  enum : uint { LR_COPYRETURNORG = 0x0004 }
  6199  enum : uint { LR_COPYDELETEORG = 0x0008 }
  6200  enum : uint { LR_LOADFROMFILE = 0x0010 }
  6201  enum : uint { LR_LOADTRANSPARENT = 0x0020 }
  6202  enum : uint { LR_DEFAULTSIZE = 0x0040 }
  6203  enum : uint { LR_VGACOLOR = 0x0080 }
  6204  enum : uint { LR_LOADMAP3DCOLORS = 0x1000 }
  6205  enum : uint { LR_CREATEDIBSECTION = 0x2000 }
  6206  enum : uint { LR_COPYFROMRESOURCE = 0x4000 }
  6207  enum : uint { LR_SHARED = 0x8000 }
  6208  
  6209  extern(Windows) export HANDLE LoadImageA(
  6210    HINSTANCE,
  6211    LPCSTR,
  6212    UINT,
  6213    int,
  6214    int,
  6215    UINT);
  6216  extern(Windows) export HANDLE LoadImageW(
  6217    HINSTANCE,
  6218    LPCWSTR,
  6219    UINT,
  6220    int,
  6221    int,
  6222    UINT);
  6223  // #ifdef UNICODE
  6224  // #...
  6225  // #else
  6226  alias LoadImageA LoadImage;
  6227  // #endif // !UNICODE
  6228  
  6229  extern(Windows) export HANDLE CopyImage(
  6230    HANDLE,
  6231    UINT,
  6232    int,
  6233    int,
  6234    UINT);
  6235  
  6236  enum : uint { DI_MASK = 0x0001 }
  6237  enum : uint { DI_IMAGE = 0x0002 }
  6238  enum : uint { DI_NORMAL = 0x0003 }
  6239  enum : uint { DI_COMPAT = 0x0004 }
  6240  enum : uint { DI_DEFAULTSIZE = 0x0008 }
  6241  // #if(_WIN32_WINNT >= 0x0501)
  6242  enum : uint { DI_NOMIRROR = 0x0010 }
  6243  // #endif /* _WIN32_WINNT >= 0x0501 */
  6244  
  6245  extern(Windows) export BOOL DrawIconEx(HDC hdc, int xLeft, int yTop,
  6246    HICON hIcon, int cxWidth, int cyWidth,
  6247    UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags);
  6248  // #endif /* WINVER >= 0x0400 */
  6249  
  6250  extern(Windows) export HICON CreateIconIndirect(
  6251    PICONINFO piconinfo);
  6252  
  6253  extern(Windows) export HICON CopyIcon(
  6254    HICON hIcon);
  6255  
  6256  extern(Windows) export BOOL GetIconInfo(
  6257    HICON hIcon,
  6258    PICONINFO piconinfo);
  6259  
  6260  // #if(WINVER >= 0x0400)
  6261  enum : uint { RES_ICON = 1 }
  6262  enum : uint { RES_CURSOR = 2 }
  6263  // #endif /* WINVER >= 0x0400 */
  6264  
  6265  // #ifdef OEMRESOURCE
  6266  
  6267  // #...
  6268  // #...
  6269  // #...
  6270  // #...
  6271  // #...
  6272  // #...
  6273  // #...
  6274  // #...
  6275  // #...
  6276  // #...
  6277  // #...
  6278  // #...
  6279  // #...
  6280  // #...
  6281  // #...
  6282  // #...
  6283  // #...
  6284  // #...
  6285  // #...
  6286  // #...
  6287  // #...
  6288  
  6289  // #...
  6290  // #...
  6291  // #...
  6292  // #...
  6293  // #...
  6294  // #...
  6295  // #...
  6296  // #...
  6297  // #...
  6298  // #...
  6299  // #...
  6300  // #...
  6301  // #...
  6302  
  6303  // #...
  6304  // #...
  6305  // #...
  6306  // #...
  6307  // #...
  6308  // #...
  6309  // #...
  6310  // #...
  6311  // #...
  6312  // #...
  6313  // #...
  6314  // #...
  6315  // #...
  6316  // #...
  6317  // #if(WINVER >= 0x0500)
  6318  // #...
  6319  // #endif /* WINVER >= 0x0500 */
  6320  // #if(WINVER >= 0x0400)
  6321  // #...
  6322  // #endif /* WINVER >= 0x0400 */
  6323  
  6324  // #...
  6325  // #...
  6326  // #...
  6327  // #...
  6328  // #...
  6329  // #if(WINVER >= 0x0400)
  6330  // #...
  6331  // #...
  6332  // #...
  6333  // #...
  6334  // #endif /* WINVER >= 0x0400 */
  6335  
  6336  // #endif /* OEMRESOURCE */
  6337  
  6338  enum : uint { ORD_LANGDRIVER = 1 }
  6339  
  6340  // #ifndef NOICONS
  6341  
  6342  // #ifdef RC_INVOKED
  6343  // #...
  6344  // #...
  6345  // #...
  6346  // #...
  6347  // #...
  6348  // #if(WINVER >= 0x0400)
  6349  // #...
  6350  // #endif /* WINVER >= 0x0400 */
  6351  // #else
  6352  const LPTSTR IDI_APPLICATION = cast(LPTSTR)(32512);
  6353  const LPTSTR IDI_HAND = cast(LPTSTR)(32513);
  6354  const LPTSTR IDI_QUESTION = cast(LPTSTR)(32514);
  6355  const LPTSTR IDI_EXCLAMATION = cast(LPTSTR)(32515);
  6356  const LPTSTR IDI_ASTERISK = cast(LPTSTR)(32516);
  6357  // #if(WINVER >= 0x0400)
  6358  const LPTSTR IDI_WINLOGO = cast(LPTSTR)(32517);
  6359  // #endif /* WINVER >= 0x0400 */
  6360  // #endif /* RC_INVOKED */
  6361  
  6362  // #if(WINVER >= 0x0400)
  6363  alias IDI_EXCLAMATION IDI_WARNING;
  6364  alias IDI_HAND IDI_ERROR;
  6365  alias IDI_ASTERISK IDI_INFORMATION;
  6366  // #endif /* WINVER >= 0x0400 */
  6367  
  6368  // #endif /* !NOICONS */
  6369  
  6370  extern(Windows) export int LoadStringA(
  6371    HINSTANCE hInstance,
  6372    UINT uID,
  6373    LPSTR lpBuffer,
  6374    int nBufferMax);
  6375  extern(Windows) export int LoadStringW(
  6376    HINSTANCE hInstance,
  6377    UINT uID,
  6378    LPWSTR lpBuffer,
  6379    int nBufferMax);
  6380  // #ifdef UNICODE
  6381  // #...
  6382  // #else
  6383  alias LoadStringA LoadString;
  6384  // #endif // !UNICODE
  6385  
  6386  enum : uint { IDOK = 1 }
  6387  enum : uint { IDCANCEL = 2 }
  6388  enum : uint { IDABORT = 3 }
  6389  enum : uint { IDRETRY = 4 }
  6390  enum : uint { IDIGNORE = 5 }
  6391  enum : uint { IDYES = 6 }
  6392  enum : uint { IDNO = 7 }
  6393  // #if(WINVER >= 0x0400)
  6394  enum : uint { IDCLOSE = 8 }
  6395  enum : uint { IDHELP = 9 }
  6396  // #endif /* WINVER >= 0x0400 */
  6397  
  6398  // #if(WINVER >= 0x0500)
  6399  enum : uint { IDTRYAGAIN = 10 }
  6400  enum : uint { IDCONTINUE = 11 }
  6401  // #endif /* WINVER >= 0x0500 */
  6402  
  6403  // #if(WINVER >= 0x0501)
  6404  // #ifndef IDTIMEOUT
  6405  enum : uint { IDTIMEOUT = 32000 }
  6406  // #endif
  6407  // #endif /* WINVER >= 0x0501 */
  6408  
  6409  // #ifndef NOCTLMGR
  6410  
  6411  // #ifndef NOWINSTYLES
  6412  
  6413  enum : uint { ES_LEFT = 0x0000 }
  6414  enum : uint { ES_CENTER = 0x0001 }
  6415  enum : uint { ES_RIGHT = 0x0002 }
  6416  enum : uint { ES_MULTILINE = 0x0004 }
  6417  enum : uint { ES_UPPERCASE = 0x0008 }
  6418  enum : uint { ES_LOWERCASE = 0x0010 }
  6419  enum : uint { ES_PASSWORD = 0x0020 }
  6420  enum : uint { ES_AUTOVSCROLL = 0x0040 }
  6421  enum : uint { ES_AUTOHSCROLL = 0x0080 }
  6422  enum : uint { ES_NOHIDESEL = 0x0100 }
  6423  enum : uint { ES_OEMCONVERT = 0x0400 }
  6424  enum : uint { ES_READONLY = 0x0800 }
  6425  enum : uint { ES_WANTRETURN = 0x1000 }
  6426  // #if(WINVER >= 0x0400)
  6427  enum : uint { ES_NUMBER = 0x2000 }
  6428  // #endif /* WINVER >= 0x0400 */
  6429  
  6430  // #endif /* !NOWINSTYLES */
  6431  
  6432  enum : uint { EN_SETFOCUS = 0x0100 }
  6433  enum : uint { EN_KILLFOCUS = 0x0200 }
  6434  enum : uint { EN_CHANGE = 0x0300 }
  6435  enum : uint { EN_UPDATE = 0x0400 }
  6436  enum : uint { EN_ERRSPACE = 0x0500 }
  6437  enum : uint { EN_MAXTEXT = 0x0501 }
  6438  enum : uint { EN_HSCROLL = 0x0601 }
  6439  enum : uint { EN_VSCROLL = 0x0602 }
  6440  
  6441  // #if(_WIN32_WINNT >= 0x0500)
  6442  enum : uint { EN_ALIGN_LTR_EC = 0x0700 }
  6443  enum : uint { EN_ALIGN_RTL_EC = 0x0701 }
  6444  // #endif /* _WIN32_WINNT >= 0x0500 */
  6445  
  6446  // #if(WINVER >= 0x0400)
  6447  
  6448  enum : uint { EC_LEFTMARGIN = 0x0001 }
  6449  enum : uint { EC_RIGHTMARGIN = 0x0002 }
  6450  enum : uint { EC_USEFONTINFO = 0xffff }
  6451  // #endif /* WINVER >= 0x0400 */
  6452  
  6453  // #if(WINVER >= 0x0500)
  6454  
  6455  enum : uint { EMSIS_COMPOSITIONSTRING = 0x0001 }
  6456  
  6457  enum : uint { EIMES_GETCOMPSTRATONCE = 0x0001 }
  6458  enum : uint { EIMES_CANCELCOMPSTRINFOCUS = 0x0002 }
  6459  enum : uint { EIMES_COMPLETECOMPSTRKILLFOCUS = 0x0004 }
  6460  // #endif /* WINVER >= 0x0500 */
  6461  
  6462  // #ifndef NOWINMESSAGES
  6463  
  6464  enum : uint { EM_GETSEL = 0x00B0 }
  6465  enum : uint { EM_SETSEL = 0x00B1 }
  6466  enum : uint { EM_GETRECT = 0x00B2 }
  6467  enum : uint { EM_SETRECT = 0x00B3 }
  6468  enum : uint { EM_SETRECTNP = 0x00B4 }
  6469  enum : uint { EM_SCROLL = 0x00B5 }
  6470  enum : uint { EM_LINESCROLL = 0x00B6 }
  6471  enum : uint { EM_SCROLLCARET = 0x00B7 }
  6472  enum : uint { EM_GETMODIFY = 0x00B8 }
  6473  enum : uint { EM_SETMODIFY = 0x00B9 }
  6474  enum : uint { EM_GETLINECOUNT = 0x00BA }
  6475  enum : uint { EM_LINEINDEX = 0x00BB }
  6476  enum : uint { EM_SETHANDLE = 0x00BC }
  6477  enum : uint { EM_GETHANDLE = 0x00BD }
  6478  enum : uint { EM_GETTHUMB = 0x00BE }
  6479  enum : uint { EM_LINELENGTH = 0x00C1 }
  6480  enum : uint { EM_REPLACESEL = 0x00C2 }
  6481  enum : uint { EM_GETLINE = 0x00C4 }
  6482  enum : uint { EM_LIMITTEXT = 0x00C5 }
  6483  enum : uint { EM_CANUNDO = 0x00C6 }
  6484  enum : uint { EM_UNDO = 0x00C7 }
  6485  enum : uint { EM_FMTLINES = 0x00C8 }
  6486  enum : uint { EM_LINEFROMCHAR = 0x00C9 }
  6487  enum : uint { EM_SETTABSTOPS = 0x00CB }
  6488  enum : uint { EM_SETPASSWORDCHAR = 0x00CC }
  6489  enum : uint { EM_EMPTYUNDOBUFFER = 0x00CD }
  6490  enum : uint { EM_GETFIRSTVISIBLELINE = 0x00CE }
  6491  enum : uint { EM_SETREADONLY = 0x00CF }
  6492  enum : uint { EM_SETWORDBREAKPROC = 0x00D0 }
  6493  enum : uint { EM_GETWORDBREAKPROC = 0x00D1 }
  6494  enum : uint { EM_GETPASSWORDCHAR = 0x00D2 }
  6495  // #if(WINVER >= 0x0400)
  6496  enum : uint { EM_SETMARGINS = 0x00D3 }
  6497  enum : uint { EM_GETMARGINS = 0x00D4 }
  6498  alias EM_LIMITTEXT EM_SETLIMITTEXT;
  6499  enum : uint { EM_GETLIMITTEXT = 0x00D5 }
  6500  enum : uint { EM_POSFROMCHAR = 0x00D6 }
  6501  enum : uint { EM_CHARFROMPOS = 0x00D7 }
  6502  // #endif /* WINVER >= 0x0400 */
  6503  
  6504  // #if(WINVER >= 0x0500)
  6505  enum : uint { EM_SETIMESTATUS = 0x00D8 }
  6506  enum : uint { EM_GETIMESTATUS = 0x00D9 }
  6507  // #endif /* WINVER >= 0x0500 */
  6508  
  6509  // #endif /* !NOWINMESSAGES */
  6510  
  6511  enum : uint { WB_LEFT = 0 }
  6512  enum : uint { WB_RIGHT = 1 }
  6513  enum : uint { WB_ISDELIMITER = 2 }
  6514  
  6515  enum : uint { BS_PUSHBUTTON = 0x00000000 }
  6516  enum : uint { BS_DEFPUSHBUTTON = 0x00000001 }
  6517  enum : uint { BS_CHECKBOX = 0x00000002 }
  6518  enum : uint { BS_AUTOCHECKBOX = 0x00000003 }
  6519  enum : uint { BS_RADIOBUTTON = 0x00000004 }
  6520  enum : uint { BS_3STATE = 0x00000005 }
  6521  enum : uint { BS_AUTO3STATE = 0x00000006 }
  6522  enum : uint { BS_GROUPBOX = 0x00000007 }
  6523  enum : uint { BS_USERBUTTON = 0x00000008 }
  6524  enum : uint { BS_AUTORADIOBUTTON = 0x00000009 }
  6525  enum : uint { BS_OWNERDRAW = 0x0000000B }
  6526  enum : uint { BS_LEFTTEXT = 0x00000020 }
  6527  // #if(WINVER >= 0x0400)
  6528  enum : uint { BS_TEXT = 0x00000000 }
  6529  enum : uint { BS_ICON = 0x00000040 }
  6530  enum : uint { BS_BITMAP = 0x00000080 }
  6531  enum : uint { BS_LEFT = 0x00000100 }
  6532  enum : uint { BS_RIGHT = 0x00000200 }
  6533  enum : uint { BS_CENTER = 0x00000300 }
  6534  enum : uint { BS_TOP = 0x00000400 }
  6535  enum : uint { BS_BOTTOM = 0x00000800 }
  6536  enum : uint { BS_VCENTER = 0x00000C00 }
  6537  enum : uint { BS_PUSHLIKE = 0x00001000 }
  6538  enum : uint { BS_MULTILINE = 0x00002000 }
  6539  enum : uint { BS_NOTIFY = 0x00004000 }
  6540  enum : uint { BS_FLAT = 0x00008000 }
  6541  alias BS_LEFTTEXT BS_RIGHTBUTTON;
  6542  // #endif /* WINVER >= 0x0400 */
  6543  
  6544  enum : uint { BN_CLICKED = 0 }
  6545  enum : uint { BN_PAINT = 1 }
  6546  enum : uint { BN_HILITE = 2 }
  6547  enum : uint { BN_UNHILITE = 3 }
  6548  enum : uint { BN_DISABLE = 4 }
  6549  enum : uint { BN_DOUBLECLICKED = 5 }
  6550  // #if(WINVER >= 0x0400)
  6551  alias BN_HILITE BN_PUSHED;
  6552  alias BN_UNHILITE BN_UNPUSHED;
  6553  alias BN_DOUBLECLICKED BN_DBLCLK;
  6554  enum : uint { BN_SETFOCUS = 6 }
  6555  enum : uint { BN_KILLFOCUS = 7 }
  6556  // #endif /* WINVER >= 0x0400 */
  6557  
  6558  enum : uint { BM_GETCHECK = 0x00F0 }
  6559  enum : uint { BM_SETCHECK = 0x00F1 }
  6560  enum : uint { BM_GETSTATE = 0x00F2 }
  6561  enum : uint { BM_SETSTATE = 0x00F3 }
  6562  enum : uint { BM_SETSTYLE = 0x00F4 }
  6563  // #if(WINVER >= 0x0400)
  6564  enum : uint { BM_CLICK = 0x00F5 }
  6565  enum : uint { BM_GETIMAGE = 0x00F6 }
  6566  enum : uint { BM_SETIMAGE = 0x00F7 }
  6567  
  6568  enum : uint { BST_UNCHECKED = 0x0000 }
  6569  enum : uint { BST_CHECKED = 0x0001 }
  6570  enum : uint { BST_INDETERMINATE = 0x0002 }
  6571  enum : uint { BST_PUSHED = 0x0004 }
  6572  enum : uint { BST_FOCUS = 0x0008 }
  6573  // #endif /* WINVER >= 0x0400 */
  6574  
  6575  enum : uint { SS_LEFT = 0x00000000 }
  6576  enum : uint { SS_CENTER = 0x00000001 }
  6577  enum : uint { SS_RIGHT = 0x00000002 }
  6578  enum : uint { SS_ICON = 0x00000003 }
  6579  enum : uint { SS_BLACKRECT = 0x00000004 }
  6580  enum : uint { SS_GRAYRECT = 0x00000005 }
  6581  enum : uint { SS_WHITERECT = 0x00000006 }
  6582  enum : uint { SS_BLACKFRAME = 0x00000007 }
  6583  enum : uint { SS_GRAYFRAME = 0x00000008 }
  6584  enum : uint { SS_WHITEFRAME = 0x00000009 }
  6585  enum : uint { SS_USERITEM = 0x0000000A }
  6586  enum : uint { SS_SIMPLE = 0x0000000B }
  6587  enum : uint { SS_LEFTNOWORDWRAP = 0x0000000C }
  6588  // #if(WINVER >= 0x0400)
  6589  enum : uint { SS_OWNERDRAW = 0x0000000D }
  6590  enum : uint { SS_BITMAP = 0x0000000E }
  6591  enum : uint { SS_ENHMETAFILE = 0x0000000F }
  6592  enum : uint { SS_ETCHEDHORZ = 0x00000010 }
  6593  enum : uint { SS_ETCHEDVERT = 0x00000011 }
  6594  enum : uint { SS_ETCHEDFRAME = 0x00000012 }
  6595  enum : uint { SS_TYPEMASK = 0x0000001F }
  6596  // #endif /* WINVER >= 0x0400 */
  6597  // #if(WINVER >= 0x0501)
  6598  enum : uint { SS_REALSIZECONTROL = 0x00000040 }
  6599  // #endif /* WINVER >= 0x0501 */
  6600  enum : uint { SS_NOPREFIX = 0x00000080 }
  6601  // #if(WINVER >= 0x0400)
  6602  enum : uint { SS_NOTIFY = 0x00000100 }
  6603  enum : uint { SS_CENTERIMAGE = 0x00000200 }
  6604  enum : uint { SS_RIGHTJUST = 0x00000400 }
  6605  enum : uint { SS_REALSIZEIMAGE = 0x00000800 }
  6606  enum : uint { SS_SUNKEN = 0x00001000 }
  6607  enum : uint { SS_ENDELLIPSIS = 0x00004000 }
  6608  enum : uint { SS_PATHELLIPSIS = 0x00008000 }
  6609  enum : uint { SS_WORDELLIPSIS = 0x0000C000 }
  6610  enum : uint { SS_ELLIPSISMASK = 0x0000C000 }
  6611  // #endif /* WINVER >= 0x0400 */
  6612  
  6613  // #ifndef NOWINMESSAGES
  6614  
  6615  enum : uint { STM_SETICON = 0x0170 }
  6616  enum : uint { STM_GETICON = 0x0171 }
  6617  // #if(WINVER >= 0x0400)
  6618  enum : uint { STM_SETIMAGE = 0x0172 }
  6619  enum : uint { STM_GETIMAGE = 0x0173 }
  6620  enum : uint { STN_CLICKED = 0 }
  6621  enum : uint { STN_DBLCLK = 1 }
  6622  enum : uint { STN_ENABLE = 2 }
  6623  enum : uint { STN_DISABLE = 3 }
  6624  // #endif /* WINVER >= 0x0400 */
  6625  enum : uint { STM_MSGMAX = 0x0174 }
  6626  // #endif /* !NOWINMESSAGES */
  6627  
  6628  const ATOM WC_DIALOG = cast(ATOM)0x8002;
  6629  
  6630  enum : uint { DWL_MSGRESULT = 0 }
  6631  enum : uint { DWL_DLGPROC = 4 }
  6632  enum : uint { DWL_USER = 8 }
  6633  
  6634  // #ifdef _WIN64
  6635  
  6636  // #...
  6637  // #...
  6638  // #...
  6639  
  6640  // #endif /* _WIN64 */
  6641  
  6642  enum : uint { DWLP_MSGRESULT = 0 }
  6643  enum : uint { DWLP_DLGPROC = DWLP_MSGRESULT + LRESULT.sizeof }
  6644  enum : uint { DWLP_USER = DWLP_DLGPROC + DLGPROC.sizeof }
  6645  
  6646  // #ifndef NOMSG
  6647  
  6648  extern(Windows) export BOOL IsDialogMessageA(
  6649    HWND hDlg,
  6650    LPMSG lpMsg);
  6651  extern(Windows) export BOOL IsDialogMessageW(
  6652    HWND hDlg,
  6653    LPMSG lpMsg);
  6654  // #ifdef UNICODE
  6655  // #...
  6656  // #else
  6657  alias IsDialogMessageA IsDialogMessage;
  6658  // #endif // !UNICODE
  6659  
  6660  // #endif /* !NOMSG */
  6661  
  6662  extern(Windows) export BOOL MapDialogRect(
  6663    HWND hDlg,
  6664    LPRECT lpRect);
  6665  
  6666  extern(Windows) export int DlgDirListA(
  6667    HWND hDlg,
  6668    LPSTR lpPathSpec,
  6669    int nIDListBox,
  6670    int nIDStaticPath,
  6671    UINT uFileType);
  6672  extern(Windows) export int DlgDirListW(
  6673    HWND hDlg,
  6674    LPWSTR lpPathSpec,
  6675    int nIDListBox,
  6676    int nIDStaticPath,
  6677    UINT uFileType);
  6678  // #ifdef UNICODE
  6679  // #...
  6680  // #else
  6681  alias DlgDirListA DlgDirList;
  6682  // #endif // !UNICODE
  6683  
  6684  enum : uint { DDL_READWRITE = 0x0000 }
  6685  enum : uint { DDL_READONLY = 0x0001 }
  6686  enum : uint { DDL_HIDDEN = 0x0002 }
  6687  enum : uint { DDL_SYSTEM = 0x0004 }
  6688  enum : uint { DDL_DIRECTORY = 0x0010 }
  6689  enum : uint { DDL_ARCHIVE = 0x0020 }
  6690  
  6691  enum : uint { DDL_POSTMSGS = 0x2000 }
  6692  enum : uint { DDL_DRIVES = 0x4000 }
  6693  enum : uint { DDL_EXCLUSIVE = 0x8000 }
  6694  
  6695  extern(Windows) export BOOL DlgDirSelectExA(
  6696    HWND hDlg,
  6697    LPSTR lpString,
  6698    int nCount,
  6699    int nIDListBox);
  6700  extern(Windows) export BOOL DlgDirSelectExW(
  6701    HWND hDlg,
  6702    LPWSTR lpString,
  6703    int nCount,
  6704    int nIDListBox);
  6705  // #ifdef UNICODE
  6706  // #...
  6707  // #else
  6708  alias DlgDirSelectExA DlgDirSelectEx;
  6709  // #endif // !UNICODE
  6710  
  6711  extern(Windows) export int DlgDirListComboBoxA(
  6712    HWND hDlg,
  6713    LPSTR lpPathSpec,
  6714    int nIDComboBox,
  6715    int nIDStaticPath,
  6716    UINT uFiletype);
  6717  extern(Windows) export int DlgDirListComboBoxW(
  6718    HWND hDlg,
  6719    LPWSTR lpPathSpec,
  6720    int nIDComboBox,
  6721    int nIDStaticPath,
  6722    UINT uFiletype);
  6723  // #ifdef UNICODE
  6724  // #...
  6725  // #else
  6726  alias DlgDirListComboBoxA DlgDirListComboBox;
  6727  // #endif // !UNICODE
  6728  
  6729  extern(Windows) export BOOL DlgDirSelectComboBoxExA(
  6730    HWND hDlg,
  6731    LPSTR lpString,
  6732    int nCount,
  6733    int nIDComboBox);
  6734  extern(Windows) export BOOL DlgDirSelectComboBoxExW(
  6735    HWND hDlg,
  6736    LPWSTR lpString,
  6737    int nCount,
  6738    int nIDComboBox);
  6739  // #ifdef UNICODE
  6740  // #...
  6741  // #else
  6742  alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx;
  6743  // #endif // !UNICODE
  6744  
  6745  enum : uint { DS_ABSALIGN = 0x01 }
  6746  enum : uint { DS_SYSMODAL = 0x02 }
  6747  enum : uint { DS_LOCALEDIT = 0x20 }
  6748  enum : uint { DS_SETFONT = 0x40 }
  6749  enum : uint { DS_MODALFRAME = 0x80 }
  6750  enum : uint { DS_NOIDLEMSG = 0x100 }
  6751  enum : uint { DS_SETFOREGROUND = 0x200 }
  6752  
  6753  // #if(WINVER >= 0x0400)
  6754  enum : uint { DS_3DLOOK = 0x0004 }
  6755  enum : uint { DS_FIXEDSYS = 0x0008 }
  6756  enum : uint { DS_NOFAILCREATE = 0x0010 }
  6757  enum : uint { DS_CONTROL = 0x0400 }
  6758  enum : uint { DS_CENTER = 0x0800 }
  6759  enum : uint { DS_CENTERMOUSE = 0x1000 }
  6760  enum : uint { DS_CONTEXTHELP = 0x2000 }
  6761  
  6762  enum : uint { DS_SHELLFONT = DS_SETFONT | DS_FIXEDSYS }
  6763  // #endif /* WINVER >= 0x0400 */
  6764  
  6765  enum : uint { DM_GETDEFID = WM_USER+0 }
  6766  enum : uint { DM_SETDEFID = WM_USER+1 }
  6767  
  6768  // #if(WINVER >= 0x0400)
  6769  enum : uint { DM_REPOSITION = WM_USER+2 }
  6770  // #endif /* WINVER >= 0x0400 */
  6771  
  6772  enum : uint { DC_HASDEFID = 0x534B }
  6773  
  6774  enum : uint { DLGC_WANTARROWS = 0x0001 }
  6775  enum : uint { DLGC_WANTTAB = 0x0002 }
  6776  enum : uint { DLGC_WANTALLKEYS = 0x0004 }
  6777  enum : uint { DLGC_WANTMESSAGE = 0x0004 }
  6778  enum : uint { DLGC_HASSETSEL = 0x0008 }
  6779  enum : uint { DLGC_DEFPUSHBUTTON = 0x0010 }
  6780  enum : uint { DLGC_UNDEFPUSHBUTTON = 0x0020 }
  6781  enum : uint { DLGC_RADIOBUTTON = 0x0040 }
  6782  enum : uint { DLGC_WANTCHARS = 0x0080 }
  6783  enum : uint { DLGC_STATIC = 0x0100 }
  6784  enum : uint { DLGC_BUTTON = 0x2000 }
  6785  
  6786  enum : uint { LB_CTLCODE = 0 }
  6787  
  6788  enum : uint { LB_OKAY = 0 }
  6789  enum { LB_ERR = -1 }
  6790  enum { LB_ERRSPACE = -2 }
  6791  
  6792  enum { LBN_ERRSPACE = -2 }
  6793  enum : uint { LBN_SELCHANGE = 1 }
  6794  enum : uint { LBN_DBLCLK = 2 }
  6795  enum : uint { LBN_SELCANCEL = 3 }
  6796  enum : uint { LBN_SETFOCUS = 4 }
  6797  enum : uint { LBN_KILLFOCUS = 5 }
  6798  
  6799  // #ifndef NOWINMESSAGES
  6800  
  6801  enum : uint { LB_ADDSTRING = 0x0180 }
  6802  enum : uint { LB_INSERTSTRING = 0x0181 }
  6803  enum : uint { LB_DELETESTRING = 0x0182 }
  6804  enum : uint { LB_SELITEMRANGEEX = 0x0183 }
  6805  enum : uint { LB_RESETCONTENT = 0x0184 }
  6806  enum : uint { LB_SETSEL = 0x0185 }
  6807  enum : uint { LB_SETCURSEL = 0x0186 }
  6808  enum : uint { LB_GETSEL = 0x0187 }
  6809  enum : uint { LB_GETCURSEL = 0x0188 }
  6810  enum : uint { LB_GETTEXT = 0x0189 }
  6811  enum : uint { LB_GETTEXTLEN = 0x018A }
  6812  enum : uint { LB_GETCOUNT = 0x018B }
  6813  enum : uint { LB_SELECTSTRING = 0x018C }
  6814  enum : uint { LB_DIR = 0x018D }
  6815  enum : uint { LB_GETTOPINDEX = 0x018E }
  6816  enum : uint { LB_FINDSTRING = 0x018F }
  6817  enum : uint { LB_GETSELCOUNT = 0x0190 }
  6818  enum : uint { LB_GETSELITEMS = 0x0191 }
  6819  enum : uint { LB_SETTABSTOPS = 0x0192 }
  6820  enum : uint { LB_GETHORIZONTALEXTENT = 0x0193 }
  6821  enum : uint { LB_SETHORIZONTALEXTENT = 0x0194 }
  6822  enum : uint { LB_SETCOLUMNWIDTH = 0x0195 }
  6823  enum : uint { LB_ADDFILE = 0x0196 }
  6824  enum : uint { LB_SETTOPINDEX = 0x0197 }
  6825  enum : uint { LB_GETITEMRECT = 0x0198 }
  6826  enum : uint { LB_GETITEMDATA = 0x0199 }
  6827  enum : uint { LB_SETITEMDATA = 0x019A }
  6828  enum : uint { LB_SELITEMRANGE = 0x019B }
  6829  enum : uint { LB_SETANCHORINDEX = 0x019C }
  6830  enum : uint { LB_GETANCHORINDEX = 0x019D }
  6831  enum : uint { LB_SETCARETINDEX = 0x019E }
  6832  enum : uint { LB_GETCARETINDEX = 0x019F }
  6833  enum : uint { LB_SETITEMHEIGHT = 0x01A0 }
  6834  enum : uint { LB_GETITEMHEIGHT = 0x01A1 }
  6835  enum : uint { LB_FINDSTRINGEXACT = 0x01A2 }
  6836  enum : uint { LB_SETLOCALE = 0x01A5 }
  6837  enum : uint { LB_GETLOCALE = 0x01A6 }
  6838  enum : uint { LB_SETCOUNT = 0x01A7 }
  6839  // #if(WINVER >= 0x0400)
  6840  enum : uint { LB_INITSTORAGE = 0x01A8 }
  6841  enum : uint { LB_ITEMFROMPOINT = 0x01A9 }
  6842  // #endif /* WINVER >= 0x0400 */
  6843  // #if(_WIN32_WCE >= 0x0400)
  6844  // #...
  6845  // #endif
  6846  
  6847  // #if(_WIN32_WINNT >= 0x0501)
  6848  enum : uint { LB_GETLISTBOXINFO = 0x01B2 }
  6849  // #endif /* _WIN32_WINNT >= 0x0501 */
  6850  
  6851  // #if(_WIN32_WINNT >= 0x0501)
  6852  enum : uint { LB_MSGMAX = 0x01B3 }
  6853  // #elif(_WIN32_WCE >= 0x0400)
  6854  // #...
  6855  // #elif(WINVER >= 0x0400)
  6856  // #...
  6857  // #else
  6858  // #...
  6859  // #endif
  6860  
  6861  // #endif /* !NOWINMESSAGES */
  6862  
  6863  // #ifndef NOWINSTYLES
  6864  
  6865  enum : uint { LBS_NOTIFY = 0x0001 }
  6866  enum : uint { LBS_SORT = 0x0002 }
  6867  enum : uint { LBS_NOREDRAW = 0x0004 }
  6868  enum : uint { LBS_MULTIPLESEL = 0x0008 }
  6869  enum : uint { LBS_OWNERDRAWFIXED = 0x0010 }
  6870  enum : uint { LBS_OWNERDRAWVARIABLE = 0x0020 }
  6871  enum : uint { LBS_HASSTRINGS = 0x0040 }
  6872  enum : uint { LBS_USETABSTOPS = 0x0080 }
  6873  enum : uint { LBS_NOINTEGRALHEIGHT = 0x0100 }
  6874  enum : uint { LBS_MULTICOLUMN = 0x0200 }
  6875  enum : uint { LBS_WANTKEYBOARDINPUT = 0x0400 }
  6876  enum : uint { LBS_EXTENDEDSEL = 0x0800 }
  6877  enum : uint { LBS_DISABLENOSCROLL = 0x1000 }
  6878  enum : uint { LBS_NODATA = 0x2000 }
  6879  // #if(WINVER >= 0x0400)
  6880  enum : uint { LBS_NOSEL = 0x4000 }
  6881  // #endif /* WINVER >= 0x0400 */
  6882  enum : uint { LBS_STANDARD = LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER }
  6883  
  6884  // #endif /* !NOWINSTYLES */
  6885  
  6886  enum : uint { CB_OKAY = 0 }
  6887  enum { CB_ERR = -1 }
  6888  enum { CB_ERRSPACE = -2 }
  6889  
  6890  enum { CBN_ERRSPACE = -1 }
  6891  enum : uint { CBN_SELCHANGE = 1 }
  6892  enum : uint { CBN_DBLCLK = 2 }
  6893  enum : uint { CBN_SETFOCUS = 3 }
  6894  enum : uint { CBN_KILLFOCUS = 4 }
  6895  enum : uint { CBN_EDITCHANGE = 5 }
  6896  enum : uint { CBN_EDITUPDATE = 6 }
  6897  enum : uint { CBN_DROPDOWN = 7 }
  6898  enum : uint { CBN_CLOSEUP = 8 }
  6899  enum : uint { CBN_SELENDOK = 9 }
  6900  enum : uint { CBN_SELENDCANCEL = 10 }
  6901  
  6902  // #ifndef NOWINSTYLES
  6903  
  6904  enum : uint { CBS_SIMPLE = 0x0001 }
  6905  enum : uint { CBS_DROPDOWN = 0x0002 }
  6906  enum : uint { CBS_DROPDOWNLIST = 0x0003 }
  6907  enum : uint { CBS_OWNERDRAWFIXED = 0x0010 }
  6908  enum : uint { CBS_OWNERDRAWVARIABLE = 0x0020 }
  6909  enum : uint { CBS_AUTOHSCROLL = 0x0040 }
  6910  enum : uint { CBS_OEMCONVERT = 0x0080 }
  6911  enum : uint { CBS_SORT = 0x0100 }
  6912  enum : uint { CBS_HASSTRINGS = 0x0200 }
  6913  enum : uint { CBS_NOINTEGRALHEIGHT = 0x0400 }
  6914  enum : uint { CBS_DISABLENOSCROLL = 0x0800 }
  6915  // #if(WINVER >= 0x0400)
  6916  enum : uint { CBS_UPPERCASE = 0x2000 }
  6917  enum : uint { CBS_LOWERCASE = 0x4000 }
  6918  // #endif /* WINVER >= 0x0400 */
  6919  
  6920  // #endif  /* !NOWINSTYLES */
  6921  
  6922  // #ifndef NOWINMESSAGES
  6923  enum : uint { CB_GETEDITSEL = 0x0140 }
  6924  enum : uint { CB_LIMITTEXT = 0x0141 }
  6925  enum : uint { CB_SETEDITSEL = 0x0142 }
  6926  enum : uint { CB_ADDSTRING = 0x0143 }
  6927  enum : uint { CB_DELETESTRING = 0x0144 }
  6928  enum : uint { CB_DIR = 0x0145 }
  6929  enum : uint { CB_GETCOUNT = 0x0146 }
  6930  enum : uint { CB_GETCURSEL = 0x0147 }
  6931  enum : uint { CB_GETLBTEXT = 0x0148 }
  6932  enum : uint { CB_GETLBTEXTLEN = 0x0149 }
  6933  enum : uint { CB_INSERTSTRING = 0x014A }
  6934  enum : uint { CB_RESETCONTENT = 0x014B }
  6935  enum : uint { CB_FINDSTRING = 0x014C }
  6936  enum : uint { CB_SELECTSTRING = 0x014D }
  6937  enum : uint { CB_SETCURSEL = 0x014E }
  6938  enum : uint { CB_SHOWDROPDOWN = 0x014F }
  6939  enum : uint { CB_GETITEMDATA = 0x0150 }
  6940  enum : uint { CB_SETITEMDATA = 0x0151 }
  6941  enum : uint { CB_GETDROPPEDCONTROLRECT = 0x0152 }
  6942  enum : uint { CB_SETITEMHEIGHT = 0x0153 }
  6943  enum : uint { CB_GETITEMHEIGHT = 0x0154 }
  6944  enum : uint { CB_SETEXTENDEDUI = 0x0155 }
  6945  enum : uint { CB_GETEXTENDEDUI = 0x0156 }
  6946  enum : uint { CB_GETDROPPEDSTATE = 0x0157 }
  6947  enum : uint { CB_FINDSTRINGEXACT = 0x0158 }
  6948  enum : uint { CB_SETLOCALE = 0x0159 }
  6949  enum : uint { CB_GETLOCALE = 0x015A }
  6950  // #if(WINVER >= 0x0400)
  6951  enum : uint { CB_GETTOPINDEX = 0x015b }
  6952  enum : uint { CB_SETTOPINDEX = 0x015c }
  6953  enum : uint { CB_GETHORIZONTALEXTENT = 0x015d }
  6954  enum : uint { CB_SETHORIZONTALEXTENT = 0x015e }
  6955  enum : uint { CB_GETDROPPEDWIDTH = 0x015f }
  6956  enum : uint { CB_SETDROPPEDWIDTH = 0x0160 }
  6957  enum : uint { CB_INITSTORAGE = 0x0161 }
  6958  // #if(_WIN32_WCE >= 0x0400)
  6959  // #...
  6960  // #endif
  6961  // #endif /* WINVER >= 0x0400 */
  6962  
  6963  // #if(_WIN32_WINNT >= 0x0501)
  6964  enum : uint { CB_GETCOMBOBOXINFO = 0x0164 }
  6965  // #endif /* _WIN32_WINNT >= 0x0501 */
  6966  
  6967  // #if(_WIN32_WINNT >= 0x0501)
  6968  enum : uint { CB_MSGMAX = 0x0165 }
  6969  // #elif(_WIN32_WCE >= 0x0400)
  6970  // #...
  6971  // #elif(WINVER >= 0x0400)
  6972  // #...
  6973  // #else
  6974  // #...
  6975  // #endif
  6976  // #endif  /* !NOWINMESSAGES */
  6977  
  6978  // #ifndef NOWINSTYLES
  6979  
  6980  enum : uint { SBS_HORZ = 0x0000 }
  6981  enum : uint { SBS_VERT = 0x0001 }
  6982  enum : uint { SBS_TOPALIGN = 0x0002 }
  6983  enum : uint { SBS_LEFTALIGN = 0x0002 }
  6984  enum : uint { SBS_BOTTOMALIGN = 0x0004 }
  6985  enum : uint { SBS_RIGHTALIGN = 0x0004 }
  6986  enum : uint { SBS_SIZEBOXTOPLEFTALIGN = 0x0002 }
  6987  enum : uint { SBS_SIZEBOXBOTTOMRIGHTALIGN = 0x0004 }
  6988  enum : uint { SBS_SIZEBOX = 0x0008 }
  6989  // #if(WINVER >= 0x0400)
  6990  enum : uint { SBS_SIZEGRIP = 0x0010 }
  6991  // #endif /* WINVER >= 0x0400 */
  6992  
  6993  // #endif /* !NOWINSTYLES */
  6994  
  6995  // #ifndef NOWINMESSAGES
  6996  enum : uint { SBM_SETPOS = 0x00E0 }
  6997  enum : uint { SBM_GETPOS = 0x00E1 }
  6998  enum : uint { SBM_SETRANGE = 0x00E2 }
  6999  enum : uint { SBM_SETRANGEREDRAW = 0x00E6 }
  7000  enum : uint { SBM_GETRANGE = 0x00E3 }
  7001  enum : uint { SBM_ENABLE_ARROWS = 0x00E4 }
  7002  // #if(WINVER >= 0x0400)
  7003  enum : uint { SBM_SETSCROLLINFO = 0x00E9 }
  7004  enum : uint { SBM_GETSCROLLINFO = 0x00EA }
  7005  // #endif /* WINVER >= 0x0400 */
  7006  
  7007  // #if(_WIN32_WINNT >= 0x0501)
  7008  enum : uint { SBM_GETSCROLLBARINFO = 0x00EB }
  7009  // #endif /* _WIN32_WINNT >= 0x0501 */
  7010  
  7011  // #if(WINVER >= 0x0400)
  7012  enum : uint { SIF_RANGE = 0x0001 }
  7013  enum : uint { SIF_PAGE = 0x0002 }
  7014  enum : uint { SIF_POS = 0x0004 }
  7015  enum : uint { SIF_DISABLENOSCROLL = 0x0008 }
  7016  enum : uint { SIF_TRACKPOS = 0x0010 }
  7017  enum : uint { SIF_ALL = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS }
  7018  
  7019  struct tagSCROLLINFO {
  7020    UINT cbSize;
  7021    UINT fMask;
  7022    int nMin;
  7023    int nMax;
  7024    UINT nPage;
  7025    int nPos;
  7026    int nTrackPos;
  7027  }
  7028  alias tagSCROLLINFO SCROLLINFO;
  7029  alias tagSCROLLINFO* LPSCROLLINFO;
  7030  
  7031  alias SCROLLINFO* LPCSCROLLINFO;
  7032  
  7033  extern(Windows) export int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);
  7034  extern(Windows) export BOOL GetScrollInfo(HWND, int, LPSCROLLINFO);
  7035  
  7036  // #endif /* WINVER >= 0x0400 */
  7037  // #endif /* !NOWINMESSAGES */
  7038  // #endif /* !NOCTLMGR */
  7039  
  7040  // #ifndef NOMDI
  7041  
  7042  enum : uint { MDIS_ALLCHILDSTYLES = 0x0001 }
  7043  
  7044  enum : uint { MDITILE_VERTICAL = 0x0000 }
  7045  enum : uint { MDITILE_HORIZONTAL = 0x0001 }
  7046  enum : uint { MDITILE_SKIPDISABLED = 0x0002 }
  7047  // #if(_WIN32_WINNT >= 0x0500)
  7048  enum : uint { MDITILE_ZORDER = 0x0004 }
  7049  // #endif /* _WIN32_WINNT >= 0x0500 */
  7050  
  7051  struct tagMDICREATESTRUCTA {
  7052    LPCSTR szClass;
  7053    LPCSTR szTitle;
  7054    HANDLE hOwner;
  7055    int x;
  7056    int y;
  7057    int cx;
  7058    int cy;
  7059    DWORD style;
  7060    LPARAM lParam;
  7061  }
  7062  alias tagMDICREATESTRUCTA MDICREATESTRUCTA;
  7063  alias tagMDICREATESTRUCTA* LPMDICREATESTRUCTA;
  7064  
  7065  struct tagMDICREATESTRUCTW {
  7066    LPCWSTR szClass;
  7067    LPCWSTR szTitle;
  7068    HANDLE hOwner;
  7069    int x;
  7070    int y;
  7071    int cx;
  7072    int cy;
  7073    DWORD style;
  7074    LPARAM lParam;
  7075  }
  7076  alias tagMDICREATESTRUCTW MDICREATESTRUCTW;
  7077  alias tagMDICREATESTRUCTW* LPMDICREATESTRUCTW;
  7078  
  7079  // #ifdef UNICODE
  7080  // ...
  7081  // #else
  7082  alias MDICREATESTRUCTA MDICREATESTRUCT;
  7083  alias LPMDICREATESTRUCTA LPMDICREATESTRUCT;
  7084  // #endif // UNICODE
  7085  
  7086  struct tagCLIENTCREATESTRUCT {
  7087    HANDLE hWindowMenu;
  7088    UINT idFirstChild;
  7089  }
  7090  alias tagCLIENTCREATESTRUCT CLIENTCREATESTRUCT;
  7091  alias tagCLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT;
  7092  
  7093  extern(Windows) export LRESULT DefFrameProcA(
  7094    HWND hWnd,
  7095    HWND hWndMDIClient,
  7096    UINT uMsg,
  7097    WPARAM wParam,
  7098    LPARAM lParam);
  7099  extern(Windows) export LRESULT DefFrameProcW(
  7100    HWND hWnd,
  7101    HWND hWndMDIClient,
  7102    UINT uMsg,
  7103    WPARAM wParam,
  7104    LPARAM lParam);
  7105  // #ifdef UNICODE
  7106  // #...
  7107  // #else
  7108  alias DefFrameProcA DefFrameProc;
  7109  // #endif // !UNICODE
  7110  
  7111  extern(Windows) export LRESULT DefMDIChildProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  7112  extern(Windows) export LRESULT DefMDIChildProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  7113  // #ifdef UNICODE
  7114  // #...
  7115  // #else
  7116  alias DefMDIChildProcA DefMDIChildProc;
  7117  // #endif // !UNICODE
  7118  
  7119  // #ifndef NOMSG
  7120  
  7121  extern(Windows) export BOOL TranslateMDISysAccel(
  7122    HWND hWndClient,
  7123    LPMSG lpMsg);
  7124  
  7125  // #endif /* !NOMSG */
  7126  
  7127  extern(Windows) export UINT ArrangeIconicWindows(
  7128    HWND hWnd);
  7129  
  7130  extern(Windows) export HWND CreateMDIWindowA(
  7131    LPCSTR lpClassName,
  7132    LPCSTR lpWindowName,
  7133    DWORD dwStyle,
  7134    int X,
  7135    int Y,
  7136    int nWidth,
  7137    int nHeight,
  7138    HWND hWndParent,
  7139    HINSTANCE hInstance,
  7140    LPARAM lParam);
  7141  extern(Windows) export HWND CreateMDIWindowW(
  7142    LPCWSTR lpClassName,
  7143    LPCWSTR lpWindowName,
  7144    DWORD dwStyle,
  7145    int X,
  7146    int Y,
  7147    int nWidth,
  7148    int nHeight,
  7149    HWND hWndParent,
  7150    HINSTANCE hInstance,
  7151    LPARAM lParam);
  7152  // #ifdef UNICODE
  7153  // #...
  7154  // #else
  7155  alias CreateMDIWindowA CreateMDIWindow;
  7156  // #endif // !UNICODE
  7157  
  7158  // #if(WINVER >= 0x0400)
  7159  extern(Windows) export WORD TileWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids);
  7160  extern(Windows) export WORD CascadeWindows(HWND hwndParent, UINT wHow, RECT * lpRect, UINT cKids, HWND * lpKids);
  7161  // #endif /* WINVER >= 0x0400 */
  7162  // #endif /* !NOMDI */
  7163  
  7164  // #endif /* !NOUSER */
  7165  
  7166  // #ifndef NOHELP
  7167  
  7168  alias DWORD HELPPOLY;
  7169  struct tagMULTIKEYHELPA {
  7170  // #ifndef _MAC
  7171    DWORD mkSize;
  7172  // #else
  7173  // ...
  7174  // #endif
  7175    CHAR mkKeylist;
  7176    CHAR szKeyphrase[1];
  7177  }
  7178  alias tagMULTIKEYHELPA MULTIKEYHELPA;
  7179  alias tagMULTIKEYHELPA* PMULTIKEYHELPA;
  7180  alias tagMULTIKEYHELPA* LPMULTIKEYHELPA;
  7181  
  7182  struct tagMULTIKEYHELPW {
  7183  // #ifndef _MAC
  7184    DWORD mkSize;
  7185  // #else
  7186  // ...
  7187  // #endif
  7188    WCHAR mkKeylist;
  7189    WCHAR szKeyphrase[1];
  7190  }
  7191  alias tagMULTIKEYHELPW MULTIKEYHELPW;
  7192  alias tagMULTIKEYHELPW* PMULTIKEYHELPW;
  7193  alias tagMULTIKEYHELPW* LPMULTIKEYHELPW;
  7194  
  7195  // #ifdef UNICODE
  7196  // ...
  7197  // #else
  7198  alias MULTIKEYHELPA MULTIKEYHELP;
  7199  alias PMULTIKEYHELPA PMULTIKEYHELP;
  7200  alias LPMULTIKEYHELPA LPMULTIKEYHELP;
  7201  // #endif // UNICODE
  7202  
  7203  struct tagHELPWININFOA {
  7204    int wStructSize;
  7205    int x;
  7206    int y;
  7207    int dx;
  7208    int dy;
  7209    int wMax;
  7210    CHAR rgchMember[2];
  7211  }
  7212  alias tagHELPWININFOA HELPWININFOA;
  7213  alias tagHELPWININFOA* PHELPWININFOA;
  7214  alias tagHELPWININFOA* LPHELPWININFOA;
  7215  
  7216  struct tagHELPWININFOW {
  7217    int wStructSize;
  7218    int x;
  7219    int y;
  7220    int dx;
  7221    int dy;
  7222    int wMax;
  7223    WCHAR rgchMember[2];
  7224  }
  7225  alias tagHELPWININFOW HELPWININFOW;
  7226  alias tagHELPWININFOW* PHELPWININFOW;
  7227  alias tagHELPWININFOW* LPHELPWININFOW;
  7228  
  7229  // #ifdef UNICODE
  7230  // ...
  7231  // #else
  7232  alias HELPWININFOA HELPWININFO;
  7233  alias PHELPWININFOA PHELPWININFO;
  7234  alias LPHELPWININFOA LPHELPWININFO;
  7235  // #endif // UNICODE
  7236  
  7237  enum : uint { HELP_CONTEXT = 0x0001 }
  7238  enum : uint { HELP_QUIT = 0x0002 }
  7239  enum : uint { HELP_INDEX = 0x0003 }
  7240  enum : uint { HELP_CONTENTS = 0x0003 }
  7241  enum : uint { HELP_HELPONHELP = 0x0004 }
  7242  enum : uint { HELP_SETINDEX = 0x0005 }
  7243  enum : uint { HELP_SETCONTENTS = 0x0005 }
  7244  enum : uint { HELP_CONTEXTPOPUP = 0x0008 }
  7245  enum : uint { HELP_FORCEFILE = 0x0009 }
  7246  enum : uint { HELP_KEY = 0x0101 }
  7247  enum : uint { HELP_COMMAND = 0x0102 }
  7248  enum : uint { HELP_PARTIALKEY = 0x0105 }
  7249  enum : uint { HELP_MULTIKEY = 0x0201 }
  7250  enum : uint { HELP_SETWINPOS = 0x0203 }
  7251  // #if(WINVER >= 0x0400)
  7252  enum : uint { HELP_CONTEXTMENU = 0x000a }
  7253  enum : uint { HELP_FINDER = 0x000b }
  7254  enum : uint { HELP_WM_HELP = 0x000c }
  7255  enum : uint { HELP_SETPOPUP_POS = 0x000d }
  7256  
  7257  enum : uint { HELP_TCARD = 0x8000 }
  7258  enum : uint { HELP_TCARD_DATA = 0x0010 }
  7259  enum : uint { HELP_TCARD_OTHER_CALLER = 0x0011 }
  7260  
  7261  enum : uint { IDH_NO_HELP = 28440 }
  7262  enum : uint { IDH_MISSING_CONTEXT = 28441 }
  7263  enum : uint { IDH_GENERIC_HELP_BUTTON = 28442 }
  7264  enum : uint { IDH_OK = 28443 }
  7265  enum : uint { IDH_CANCEL = 28444 }
  7266  enum : uint { IDH_HELP = 28445 }
  7267  
  7268  // #endif /* WINVER >= 0x0400 */
  7269  
  7270  extern(Windows) export BOOL WinHelpA(
  7271    HWND hWndMain,
  7272    LPCSTR lpszHelp,
  7273    UINT uCommand,
  7274    ULONG_PTR dwData);
  7275  extern(Windows) export BOOL WinHelpW(
  7276    HWND hWndMain,
  7277    LPCWSTR lpszHelp,
  7278    UINT uCommand,
  7279    ULONG_PTR dwData);
  7280  // #ifdef UNICODE
  7281  // #...
  7282  // #else
  7283  alias WinHelpA WinHelp;
  7284  // #endif // !UNICODE
  7285  
  7286  // #endif /* !NOHELP */
  7287  
  7288  // #if(WINVER >= 0x0500)
  7289  
  7290  enum : uint { GR_GDIOBJECTS = 0 }
  7291  enum : uint { GR_USEROBJECTS = 1 }
  7292  
  7293  extern(Windows) export DWORD GetGuiResources(
  7294    HANDLE hProcess,
  7295    DWORD uiFlags);
  7296  
  7297  // #endif /* WINVER >= 0x0500 */
  7298  
  7299  // #ifndef NOSYSPARAMSINFO
  7300  
  7301  enum : uint { SPI_GETBEEP = 0x0001 }
  7302  enum : uint { SPI_SETBEEP = 0x0002 }
  7303  enum : uint { SPI_GETMOUSE = 0x0003 }
  7304  enum : uint { SPI_SETMOUSE = 0x0004 }
  7305  enum : uint { SPI_GETBORDER = 0x0005 }
  7306  enum : uint { SPI_SETBORDER = 0x0006 }
  7307  enum : uint { SPI_GETKEYBOARDSPEED = 0x000A }
  7308  enum : uint { SPI_SETKEYBOARDSPEED = 0x000B }
  7309  enum : uint { SPI_LANGDRIVER = 0x000C }
  7310  enum : uint { SPI_ICONHORIZONTALSPACING = 0x000D }
  7311  enum : uint { SPI_GETSCREENSAVETIMEOUT = 0x000E }
  7312  enum : uint { SPI_SETSCREENSAVETIMEOUT = 0x000F }
  7313  enum : uint { SPI_GETSCREENSAVEACTIVE = 0x0010 }
  7314  enum : uint { SPI_SETSCREENSAVEACTIVE = 0x0011 }
  7315  enum : uint { SPI_GETGRIDGRANULARITY = 0x0012 }
  7316  enum : uint { SPI_SETGRIDGRANULARITY = 0x0013 }
  7317  enum : uint { SPI_SETDESKWALLPAPER = 0x0014 }
  7318  enum : uint { SPI_SETDESKPATTERN = 0x0015 }
  7319  enum : uint { SPI_GETKEYBOARDDELAY = 0x0016 }
  7320  enum : uint { SPI_SETKEYBOARDDELAY = 0x0017 }
  7321  enum : uint { SPI_ICONVERTICALSPACING = 0x0018 }
  7322  enum : uint { SPI_GETICONTITLEWRAP = 0x0019 }
  7323  enum : uint { SPI_SETICONTITLEWRAP = 0x001A }
  7324  enum : uint { SPI_GETMENUDROPALIGNMENT = 0x001B }
  7325  enum : uint { SPI_SETMENUDROPALIGNMENT = 0x001C }
  7326  enum : uint { SPI_SETDOUBLECLKWIDTH = 0x001D }
  7327  enum : uint { SPI_SETDOUBLECLKHEIGHT = 0x001E }
  7328  enum : uint { SPI_GETICONTITLELOGFONT = 0x001F }
  7329  enum : uint { SPI_SETDOUBLECLICKTIME = 0x0020 }
  7330  enum : uint { SPI_SETMOUSEBUTTONSWAP = 0x0021 }
  7331  enum : uint { SPI_SETICONTITLELOGFONT = 0x0022 }
  7332  enum : uint { SPI_GETFASTTASKSWITCH = 0x0023 }
  7333  enum : uint { SPI_SETFASTTASKSWITCH = 0x0024 }
  7334  // #if(WINVER >= 0x0400)
  7335  enum : uint { SPI_SETDRAGFULLWINDOWS = 0x0025 }
  7336  enum : uint { SPI_GETDRAGFULLWINDOWS = 0x0026 }
  7337  enum : uint { SPI_GETNONCLIENTMETRICS = 0x0029 }
  7338  enum : uint { SPI_SETNONCLIENTMETRICS = 0x002A }
  7339  enum : uint { SPI_GETMINIMIZEDMETRICS = 0x002B }
  7340  enum : uint { SPI_SETMINIMIZEDMETRICS = 0x002C }
  7341  enum : uint { SPI_GETICONMETRICS = 0x002D }
  7342  enum : uint { SPI_SETICONMETRICS = 0x002E }
  7343  enum : uint { SPI_SETWORKAREA = 0x002F }
  7344  enum : uint { SPI_GETWORKAREA = 0x0030 }
  7345  enum : uint { SPI_SETPENWINDOWS = 0x0031 }
  7346  
  7347  enum : uint { SPI_GETHIGHCONTRAST = 0x0042 }
  7348  enum : uint { SPI_SETHIGHCONTRAST = 0x0043 }
  7349  enum : uint { SPI_GETKEYBOARDPREF = 0x0044 }
  7350  enum : uint { SPI_SETKEYBOARDPREF = 0x0045 }
  7351  enum : uint { SPI_GETSCREENREADER = 0x0046 }
  7352  enum : uint { SPI_SETSCREENREADER = 0x0047 }
  7353  enum : uint { SPI_GETANIMATION = 0x0048 }
  7354  enum : uint { SPI_SETANIMATION = 0x0049 }
  7355  enum : uint { SPI_GETFONTSMOOTHING = 0x004A }
  7356  enum : uint { SPI_SETFONTSMOOTHING = 0x004B }
  7357  enum : uint { SPI_SETDRAGWIDTH = 0x004C }
  7358  enum : uint { SPI_SETDRAGHEIGHT = 0x004D }
  7359  enum : uint { SPI_SETHANDHELD = 0x004E }
  7360  enum : uint { SPI_GETLOWPOWERTIMEOUT = 0x004F }
  7361  enum : uint { SPI_GETPOWEROFFTIMEOUT = 0x0050 }
  7362  enum : uint { SPI_SETLOWPOWERTIMEOUT = 0x0051 }
  7363  enum : uint { SPI_SETPOWEROFFTIMEOUT = 0x0052 }
  7364  enum : uint { SPI_GETLOWPOWERACTIVE = 0x0053 }
  7365  enum : uint { SPI_GETPOWEROFFACTIVE = 0x0054 }
  7366  enum : uint { SPI_SETLOWPOWERACTIVE = 0x0055 }
  7367  enum : uint { SPI_SETPOWEROFFACTIVE = 0x0056 }
  7368  enum : uint { SPI_SETCURSORS = 0x0057 }
  7369  enum : uint { SPI_SETICONS = 0x0058 }
  7370  enum : uint { SPI_GETDEFAULTINPUTLANG = 0x0059 }
  7371  enum : uint { SPI_SETDEFAULTINPUTLANG = 0x005A }
  7372  enum : uint { SPI_SETLANGTOGGLE = 0x005B }
  7373  enum : uint { SPI_GETWINDOWSEXTENSION = 0x005C }
  7374  enum : uint { SPI_SETMOUSETRAILS = 0x005D }
  7375  enum : uint { SPI_GETMOUSETRAILS = 0x005E }
  7376  enum : uint { SPI_SETSCREENSAVERRUNNING = 0x0061 }
  7377  alias SPI_SETSCREENSAVERRUNNING SPI_SCREENSAVERRUNNING;
  7378  // #endif /* WINVER >= 0x0400 */
  7379  enum : uint { SPI_GETFILTERKEYS = 0x0032 }
  7380  enum : uint { SPI_SETFILTERKEYS = 0x0033 }
  7381  enum : uint { SPI_GETTOGGLEKEYS = 0x0034 }
  7382  enum : uint { SPI_SETTOGGLEKEYS = 0x0035 }
  7383  enum : uint { SPI_GETMOUSEKEYS = 0x0036 }
  7384  enum : uint { SPI_SETMOUSEKEYS = 0x0037 }
  7385  enum : uint { SPI_GETSHOWSOUNDS = 0x0038 }
  7386  enum : uint { SPI_SETSHOWSOUNDS = 0x0039 }
  7387  enum : uint { SPI_GETSTICKYKEYS = 0x003A }
  7388  enum : uint { SPI_SETSTICKYKEYS = 0x003B }
  7389  enum : uint { SPI_GETACCESSTIMEOUT = 0x003C }
  7390  enum : uint { SPI_SETACCESSTIMEOUT = 0x003D }
  7391  // #if(WINVER >= 0x0400)
  7392  enum : uint { SPI_GETSERIALKEYS = 0x003E }
  7393  enum : uint { SPI_SETSERIALKEYS = 0x003F }
  7394  // #endif /* WINVER >= 0x0400 */
  7395  enum : uint { SPI_GETSOUNDSENTRY = 0x0040 }
  7396  enum : uint { SPI_SETSOUNDSENTRY = 0x0041 }
  7397  // #if(_WIN32_WINNT >= 0x0400)
  7398  enum : uint { SPI_GETSNAPTODEFBUTTON = 0x005F }
  7399  enum : uint { SPI_SETSNAPTODEFBUTTON = 0x0060 }
  7400  // #endif /* _WIN32_WINNT >= 0x0400 */
  7401  // #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  7402  enum : uint { SPI_GETMOUSEHOVERWIDTH = 0x0062 }
  7403  enum : uint { SPI_SETMOUSEHOVERWIDTH = 0x0063 }
  7404  enum : uint { SPI_GETMOUSEHOVERHEIGHT = 0x0064 }
  7405  enum : uint { SPI_SETMOUSEHOVERHEIGHT = 0x0065 }
  7406  enum : uint { SPI_GETMOUSEHOVERTIME = 0x0066 }
  7407  enum : uint { SPI_SETMOUSEHOVERTIME = 0x0067 }
  7408  enum : uint { SPI_GETWHEELSCROLLLINES = 0x0068 }
  7409  enum : uint { SPI_SETWHEELSCROLLLINES = 0x0069 }
  7410  enum : uint { SPI_GETMENUSHOWDELAY = 0x006A }
  7411  enum : uint { SPI_SETMENUSHOWDELAY = 0x006B }
  7412  
  7413  enum : uint { SPI_GETSHOWIMEUI = 0x006E }
  7414  enum : uint { SPI_SETSHOWIMEUI = 0x006F }
  7415  // #endif
  7416  
  7417  // #if(WINVER >= 0x0500)
  7418  enum : uint { SPI_GETMOUSESPEED = 0x0070 }
  7419  enum : uint { SPI_SETMOUSESPEED = 0x0071 }
  7420  enum : uint { SPI_GETSCREENSAVERRUNNING = 0x0072 }
  7421  enum : uint { SPI_GETDESKWALLPAPER = 0x0073 }
  7422  // #endif /* WINVER >= 0x0500 */
  7423  
  7424  // #if(WINVER >= 0x0500)
  7425  enum : uint { SPI_GETACTIVEWINDOWTRACKING = 0x1000 }
  7426  enum : uint { SPI_SETACTIVEWINDOWTRACKING = 0x1001 }
  7427  enum : uint { SPI_GETMENUANIMATION = 0x1002 }
  7428  enum : uint { SPI_SETMENUANIMATION = 0x1003 }
  7429  enum : uint { SPI_GETCOMBOBOXANIMATION = 0x1004 }
  7430  enum : uint { SPI_SETCOMBOBOXANIMATION = 0x1005 }
  7431  enum : uint { SPI_GETLISTBOXSMOOTHSCROLLING = 0x1006 }
  7432  enum : uint { SPI_SETLISTBOXSMOOTHSCROLLING = 0x1007 }
  7433  enum : uint { SPI_GETGRADIENTCAPTIONS = 0x1008 }
  7434  enum : uint { SPI_SETGRADIENTCAPTIONS = 0x1009 }
  7435  enum : uint { SPI_GETKEYBOARDCUES = 0x100A }
  7436  enum : uint { SPI_SETKEYBOARDCUES = 0x100B }
  7437  alias SPI_GETKEYBOARDCUES SPI_GETMENUUNDERLINES;
  7438  alias SPI_SETKEYBOARDCUES SPI_SETMENUUNDERLINES;
  7439  enum : uint { SPI_GETACTIVEWNDTRKZORDER = 0x100C }
  7440  enum : uint { SPI_SETACTIVEWNDTRKZORDER = 0x100D }
  7441  enum : uint { SPI_GETHOTTRACKING = 0x100E }
  7442  enum : uint { SPI_SETHOTTRACKING = 0x100F }
  7443  enum : uint { SPI_GETMENUFADE = 0x1012 }
  7444  enum : uint { SPI_SETMENUFADE = 0x1013 }
  7445  enum : uint { SPI_GETSELECTIONFADE = 0x1014 }
  7446  enum : uint { SPI_SETSELECTIONFADE = 0x1015 }
  7447  enum : uint { SPI_GETTOOLTIPANIMATION = 0x1016 }
  7448  enum : uint { SPI_SETTOOLTIPANIMATION = 0x1017 }
  7449  enum : uint { SPI_GETTOOLTIPFADE = 0x1018 }
  7450  enum : uint { SPI_SETTOOLTIPFADE = 0x1019 }
  7451  enum : uint { SPI_GETCURSORSHADOW = 0x101A }
  7452  enum : uint { SPI_SETCURSORSHADOW = 0x101B }
  7453  // #if(_WIN32_WINNT >= 0x0501)
  7454  enum : uint { SPI_GETMOUSESONAR = 0x101C }
  7455  enum : uint { SPI_SETMOUSESONAR = 0x101D }
  7456  enum : uint { SPI_GETMOUSECLICKLOCK = 0x101E }
  7457  enum : uint { SPI_SETMOUSECLICKLOCK = 0x101F }
  7458  enum : uint { SPI_GETMOUSEVANISH = 0x1020 }
  7459  enum : uint { SPI_SETMOUSEVANISH = 0x1021 }
  7460  enum : uint { SPI_GETFLATMENU = 0x1022 }
  7461  enum : uint { SPI_SETFLATMENU = 0x1023 }
  7462  enum : uint { SPI_GETDROPSHADOW = 0x1024 }
  7463  enum : uint { SPI_SETDROPSHADOW = 0x1025 }
  7464  // #endif /* _WIN32_WINNT >= 0x0501 */
  7465  
  7466  enum : uint { SPI_GETUIEFFECTS = 0x103E }
  7467  enum : uint { SPI_SETUIEFFECTS = 0x103F }
  7468  
  7469  enum : uint { SPI_GETFOREGROUNDLOCKTIMEOUT = 0x2000 }
  7470  enum : uint { SPI_SETFOREGROUNDLOCKTIMEOUT = 0x2001 }
  7471  enum : uint { SPI_GETACTIVEWNDTRKTIMEOUT = 0x2002 }
  7472  enum : uint { SPI_SETACTIVEWNDTRKTIMEOUT = 0x2003 }
  7473  enum : uint { SPI_GETFOREGROUNDFLASHCOUNT = 0x2004 }
  7474  enum : uint { SPI_SETFOREGROUNDFLASHCOUNT = 0x2005 }
  7475  enum : uint { SPI_GETCARETWIDTH = 0x2006 }
  7476  enum : uint { SPI_SETCARETWIDTH = 0x2007 }
  7477  
  7478  // #if(_WIN32_WINNT >= 0x0501)
  7479  enum : uint { SPI_GETMOUSECLICKLOCKTIME = 0x2008 }
  7480  enum : uint { SPI_SETMOUSECLICKLOCKTIME = 0x2009 }
  7481  enum : uint { SPI_GETFONTSMOOTHINGTYPE = 0x200A }
  7482  enum : uint { SPI_SETFONTSMOOTHINGTYPE = 0x200B }
  7483  
  7484  enum : uint { FE_FONTSMOOTHINGSTANDARD = 0x0001 }
  7485  enum : uint { FE_FONTSMOOTHINGCLEARTYPE = 0x0002 }
  7486  enum : uint { FE_FONTSMOOTHINGDOCKING = 0x8000 }
  7487  
  7488  enum : uint { SPI_GETFONTSMOOTHINGCONTRAST = 0x200C }
  7489  enum : uint { SPI_SETFONTSMOOTHINGCONTRAST = 0x200D }
  7490  
  7491  enum : uint { SPI_GETFOCUSBORDERWIDTH = 0x200E }
  7492  enum : uint { SPI_SETFOCUSBORDERWIDTH = 0x200F }
  7493  enum : uint { SPI_GETFOCUSBORDERHEIGHT = 0x2010 }
  7494  enum : uint { SPI_SETFOCUSBORDERHEIGHT = 0x2011 }
  7495  // #endif /* _WIN32_WINNT >= 0x0501 */
  7496  
  7497  // #endif /* WINVER >= 0x0500 */
  7498  
  7499  enum : uint { SPIF_UPDATEINIFILE = 0x0001 }
  7500  enum : uint { SPIF_SENDWININICHANGE = 0x0002 }
  7501  alias SPIF_SENDWININICHANGE SPIF_SENDCHANGE;
  7502  
  7503  enum { METRICS_USEDEFAULT = -1 }
  7504  // #ifdef _WINGDI_
  7505  // #ifndef NOGDI
  7506  // ...
  7507  // #ifdef UNICODE
  7508  // ...
  7509  // #else
  7510  // ...
  7511  // #endif // UNICODE
  7512  // #endif /* NOGDI */
  7513  // #endif /* _WINGDI_ */
  7514  
  7515  enum : uint { ARW_BOTTOMLEFT = 0x0000 }
  7516  enum : uint { ARW_BOTTOMRIGHT = 0x0001 }
  7517  enum : uint { ARW_TOPLEFT = 0x0002 }
  7518  enum : uint { ARW_TOPRIGHT = 0x0003 }
  7519  enum : uint { ARW_STARTMASK = 0x0003 }
  7520  enum : uint { ARW_STARTRIGHT = 0x0001 }
  7521  enum : uint { ARW_STARTTOP = 0x0002 }
  7522  
  7523  enum : uint { ARW_LEFT = 0x0000 }
  7524  enum : uint { ARW_RIGHT = 0x0000 }
  7525  enum : uint { ARW_UP = 0x0004 }
  7526  enum : uint { ARW_DOWN = 0x0004 }
  7527  enum : uint { ARW_HIDE = 0x0008 }
  7528  
  7529  struct tagMINIMIZEDMETRICS {
  7530    UINT cbSize;
  7531    int iWidth;
  7532    int iHorzGap;
  7533    int iVertGap;
  7534    int iArrange;
  7535  }
  7536  alias tagMINIMIZEDMETRICS MINIMIZEDMETRICS;
  7537  alias tagMINIMIZEDMETRICS* PMINIMIZEDMETRICS;
  7538  alias tagMINIMIZEDMETRICS* LPMINIMIZEDMETRICS;
  7539  
  7540  // #ifdef _WINGDI_
  7541  // #ifndef NOGDI
  7542  // ...
  7543  // #ifdef UNICODE
  7544  // ...
  7545  // #else
  7546  // ...
  7547  // #endif // UNICODE
  7548  // #endif /* NOGDI */
  7549  // #endif /* _WINGDI_ */
  7550  
  7551  struct tagANIMATIONINFO {
  7552    UINT cbSize;
  7553    int iMinAnimate;
  7554  }
  7555  alias tagANIMATIONINFO ANIMATIONINFO;
  7556  alias tagANIMATIONINFO* LPANIMATIONINFO;
  7557  
  7558  struct tagSERIALKEYSA {
  7559    UINT cbSize;
  7560    DWORD dwFlags;
  7561    LPSTR lpszActivePort;
  7562    LPSTR lpszPort;
  7563    UINT iBaudRate;
  7564    UINT iPortState;
  7565    UINT iActive;
  7566  }
  7567  alias tagSERIALKEYSA SERIALKEYSA;
  7568  alias tagSERIALKEYSA* LPSERIALKEYSA;
  7569  
  7570  struct tagSERIALKEYSW {
  7571    UINT cbSize;
  7572    DWORD dwFlags;
  7573    LPWSTR lpszActivePort;
  7574    LPWSTR lpszPort;
  7575    UINT iBaudRate;
  7576    UINT iPortState;
  7577    UINT iActive;
  7578  }
  7579  alias tagSERIALKEYSW SERIALKEYSW;
  7580  alias tagSERIALKEYSW* LPSERIALKEYSW;
  7581  
  7582  // #ifdef UNICODE
  7583  // ...
  7584  // #else
  7585  alias SERIALKEYSA SERIALKEYS;
  7586  alias LPSERIALKEYSA LPSERIALKEYS;
  7587  // #endif // UNICODE
  7588  
  7589  enum : uint { SERKF_SERIALKEYSON = 0x00000001 }
  7590  enum : uint { SERKF_AVAILABLE = 0x00000002 }
  7591  enum : uint { SERKF_INDICATOR = 0x00000004 }
  7592  
  7593  struct tagHIGHCONTRASTA {
  7594    UINT cbSize;
  7595    DWORD dwFlags;
  7596    LPSTR lpszDefaultScheme;
  7597  }
  7598  alias tagHIGHCONTRASTA HIGHCONTRASTA;
  7599  alias tagHIGHCONTRASTA* LPHIGHCONTRASTA;
  7600  
  7601  struct tagHIGHCONTRASTW {
  7602    UINT cbSize;
  7603    DWORD dwFlags;
  7604    LPWSTR lpszDefaultScheme;
  7605  }
  7606  alias tagHIGHCONTRASTW HIGHCONTRASTW;
  7607  alias tagHIGHCONTRASTW* LPHIGHCONTRASTW;
  7608  
  7609  // #ifdef UNICODE
  7610  // ...
  7611  // #else
  7612  alias HIGHCONTRASTA HIGHCONTRAST;
  7613  alias LPHIGHCONTRASTA LPHIGHCONTRAST;
  7614  // #endif // UNICODE
  7615  
  7616  enum : uint { HCF_HIGHCONTRASTON = 0x00000001 }
  7617  enum : uint { HCF_AVAILABLE = 0x00000002 }
  7618  enum : uint { HCF_HOTKEYACTIVE = 0x00000004 }
  7619  enum : uint { HCF_CONFIRMHOTKEY = 0x00000008 }
  7620  enum : uint { HCF_HOTKEYSOUND = 0x00000010 }
  7621  enum : uint { HCF_INDICATOR = 0x00000020 }
  7622  enum : uint { HCF_HOTKEYAVAILABLE = 0x00000040 }
  7623  
  7624  enum : uint { CDS_UPDATEREGISTRY = 0x00000001 }
  7625  enum : uint { CDS_TEST = 0x00000002 }
  7626  enum : uint { CDS_FULLSCREEN = 0x00000004 }
  7627  enum : uint { CDS_GLOBAL = 0x00000008 }
  7628  enum : uint { CDS_SET_PRIMARY = 0x00000010 }
  7629  enum : uint { CDS_VIDEOPARAMETERS = 0x00000020 }
  7630  enum : uint { CDS_RESET = 0x40000000 }
  7631  enum : uint { CDS_NORESET = 0x10000000 }
  7632  
  7633  // #include <tvout.h>
  7634  
  7635  enum : uint { DISP_CHANGE_SUCCESSFUL = 0 }
  7636  enum : uint { DISP_CHANGE_RESTART = 1 }
  7637  enum { DISP_CHANGE_FAILED = -1 }
  7638  enum { DISP_CHANGE_BADMODE = -2 }
  7639  enum { DISP_CHANGE_NOTUPDATED = -3 }
  7640  enum { DISP_CHANGE_BADFLAGS = -4 }
  7641  enum { DISP_CHANGE_BADPARAM = -5 }
  7642  // #if(_WIN32_WINNT >= 0x0501)
  7643  enum { DISP_CHANGE_BADDUALVIEW = -6 }
  7644  // #endif /* _WIN32_WINNT >= 0x0501 */
  7645  
  7646  // #ifdef _WINGDI_
  7647  // #ifndef NOGDI
  7648  
  7649  // ...
  7650  // #ifdef UNICODE
  7651  // #...
  7652  // #else
  7653  // #...
  7654  // #endif // !UNICODE
  7655  
  7656  // ...
  7657  // #ifdef UNICODE
  7658  // #...
  7659  // #else
  7660  // #...
  7661  // #endif // !UNICODE
  7662  
  7663  // #...
  7664  // #...
  7665  
  7666  // ...
  7667  // #ifdef UNICODE
  7668  // #...
  7669  // #else
  7670  // #...
  7671  // #endif // !UNICODE
  7672  
  7673  // #if(WINVER >= 0x0500)
  7674  
  7675  // ...
  7676  // #ifdef UNICODE
  7677  // #...
  7678  // #else
  7679  // #...
  7680  // #endif // !UNICODE
  7681  
  7682  // #...
  7683  
  7684  // ...
  7685  // #ifdef UNICODE
  7686  // #...
  7687  // #else
  7688  // #...
  7689  // #endif // !UNICODE
  7690  // #endif /* WINVER >= 0x0500 */
  7691  
  7692  // #endif /* NOGDI */
  7693  // #endif /* _WINGDI_ */
  7694  
  7695  extern(Windows) export BOOL SystemParametersInfoA(
  7696    UINT uiAction,
  7697    UINT uiParam,
  7698    PVOID pvParam,
  7699    UINT fWinIni);
  7700  extern(Windows) export BOOL SystemParametersInfoW(
  7701    UINT uiAction,
  7702    UINT uiParam,
  7703    PVOID pvParam,
  7704    UINT fWinIni);
  7705  // #ifdef UNICODE
  7706  // #...
  7707  // #else
  7708  alias SystemParametersInfoA SystemParametersInfo;
  7709  // #endif // !UNICODE
  7710  
  7711  // #endif  /* !NOSYSPARAMSINFO  */
  7712  
  7713  struct tagFILTERKEYS {
  7714    UINT cbSize;
  7715    DWORD dwFlags;
  7716    DWORD iWaitMSec;
  7717    DWORD iDelayMSec;
  7718    DWORD iRepeatMSec;
  7719    DWORD iBounceMSec;
  7720  }
  7721  alias tagFILTERKEYS FILTERKEYS;
  7722  alias tagFILTERKEYS* LPFILTERKEYS;
  7723  
  7724  enum : uint { FKF_FILTERKEYSON = 0x00000001 }
  7725  enum : uint { FKF_AVAILABLE = 0x00000002 }
  7726  enum : uint { FKF_HOTKEYACTIVE = 0x00000004 }
  7727  enum : uint { FKF_CONFIRMHOTKEY = 0x00000008 }
  7728  enum : uint { FKF_HOTKEYSOUND = 0x00000010 }
  7729  enum : uint { FKF_INDICATOR = 0x00000020 }
  7730  enum : uint { FKF_CLICKON = 0x00000040 }
  7731  
  7732  struct tagSTICKYKEYS {
  7733    UINT cbSize;
  7734    DWORD dwFlags;
  7735  }
  7736  alias tagSTICKYKEYS STICKYKEYS;
  7737  alias tagSTICKYKEYS* LPSTICKYKEYS;
  7738  
  7739  enum : uint { SKF_STICKYKEYSON = 0x00000001 }
  7740  enum : uint { SKF_AVAILABLE = 0x00000002 }
  7741  enum : uint { SKF_HOTKEYACTIVE = 0x00000004 }
  7742  enum : uint { SKF_CONFIRMHOTKEY = 0x00000008 }
  7743  enum : uint { SKF_HOTKEYSOUND = 0x00000010 }
  7744  enum : uint { SKF_INDICATOR = 0x00000020 }
  7745  enum : uint { SKF_AUDIBLEFEEDBACK = 0x00000040 }
  7746  enum : uint { SKF_TRISTATE = 0x00000080 }
  7747  enum : uint { SKF_TWOKEYSOFF = 0x00000100 }
  7748  // #if(_WIN32_WINNT >= 0x0500)
  7749  enum : uint { SKF_LALTLATCHED = 0x10000000 }
  7750  enum : uint { SKF_LCTLLATCHED = 0x04000000 }
  7751  enum : uint { SKF_LSHIFTLATCHED = 0x01000000 }
  7752  enum : uint { SKF_RALTLATCHED = 0x20000000 }
  7753  enum : uint { SKF_RCTLLATCHED = 0x08000000 }
  7754  enum : uint { SKF_RSHIFTLATCHED = 0x02000000 }
  7755  enum : uint { SKF_LWINLATCHED = 0x40000000 }
  7756  enum : uint { SKF_RWINLATCHED = 0x80000000 }
  7757  enum : uint { SKF_LALTLOCKED = 0x00100000 }
  7758  enum : uint { SKF_LCTLLOCKED = 0x00040000 }
  7759  enum : uint { SKF_LSHIFTLOCKED = 0x00010000 }
  7760  enum : uint { SKF_RALTLOCKED = 0x00200000 }
  7761  enum : uint { SKF_RCTLLOCKED = 0x00080000 }
  7762  enum : uint { SKF_RSHIFTLOCKED = 0x00020000 }
  7763  enum : uint { SKF_LWINLOCKED = 0x00400000 }
  7764  enum : uint { SKF_RWINLOCKED = 0x00800000 }
  7765  // #endif /* _WIN32_WINNT >= 0x0500 */
  7766  
  7767  struct tagMOUSEKEYS {
  7768    UINT cbSize;
  7769    DWORD dwFlags;
  7770    DWORD iMaxSpeed;
  7771    DWORD iTimeToMaxSpeed;
  7772    DWORD iCtrlSpeed;
  7773    DWORD dwReserved1;
  7774    DWORD dwReserved2;
  7775  }
  7776  alias tagMOUSEKEYS MOUSEKEYS;
  7777  alias tagMOUSEKEYS* LPMOUSEKEYS;
  7778  
  7779  enum : uint { MKF_MOUSEKEYSON = 0x00000001 }
  7780  enum : uint { MKF_AVAILABLE = 0x00000002 }
  7781  enum : uint { MKF_HOTKEYACTIVE = 0x00000004 }
  7782  enum : uint { MKF_CONFIRMHOTKEY = 0x00000008 }
  7783  enum : uint { MKF_HOTKEYSOUND = 0x00000010 }
  7784  enum : uint { MKF_INDICATOR = 0x00000020 }
  7785  enum : uint { MKF_MODIFIERS = 0x00000040 }
  7786  enum : uint { MKF_REPLACENUMBERS = 0x00000080 }
  7787  // #if(_WIN32_WINNT >= 0x0500)
  7788  enum : uint { MKF_LEFTBUTTONSEL = 0x10000000 }
  7789  enum : uint { MKF_RIGHTBUTTONSEL = 0x20000000 }
  7790  enum : uint { MKF_LEFTBUTTONDOWN = 0x01000000 }
  7791  enum : uint { MKF_RIGHTBUTTONDOWN = 0x02000000 }
  7792  enum : uint { MKF_MOUSEMODE = 0x80000000 }
  7793  // #endif /* _WIN32_WINNT >= 0x0500 */
  7794  
  7795  struct tagACCESSTIMEOUT {
  7796    UINT cbSize;
  7797    DWORD dwFlags;
  7798    DWORD iTimeOutMSec;
  7799  }
  7800  alias tagACCESSTIMEOUT ACCESSTIMEOUT;
  7801  alias tagACCESSTIMEOUT* LPACCESSTIMEOUT;
  7802  
  7803  enum : uint { ATF_TIMEOUTON = 0x00000001 }
  7804  enum : uint { ATF_ONOFFFEEDBACK = 0x00000002 }
  7805  
  7806  enum : uint { SSGF_NONE = 0 }
  7807  enum : uint { SSGF_DISPLAY = 3 }
  7808  
  7809  enum : uint { SSTF_NONE = 0 }
  7810  enum : uint { SSTF_CHARS = 1 }
  7811  enum : uint { SSTF_BORDER = 2 }
  7812  enum : uint { SSTF_DISPLAY = 3 }
  7813  
  7814  enum : uint { SSWF_NONE = 0 }
  7815  enum : uint { SSWF_TITLE = 1 }
  7816  enum : uint { SSWF_WINDOW = 2 }
  7817  enum : uint { SSWF_DISPLAY = 3 }
  7818  enum : uint { SSWF_CUSTOM = 4 }
  7819  
  7820  struct tagSOUNDSENTRYA {
  7821    UINT cbSize;
  7822    DWORD dwFlags;
  7823    DWORD iFSTextEffect;
  7824    DWORD iFSTextEffectMSec;
  7825    DWORD iFSTextEffectColorBits;
  7826    DWORD iFSGrafEffect;
  7827    DWORD iFSGrafEffectMSec;
  7828    DWORD iFSGrafEffectColor;
  7829    DWORD iWindowsEffect;
  7830    DWORD iWindowsEffectMSec;
  7831    LPSTR lpszWindowsEffectDLL;
  7832    DWORD iWindowsEffectOrdinal;
  7833  }
  7834  alias tagSOUNDSENTRYA SOUNDSENTRYA;
  7835  alias tagSOUNDSENTRYA* LPSOUNDSENTRYA;
  7836  
  7837  struct tagSOUNDSENTRYW {
  7838    UINT cbSize;
  7839    DWORD dwFlags;
  7840    DWORD iFSTextEffect;
  7841    DWORD iFSTextEffectMSec;
  7842    DWORD iFSTextEffectColorBits;
  7843    DWORD iFSGrafEffect;
  7844    DWORD iFSGrafEffectMSec;
  7845    DWORD iFSGrafEffectColor;
  7846    DWORD iWindowsEffect;
  7847    DWORD iWindowsEffectMSec;
  7848    LPWSTR lpszWindowsEffectDLL;
  7849    DWORD iWindowsEffectOrdinal;
  7850  }
  7851  alias tagSOUNDSENTRYW SOUNDSENTRYW;
  7852  alias tagSOUNDSENTRYW* LPSOUNDSENTRYW;
  7853  
  7854  // #ifdef UNICODE
  7855  // ...
  7856  // #else
  7857  alias SOUNDSENTRYA SOUNDSENTRY;
  7858  alias LPSOUNDSENTRYA LPSOUNDSENTRY;
  7859  // #endif // UNICODE
  7860  
  7861  enum : uint { SSF_SOUNDSENTRYON = 0x00000001 }
  7862  enum : uint { SSF_AVAILABLE = 0x00000002 }
  7863  enum : uint { SSF_INDICATOR = 0x00000004 }
  7864  
  7865  struct tagTOGGLEKEYS {
  7866    UINT cbSize;
  7867    DWORD dwFlags;
  7868  }
  7869  alias tagTOGGLEKEYS TOGGLEKEYS;
  7870  alias tagTOGGLEKEYS* LPTOGGLEKEYS;
  7871  
  7872  enum : uint { TKF_TOGGLEKEYSON = 0x00000001 }
  7873  enum : uint { TKF_AVAILABLE = 0x00000002 }
  7874  enum : uint { TKF_HOTKEYACTIVE = 0x00000004 }
  7875  enum : uint { TKF_CONFIRMHOTKEY = 0x00000008 }
  7876  enum : uint { TKF_HOTKEYSOUND = 0x00000010 }
  7877  enum : uint { TKF_INDICATOR = 0x00000020 }
  7878  
  7879  extern(Windows) export VOID SetDebugErrorLevel(
  7880    DWORD dwLevel);
  7881  
  7882  enum : uint { SLE_ERROR = 0x00000001 }
  7883  enum : uint { SLE_MINORERROR = 0x00000002 }
  7884  enum : uint { SLE_WARNING = 0x00000003 }
  7885  
  7886  extern(Windows) export VOID SetLastErrorEx(
  7887    DWORD dwErrCode,
  7888    DWORD dwType);
  7889  
  7890  // #if(WINVER >= 0x0500)
  7891  
  7892  enum : uint { MONITOR_DEFAULTTONULL = 0x00000000 }
  7893  enum : uint { MONITOR_DEFAULTTOPRIMARY = 0x00000001 }
  7894  enum : uint { MONITOR_DEFAULTTONEAREST = 0x00000002 }
  7895  
  7896  extern(Windows) export HMONITOR MonitorFromPoint(
  7897    POINT pt,
  7898    DWORD dwFlags);
  7899  
  7900  extern(Windows) export HMONITOR MonitorFromRect(
  7901    LPCRECT lprc,
  7902    DWORD dwFlags);
  7903  
  7904  extern(Windows) export HMONITOR MonitorFromWindow(HWND hwnd, DWORD dwFlags);
  7905  
  7906  enum : uint { MONITORINFOF_PRIMARY = 0x00000001 }
  7907  
  7908  // #ifndef CCHDEVICENAME
  7909  // #...
  7910  // #endif
  7911  
  7912  struct tagMONITORINFO {
  7913    DWORD cbSize;
  7914    RECT rcMonitor;
  7915    RECT rcWork;
  7916    DWORD dwFlags;
  7917  }
  7918  alias tagMONITORINFO MONITORINFO;
  7919  alias tagMONITORINFO* LPMONITORINFO;
  7920  
  7921  // #ifdef __cplusplus
  7922  struct tagMONITORINFOEXA {
  7923    DWORD   cbSize;
  7924    RECT    rcMonitor;
  7925    RECT    rcWork;
  7926    DWORD   dwFlags;
  7927    CHAR szDevice[CCHDEVICENAME];
  7928  }
  7929  alias tagMONITORINFOEXA MONITORINFOEXA;
  7930  alias tagMONITORINFOEXA* LPMONITORINFOEXA;
  7931  
  7932  struct tagMONITORINFOEXW {
  7933    DWORD   cbSize;
  7934    RECT    rcMonitor;
  7935    RECT    rcWork;
  7936    DWORD   dwFlags;
  7937    WCHAR szDevice[CCHDEVICENAME];
  7938  }
  7939  alias tagMONITORINFOEXW MONITORINFOEXW;
  7940  alias tagMONITORINFOEXW* LPMONITORINFOEXW;
  7941  
  7942  // #ifdef UNICODE
  7943  // ...
  7944  // #else
  7945  alias MONITORINFOEXA MONITORINFOEX;
  7946  alias LPMONITORINFOEXA LPMONITORINFOEX;
  7947  // #endif // UNICODE
  7948  // #else // ndef __cplusplus
  7949  // ...
  7950  // #ifdef UNICODE
  7951  // ...
  7952  // #else
  7953  // ...
  7954  // #endif // UNICODE
  7955  // #endif
  7956  
  7957  extern(Windows) export BOOL GetMonitorInfoA(HMONITOR hMonitor, LPMONITORINFO lpmi);
  7958  extern(Windows) export BOOL GetMonitorInfoW(HMONITOR hMonitor, LPMONITORINFO lpmi);
  7959  // #ifdef UNICODE
  7960  // #...
  7961  // #else
  7962  alias GetMonitorInfoA GetMonitorInfo;
  7963  // #endif // !UNICODE
  7964  
  7965  extern(Windows) alias BOOL function(HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC;
  7966  
  7967  extern(Windows) export BOOL EnumDisplayMonitors(
  7968    HDC hdc,
  7969    LPCRECT lprcClip,
  7970    MONITORENUMPROC lpfnEnum,
  7971    LPARAM dwData);
  7972  
  7973  // #ifndef NOWINABLE
  7974  
  7975  extern(Windows) export VOID NotifyWinEvent(
  7976    DWORD event,
  7977    HWND hwnd,
  7978    LONG idObject,
  7979    LONG idChild);
  7980  
  7981  extern(Windows) alias VOID function( HWINEVENTHOOK hWinEventHook, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD idEventThread, DWORD dwmsEventTime) WINEVENTPROC;
  7982  
  7983  extern(Windows) export HWINEVENTHOOK SetWinEventHook(
  7984    DWORD eventMin,
  7985    DWORD eventMax,
  7986    HMODULE hmodWinEventProc,
  7987    WINEVENTPROC pfnWinEventProc,
  7988    DWORD idProcess,
  7989    DWORD idThread,
  7990    DWORD dwFlags);
  7991  
  7992  // #if(_WIN32_WINNT >= 0x0501)
  7993  extern(Windows) export BOOL IsWinEventHookInstalled(
  7994    DWORD event);
  7995  // #endif /* _WIN32_WINNT >= 0x0501 */
  7996  
  7997  enum : uint { WINEVENT_OUTOFCONTEXT = 0x0000 }
  7998  enum : uint { WINEVENT_SKIPOWNTHREAD = 0x0001 }
  7999  enum : uint { WINEVENT_SKIPOWNPROCESS = 0x0002 }
  8000  enum : uint { WINEVENT_INCONTEXT = 0x0004 }
  8001  
  8002  extern(Windows) export BOOL UnhookWinEvent(
  8003    HWINEVENTHOOK hWinEventHook);
  8004  
  8005  enum : uint { CHILDID_SELF = 0 }
  8006  enum : uint { INDEXID_OBJECT = 0 }
  8007  enum : uint { INDEXID_CONTAINER = 0 }
  8008  
  8009  enum : uint { OBJID_WINDOW = cast(LONG)0x00000000 }
  8010  enum : uint { OBJID_SYSMENU = cast(LONG)0xFFFFFFFF }
  8011  enum : uint { OBJID_TITLEBAR = cast(LONG)0xFFFFFFFE }
  8012  enum : uint { OBJID_MENU = cast(LONG)0xFFFFFFFD }
  8013  enum : uint { OBJID_CLIENT = cast(LONG)0xFFFFFFFC }
  8014  enum : uint { OBJID_VSCROLL = cast(LONG)0xFFFFFFFB }
  8015  enum : uint { OBJID_HSCROLL = cast(LONG)0xFFFFFFFA }
  8016  enum : uint { OBJID_SIZEGRIP = cast(LONG)0xFFFFFFF9 }
  8017  enum : uint { OBJID_CARET = cast(LONG)0xFFFFFFF8 }
  8018  enum : uint { OBJID_CURSOR = cast(LONG)0xFFFFFFF7 }
  8019  enum : uint { OBJID_ALERT = cast(LONG)0xFFFFFFF6 }
  8020  enum : uint { OBJID_SOUND = cast(LONG)0xFFFFFFF5 }
  8021  enum : uint { OBJID_QUERYCLASSNAMEIDX = cast(LONG)0xFFFFFFF4 }
  8022  enum : uint { OBJID_NATIVEOM = cast(LONG)0xFFFFFFF0 }
  8023  
  8024  enum : uint { EVENT_MIN = 0x00000001 }
  8025  enum : uint { EVENT_MAX = 0x7FFFFFFF }
  8026  
  8027  enum : uint { EVENT_SYSTEM_SOUND = 0x0001 }
  8028  
  8029  enum : uint { EVENT_SYSTEM_ALERT = 0x0002 }
  8030  
  8031  enum : uint { EVENT_SYSTEM_FOREGROUND = 0x0003 }
  8032  
  8033  enum : uint { EVENT_SYSTEM_MENUSTART = 0x0004 }
  8034  enum : uint { EVENT_SYSTEM_MENUEND = 0x0005 }
  8035  
  8036  enum : uint { EVENT_SYSTEM_MENUPOPUPSTART = 0x0006 }
  8037  enum : uint { EVENT_SYSTEM_MENUPOPUPEND = 0x0007 }
  8038  
  8039  enum : uint { EVENT_SYSTEM_CAPTURESTART = 0x0008 }
  8040  enum : uint { EVENT_SYSTEM_CAPTUREEND = 0x0009 }
  8041  
  8042  enum : uint { EVENT_SYSTEM_MOVESIZESTART = 0x000A }
  8043  enum : uint { EVENT_SYSTEM_MOVESIZEEND = 0x000B }
  8044  
  8045  enum : uint { EVENT_SYSTEM_CONTEXTHELPSTART = 0x000C }
  8046  enum : uint { EVENT_SYSTEM_CONTEXTHELPEND = 0x000D }
  8047  
  8048  enum : uint { EVENT_SYSTEM_DRAGDROPSTART = 0x000E }
  8049  enum : uint { EVENT_SYSTEM_DRAGDROPEND = 0x000F }
  8050  
  8051  enum : uint { EVENT_SYSTEM_DIALOGSTART = 0x0010 }
  8052  enum : uint { EVENT_SYSTEM_DIALOGEND = 0x0011 }
  8053  
  8054  enum : uint { EVENT_SYSTEM_SCROLLINGSTART = 0x0012 }
  8055  enum : uint { EVENT_SYSTEM_SCROLLINGEND = 0x0013 }
  8056  
  8057  enum : uint { EVENT_SYSTEM_SWITCHSTART = 0x0014 }
  8058  enum : uint { EVENT_SYSTEM_SWITCHEND = 0x0015 }
  8059  
  8060  enum : uint { EVENT_SYSTEM_MINIMIZESTART = 0x0016 }
  8061  enum : uint { EVENT_SYSTEM_MINIMIZEEND = 0x0017 }
  8062  
  8063  // #if(_WIN32_WINNT >= 0x0501)
  8064  enum : uint { EVENT_CONSOLE_CARET = 0x4001 }
  8065  enum : uint { EVENT_CONSOLE_UPDATE_REGION = 0x4002 }
  8066  enum : uint { EVENT_CONSOLE_UPDATE_SIMPLE = 0x4003 }
  8067  enum : uint { EVENT_CONSOLE_UPDATE_SCROLL = 0x4004 }
  8068  enum : uint { EVENT_CONSOLE_LAYOUT = 0x4005 }
  8069  enum : uint { EVENT_CONSOLE_START_APPLICATION = 0x4006 }
  8070  enum : uint { EVENT_CONSOLE_END_APPLICATION = 0x4007 }
  8071  
  8072  enum : uint { CONSOLE_APPLICATION_16BIT = 0x0001 }
  8073  
  8074  enum : uint { CONSOLE_CARET_SELECTION = 0x0001 }
  8075  enum : uint { CONSOLE_CARET_VISIBLE = 0x0002 }
  8076  // #endif /* _WIN32_WINNT >= 0x0501 */
  8077  
  8078  enum : uint { EVENT_OBJECT_CREATE = 0x8000 }
  8079  enum : uint { EVENT_OBJECT_DESTROY = 0x8001 }
  8080  enum : uint { EVENT_OBJECT_SHOW = 0x8002 }
  8081  enum : uint { EVENT_OBJECT_HIDE = 0x8003 }
  8082  enum : uint { EVENT_OBJECT_REORDER = 0x8004 }
  8083  
  8084  enum : uint { EVENT_OBJECT_FOCUS = 0x8005 }
  8085  enum : uint { EVENT_OBJECT_SELECTION = 0x8006 }
  8086  enum : uint { EVENT_OBJECT_SELECTIONADD = 0x8007 }
  8087  enum : uint { EVENT_OBJECT_SELECTIONREMOVE = 0x8008 }
  8088  enum : uint { EVENT_OBJECT_SELECTIONWITHIN = 0x8009 }
  8089  
  8090  enum : uint { EVENT_OBJECT_STATECHANGE = 0x800A }
  8091  
  8092  enum : uint { EVENT_OBJECT_LOCATIONCHANGE = 0x800B }
  8093  
  8094  enum : uint { EVENT_OBJECT_NAMECHANGE = 0x800C }
  8095  enum : uint { EVENT_OBJECT_DESCRIPTIONCHANGE = 0x800D }
  8096  enum : uint { EVENT_OBJECT_VALUECHANGE = 0x800E }
  8097  enum : uint { EVENT_OBJECT_PARENTCHANGE = 0x800F }
  8098  enum : uint { EVENT_OBJECT_HELPCHANGE = 0x8010 }
  8099  enum : uint { EVENT_OBJECT_DEFACTIONCHANGE = 0x8011 }
  8100  enum : uint { EVENT_OBJECT_ACCELERATORCHANGE = 0x8012 }
  8101  
  8102  enum : uint { SOUND_SYSTEM_STARTUP = 1 }
  8103  enum : uint { SOUND_SYSTEM_SHUTDOWN = 2 }
  8104  enum : uint { SOUND_SYSTEM_BEEP = 3 }
  8105  enum : uint { SOUND_SYSTEM_ERROR = 4 }
  8106  enum : uint { SOUND_SYSTEM_QUESTION = 5 }
  8107  enum : uint { SOUND_SYSTEM_WARNING = 6 }
  8108  enum : uint { SOUND_SYSTEM_INFORMATION = 7 }
  8109  enum : uint { SOUND_SYSTEM_MAXIMIZE = 8 }
  8110  enum : uint { SOUND_SYSTEM_MINIMIZE = 9 }
  8111  enum : uint { SOUND_SYSTEM_RESTOREUP = 10 }
  8112  enum : uint { SOUND_SYSTEM_RESTOREDOWN = 11 }
  8113  enum : uint { SOUND_SYSTEM_APPSTART = 12 }
  8114  enum : uint { SOUND_SYSTEM_FAULT = 13 }
  8115  enum : uint { SOUND_SYSTEM_APPEND = 14 }
  8116  enum : uint { SOUND_SYSTEM_MENUCOMMAND = 15 }
  8117  enum : uint { SOUND_SYSTEM_MENUPOPUP = 16 }
  8118  enum : uint { CSOUND_SYSTEM = 16 }
  8119  
  8120  enum : uint { ALERT_SYSTEM_INFORMATIONAL = 1 }
  8121  enum : uint { ALERT_SYSTEM_WARNING = 2 }
  8122  enum : uint { ALERT_SYSTEM_ERROR = 3 }
  8123  enum : uint { ALERT_SYSTEM_QUERY = 4 }
  8124  enum : uint { ALERT_SYSTEM_CRITICAL = 5 }
  8125  enum : uint { CALERT_SYSTEM = 6 }
  8126  
  8127  struct tagGUITHREADINFO {
  8128    DWORD cbSize;
  8129    DWORD flags;
  8130    HWND hwndActive;
  8131    HWND hwndFocus;
  8132    HWND hwndCapture;
  8133    HWND hwndMenuOwner;
  8134    HWND hwndMoveSize;
  8135    HWND hwndCaret;
  8136    RECT rcCaret;
  8137  }
  8138  alias tagGUITHREADINFO GUITHREADINFO;
  8139  alias tagGUITHREADINFO* PGUITHREADINFO;
  8140  alias tagGUITHREADINFO* LPGUITHREADINFO;
  8141  
  8142  enum : uint { GUI_CARETBLINKING = 0x00000001 }
  8143  enum : uint { GUI_INMOVESIZE = 0x00000002 }
  8144  enum : uint { GUI_INMENUMODE = 0x00000004 }
  8145  enum : uint { GUI_SYSTEMMENUMODE = 0x00000008 }
  8146  enum : uint { GUI_POPUPMENUMODE = 0x00000010 }
  8147  // #if(_WIN32_WINNT >= 0x0501)
  8148  enum : uint { GUI_16BITTASK = 0x00000020 }
  8149  // #endif /* _WIN32_WINNT >= 0x0501 */
  8150  
  8151  extern(Windows) export BOOL GetGUIThreadInfo(
  8152    DWORD idThread,
  8153    PGUITHREADINFO pgui);
  8154  
  8155  extern(Windows) export UINT GetWindowModuleFileNameA(
  8156    HWND hwnd,
  8157    LPSTR pszFileName,
  8158    UINT cchFileNameMax);
  8159  extern(Windows) export UINT GetWindowModuleFileNameW(
  8160    HWND hwnd,
  8161    LPWSTR pszFileName,
  8162    UINT cchFileNameMax);
  8163  // #ifdef UNICODE
  8164  // #...
  8165  // #else
  8166  alias GetWindowModuleFileNameA GetWindowModuleFileName;
  8167  // #endif // !UNICODE
  8168  
  8169  // #ifndef NO_STATE_FLAGS
  8170  enum : uint { STATE_SYSTEM_UNAVAILABLE = 0x00000001 }
  8171  enum : uint { STATE_SYSTEM_SELECTED = 0x00000002 }
  8172  enum : uint { STATE_SYSTEM_FOCUSED = 0x00000004 }
  8173  enum : uint { STATE_SYSTEM_PRESSED = 0x00000008 }
  8174  enum : uint { STATE_SYSTEM_CHECKED = 0x00000010 }
  8175  enum : uint { STATE_SYSTEM_MIXED = 0x00000020 }
  8176  alias STATE_SYSTEM_MIXED STATE_SYSTEM_INDETERMINATE;
  8177  enum : uint { STATE_SYSTEM_READONLY = 0x00000040 }
  8178  enum : uint { STATE_SYSTEM_HOTTRACKED = 0x00000080 }
  8179  enum : uint { STATE_SYSTEM_DEFAULT = 0x00000100 }
  8180  enum : uint { STATE_SYSTEM_EXPANDED = 0x00000200 }
  8181  enum : uint { STATE_SYSTEM_COLLAPSED = 0x00000400 }
  8182  enum : uint { STATE_SYSTEM_BUSY = 0x00000800 }
  8183  enum : uint { STATE_SYSTEM_FLOATING = 0x00001000 }
  8184  enum : uint { STATE_SYSTEM_MARQUEED = 0x00002000 }
  8185  enum : uint { STATE_SYSTEM_ANIMATED = 0x00004000 }
  8186  enum : uint { STATE_SYSTEM_INVISIBLE = 0x00008000 }
  8187  enum : uint { STATE_SYSTEM_OFFSCREEN = 0x00010000 }
  8188  enum : uint { STATE_SYSTEM_SIZEABLE = 0x00020000 }
  8189  enum : uint { STATE_SYSTEM_MOVEABLE = 0x00040000 }
  8190  enum : uint { STATE_SYSTEM_SELFVOICING = 0x00080000 }
  8191  enum : uint { STATE_SYSTEM_FOCUSABLE = 0x00100000 }
  8192  enum : uint { STATE_SYSTEM_SELECTABLE = 0x00200000 }
  8193  enum : uint { STATE_SYSTEM_LINKED = 0x00400000 }
  8194  enum : uint { STATE_SYSTEM_TRAVERSED = 0x00800000 }
  8195  enum : uint { STATE_SYSTEM_MULTISELECTABLE = 0x01000000 }
  8196  enum : uint { STATE_SYSTEM_EXTSELECTABLE = 0x02000000 }
  8197  enum : uint { STATE_SYSTEM_ALERT_LOW = 0x04000000 }
  8198  enum : uint { STATE_SYSTEM_ALERT_MEDIUM = 0x08000000 }
  8199  enum : uint { STATE_SYSTEM_ALERT_HIGH = 0x10000000 }
  8200  enum : uint { STATE_SYSTEM_PROTECTED = 0x20000000 }
  8201  enum : uint { STATE_SYSTEM_VALID = 0x3FFFFFFF }
  8202  // #endif
  8203  
  8204  enum : uint { CCHILDREN_TITLEBAR = 5 }
  8205  enum : uint { CCHILDREN_SCROLLBAR = 5 }
  8206  
  8207  struct tagCURSORINFO {
  8208    DWORD cbSize;
  8209    DWORD flags;
  8210    HCURSOR hCursor;
  8211    POINT ptScreenPos;
  8212  }
  8213  alias tagCURSORINFO CURSORINFO;
  8214  alias tagCURSORINFO* PCURSORINFO;
  8215  alias tagCURSORINFO* LPCURSORINFO;
  8216  
  8217  enum : uint { CURSOR_SHOWING = 0x00000001 }
  8218  
  8219  extern(Windows) export BOOL GetCursorInfo(
  8220    PCURSORINFO pci
  8221  );
  8222  
  8223  struct tagWINDOWINFO {
  8224    DWORD cbSize;
  8225    RECT rcWindow;
  8226    RECT rcClient;
  8227    DWORD dwStyle;
  8228    DWORD dwExStyle;
  8229    DWORD dwWindowStatus;
  8230    UINT cxWindowBorders;
  8231    UINT cyWindowBorders;
  8232    ATOM atomWindowType;
  8233    WORD wCreatorVersion;
  8234  }
  8235  alias tagWINDOWINFO WINDOWINFO;
  8236  alias tagWINDOWINFO* PWINDOWINFO;
  8237  alias tagWINDOWINFO* LPWINDOWINFO;
  8238  
  8239  enum : uint { WS_ACTIVECAPTION = 0x0001 }
  8240  
  8241  extern(Windows) export BOOL GetWindowInfo(
  8242    HWND hwnd,
  8243    PWINDOWINFO pwi
  8244  );
  8245  
  8246  struct tagTITLEBARINFO {
  8247    DWORD cbSize;
  8248    RECT rcTitleBar;
  8249    DWORD rgstate[CCHILDREN_TITLEBAR+1];
  8250  }
  8251  alias tagTITLEBARINFO TITLEBARINFO;
  8252  alias tagTITLEBARINFO* PTITLEBARINFO;
  8253  alias tagTITLEBARINFO* LPTITLEBARINFO;
  8254  
  8255  extern(Windows) export BOOL GetTitleBarInfo(
  8256    HWND hwnd,
  8257    PTITLEBARINFO pti
  8258  );
  8259  
  8260  struct tagMENUBARINFO {
  8261    DWORD cbSize;
  8262    RECT rcBar;
  8263    HMENU hMenu;
  8264    HWND hwndMenu;
  8265  // BOOL  fBarFocused:1;
  8266  // BOOL  fFocused:1;
  8267  }
  8268  alias tagMENUBARINFO MENUBARINFO;
  8269  alias tagMENUBARINFO* PMENUBARINFO;
  8270  alias tagMENUBARINFO* LPMENUBARINFO;
  8271  
  8272  extern(Windows) export BOOL GetMenuBarInfo(
  8273    HWND hwnd,
  8274    LONG idObject,
  8275    LONG idItem,
  8276    PMENUBARINFO pmbi
  8277  );
  8278  
  8279  struct tagSCROLLBARINFO {
  8280    DWORD cbSize;
  8281    RECT rcScrollBar;
  8282    int dxyLineButton;
  8283    int xyThumbTop;
  8284    int xyThumbBottom;
  8285    int reserved;
  8286    DWORD rgstate[CCHILDREN_SCROLLBAR+1];
  8287  }
  8288  alias tagSCROLLBARINFO SCROLLBARINFO;
  8289  alias tagSCROLLBARINFO* PSCROLLBARINFO;
  8290  alias tagSCROLLBARINFO* LPSCROLLBARINFO;
  8291  
  8292  extern(Windows) export BOOL GetScrollBarInfo(
  8293    HWND hwnd,
  8294    LONG idObject,
  8295    PSCROLLBARINFO psbi
  8296  );
  8297  
  8298  struct tagCOMBOBOXINFO {
  8299    DWORD cbSize;
  8300    RECT rcItem;
  8301    RECT rcButton;
  8302    DWORD stateButton;
  8303    HWND hwndCombo;
  8304    HWND hwndItem;
  8305    HWND hwndList;
  8306  }
  8307  alias tagCOMBOBOXINFO COMBOBOXINFO;
  8308  alias tagCOMBOBOXINFO* PCOMBOBOXINFO;
  8309  alias tagCOMBOBOXINFO* LPCOMBOBOXINFO;
  8310  
  8311  extern(Windows) export BOOL GetComboBoxInfo(
  8312    HWND hwndCombo,
  8313    PCOMBOBOXINFO pcbi
  8314  );
  8315  
  8316  enum : uint { GA_PARENT = 1 }
  8317  enum : uint { GA_ROOT = 2 }
  8318  enum : uint { GA_ROOTOWNER = 3 }
  8319  
  8320  extern(Windows) export HWND GetAncestor(
  8321    HWND hwnd,
  8322    UINT gaFlags
  8323  );
  8324  
  8325  extern(Windows) export HWND RealChildWindowFromPoint(
  8326    HWND hwndParent,
  8327    POINT ptParentClientCoords
  8328  );
  8329  
  8330  extern(Windows) export UINT RealGetWindowClassA(
  8331    HWND hwnd,
  8332    LPSTR pszType,
  8333    UINT cchType
  8334  );
  8335  
  8336  extern(Windows) export UINT RealGetWindowClassW(
  8337    HWND hwnd,
  8338    LPWSTR pszType,
  8339    UINT cchType
  8340  );
  8341  // #ifdef UNICODE
  8342  // #...
  8343  // #else
  8344  alias RealGetWindowClassA RealGetWindowClass;
  8345  // #endif // !UNICODE
  8346  
  8347  struct tagALTTABINFO {
  8348    DWORD cbSize;
  8349    int cItems;
  8350    int cColumns;
  8351    int cRows;
  8352    int iColFocus;
  8353    int iRowFocus;
  8354    int cxItem;
  8355    int cyItem;
  8356    POINT ptStart;
  8357  }
  8358  alias tagALTTABINFO ALTTABINFO;
  8359  alias tagALTTABINFO* PALTTABINFO;
  8360  alias tagALTTABINFO* LPALTTABINFO;
  8361  
  8362  extern(Windows) export BOOL GetAltTabInfoA(
  8363    HWND hwnd,
  8364    int iItem,
  8365    PALTTABINFO pati,
  8366    LPSTR pszItemText,
  8367    UINT cchItemText
  8368  );
  8369  extern(Windows) export BOOL GetAltTabInfoW(
  8370    HWND hwnd,
  8371    int iItem,
  8372    PALTTABINFO pati,
  8373    LPWSTR pszItemText,
  8374    UINT cchItemText
  8375  );
  8376  // #ifdef UNICODE
  8377  // #...
  8378  // #else
  8379  alias GetAltTabInfoA GetAltTabInfo;
  8380  // #endif // !UNICODE
  8381  
  8382  extern(Windows) export DWORD GetListBoxInfo(
  8383    HWND hwnd
  8384  );
  8385  
  8386  // #endif /* NOWINABLE */
  8387  // #endif /* WINVER >= 0x0500 */
  8388  
  8389  // #if(_WIN32_WINNT >= 0x0500)
  8390  extern(Windows) export BOOL LockWorkStation();
  8391  // #endif /* _WIN32_WINNT >= 0x0500 */
  8392  
  8393  // #if(_WIN32_WINNT >= 0x0500)
  8394  
  8395  extern(Windows) export BOOL UserHandleGrantAccess(
  8396    HANDLE hUserHandle,
  8397    HANDLE hJob,
  8398    BOOL bGrant);
  8399  
  8400  // #endif /* _WIN32_WINNT >= 0x0500 */
  8401  
  8402  // #if(_WIN32_WINNT >= 0x0501)
  8403  
  8404  alias void* HRAWINPUT;
  8405  
  8406  // #define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
  8407  
  8408  enum : uint { RIM_INPUT = 0 }
  8409  
  8410  enum : uint { RIM_INPUTSINK = 1 }
  8411  
  8412  struct tagRAWINPUTHEADER {
  8413    DWORD dwType;
  8414    DWORD dwSize;
  8415    HANDLE hDevice;
  8416    WPARAM wParam;
  8417  }
  8418  alias tagRAWINPUTHEADER RAWINPUTHEADER;
  8419  alias tagRAWINPUTHEADER* PRAWINPUTHEADER;
  8420  alias tagRAWINPUTHEADER* LPRAWINPUTHEADER;
  8421  
  8422  enum : uint { RIM_TYPEMOUSE = 0 }
  8423  enum : uint { RIM_TYPEKEYBOARD = 1 }
  8424  enum : uint { RIM_TYPEHID = 2 }
  8425  
  8426  struct tagRAWMOUSE {
  8427  
  8428    USHORT usFlags;
  8429  union {
  8430    ULONG ulButtons;
  8431  struct {
  8432    USHORT usButtonFlags;
  8433    USHORT usButtonData;
  8434  }
  8435  
  8436  }
  8437  
  8438    ULONG ulRawButtons;
  8439    LONG lLastX;
  8440    LONG lLastY;
  8441    ULONG ulExtraInformation;
  8442  }
  8443  alias tagRAWMOUSE RAWMOUSE;
  8444  alias tagRAWMOUSE* PRAWMOUSE;
  8445  alias tagRAWMOUSE* LPRAWMOUSE;
  8446  
  8447  enum : uint { RI_MOUSE_LEFT_BUTTON_DOWN = 0x0001 }
  8448  enum : uint { RI_MOUSE_LEFT_BUTTON_UP = 0x0002 }
  8449  enum : uint { RI_MOUSE_RIGHT_BUTTON_DOWN = 0x0004 }
  8450  enum : uint { RI_MOUSE_RIGHT_BUTTON_UP = 0x0008 }
  8451  enum : uint { RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010 }
  8452  enum : uint { RI_MOUSE_MIDDLE_BUTTON_UP = 0x0020 }
  8453  
  8454  alias RI_MOUSE_LEFT_BUTTON_DOWN RI_MOUSE_BUTTON_1_DOWN;
  8455  alias RI_MOUSE_LEFT_BUTTON_UP RI_MOUSE_BUTTON_1_UP;
  8456  alias RI_MOUSE_RIGHT_BUTTON_DOWN RI_MOUSE_BUTTON_2_DOWN;
  8457  alias RI_MOUSE_RIGHT_BUTTON_UP RI_MOUSE_BUTTON_2_UP;
  8458  alias RI_MOUSE_MIDDLE_BUTTON_DOWN RI_MOUSE_BUTTON_3_DOWN;
  8459  alias RI_MOUSE_MIDDLE_BUTTON_UP RI_MOUSE_BUTTON_3_UP;
  8460  
  8461  enum : uint { RI_MOUSE_BUTTON_4_DOWN = 0x0040 }
  8462  enum : uint { RI_MOUSE_BUTTON_4_UP = 0x0080 }
  8463  enum : uint { RI_MOUSE_BUTTON_5_DOWN = 0x0100 }
  8464  enum : uint { RI_MOUSE_BUTTON_5_UP = 0x0200 }
  8465  
  8466  enum : uint { RI_MOUSE_WHEEL = 0x0400 }
  8467  
  8468  enum : uint { MOUSE_MOVE_RELATIVE = 0 }
  8469  enum : uint { MOUSE_MOVE_ABSOLUTE = 1 }
  8470  enum : uint { MOUSE_VIRTUAL_DESKTOP = 0x02 }
  8471  enum : uint { MOUSE_ATTRIBUTES_CHANGED = 0x04 }
  8472  
  8473  struct tagRAWKEYBOARD {
  8474  
  8475    USHORT MakeCode;
  8476    USHORT Flags;
  8477    USHORT Reserved;
  8478    USHORT VKey;
  8479    UINT Message;
  8480    ULONG ExtraInformation;
  8481  }
  8482  alias tagRAWKEYBOARD RAWKEYBOARD;
  8483  alias tagRAWKEYBOARD* PRAWKEYBOARD;
  8484  alias tagRAWKEYBOARD* LPRAWKEYBOARD;
  8485  
  8486  enum : uint { KEYBOARD_OVERRUN_MAKE_CODE = 0xFF }
  8487  
  8488  enum : uint { RI_KEY_MAKE = 0 }
  8489  enum : uint { RI_KEY_BREAK = 1 }
  8490  enum : uint { RI_KEY_E0 = 2 }
  8491  enum : uint { RI_KEY_E1 = 4 }
  8492  enum : uint { RI_KEY_TERMSRV_SET_LED = 8 }
  8493  enum : uint { RI_KEY_TERMSRV_SHADOW = 0x10 }
  8494  
  8495  struct tagRAWHID {
  8496    DWORD dwSizeHid;
  8497    DWORD dwCount;
  8498    BYTE bRawData[1];
  8499  }
  8500  alias tagRAWHID RAWHID;
  8501  alias tagRAWHID* PRAWHID;
  8502  alias tagRAWHID* LPRAWHID;
  8503  
  8504  struct tagRAWINPUT {
  8505    RAWINPUTHEADER header;
  8506  union {
  8507    RAWMOUSE mouse;
  8508    RAWKEYBOARD keyboard;
  8509    RAWHID hid;
  8510  }
  8511  
  8512  }
  8513  alias tagRAWINPUT RAWINPUT;
  8514  alias tagRAWINPUT* PRAWINPUT;
  8515  alias tagRAWINPUT* LPRAWINPUT;
  8516  
  8517  // #ifdef _WIN64
  8518  // #...
  8519  // #else   // _WIN64
  8520  uint RAWINPUT_ALIGN(uint x){ return ((x + DWORD.sizeof - 1) & ~(DWORD.sizeof - 1)); }
  8521  // #endif  // _WIN64
  8522  
  8523  // #define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize)))
  8524  
  8525  enum : uint { RID_INPUT = 0x10000003 }
  8526  enum : uint { RID_HEADER = 0x10000005 }
  8527  
  8528  extern(Windows) export UINT GetRawInputData(
  8529    HRAWINPUT hRawInput,
  8530    UINT uiCommand,
  8531    LPVOID pData,
  8532    PUINT pcbSize,
  8533    UINT cbSizeHeader);
  8534  
  8535  enum : uint { RIDI_PREPARSEDDATA = 0x20000005 }
  8536  enum : uint { RIDI_DEVICENAME = 0x20000007 }
  8537  enum : uint { RIDI_DEVICEINFO = 0x2000000b }
  8538  
  8539  struct tagRID_DEVICE_INFO_MOUSE {
  8540    DWORD dwId;
  8541    DWORD dwNumberOfButtons;
  8542    DWORD dwSampleRate;
  8543  }
  8544  alias tagRID_DEVICE_INFO_MOUSE RID_DEVICE_INFO_MOUSE;
  8545  alias tagRID_DEVICE_INFO_MOUSE* PRID_DEVICE_INFO_MOUSE;
  8546  
  8547  struct tagRID_DEVICE_INFO_KEYBOARD {
  8548    DWORD dwType;
  8549    DWORD dwSubType;
  8550    DWORD dwKeyboardMode;
  8551    DWORD dwNumberOfFunctionKeys;
  8552    DWORD dwNumberOfIndicators;
  8553    DWORD dwNumberOfKeysTotal;
  8554  }
  8555  alias tagRID_DEVICE_INFO_KEYBOARD RID_DEVICE_INFO_KEYBOARD;
  8556  alias tagRID_DEVICE_INFO_KEYBOARD* PRID_DEVICE_INFO_KEYBOARD;
  8557  
  8558  struct tagRID_DEVICE_INFO_HID {
  8559    DWORD dwVendorId;
  8560    DWORD dwProductId;
  8561    DWORD dwVersionNumber;
  8562    USHORT usUsagePage;
  8563    USHORT usUsage;
  8564  }
  8565  alias tagRID_DEVICE_INFO_HID RID_DEVICE_INFO_HID;
  8566  alias tagRID_DEVICE_INFO_HID* PRID_DEVICE_INFO_HID;
  8567  
  8568  struct tagRID_DEVICE_INFO {
  8569    DWORD cbSize;
  8570    DWORD dwType;
  8571  union {
  8572    RID_DEVICE_INFO_MOUSE mouse;
  8573    RID_DEVICE_INFO_KEYBOARD keyboard;
  8574    RID_DEVICE_INFO_HID hid;
  8575  }
  8576  
  8577  }
  8578  alias tagRID_DEVICE_INFO RID_DEVICE_INFO;
  8579  alias tagRID_DEVICE_INFO* PRID_DEVICE_INFO;
  8580  alias tagRID_DEVICE_INFO* LPRID_DEVICE_INFO;
  8581  
  8582  extern(Windows) export UINT GetRawInputDeviceInfoA(
  8583    HANDLE hDevice,
  8584    UINT uiCommand,
  8585    LPVOID pData,
  8586    PUINT pcbSize);
  8587  extern(Windows) export UINT GetRawInputDeviceInfoW(
  8588    HANDLE hDevice,
  8589    UINT uiCommand,
  8590    LPVOID pData,
  8591    PUINT pcbSize);
  8592  // #ifdef UNICODE
  8593  // #...
  8594  // #else
  8595  alias GetRawInputDeviceInfoA GetRawInputDeviceInfo;
  8596  // #endif // !UNICODE
  8597  
  8598  extern(Windows) export UINT GetRawInputBuffer(
  8599    PRAWINPUT pData,
  8600    PUINT pcbSize,
  8601    UINT cbSizeHeader);
  8602  
  8603  struct tagRAWINPUTDEVICE {
  8604    USHORT usUsagePage;
  8605    USHORT usUsage;
  8606    DWORD dwFlags;
  8607    HWND hwndTarget;
  8608  }
  8609  alias tagRAWINPUTDEVICE RAWINPUTDEVICE;
  8610  alias tagRAWINPUTDEVICE* PRAWINPUTDEVICE;
  8611  alias tagRAWINPUTDEVICE* LPRAWINPUTDEVICE;
  8612  
  8613  alias RAWINPUTDEVICE* PCRAWINPUTDEVICE;
  8614  
  8615  enum : uint { RIDEV_REMOVE = 0x00000001 }
  8616  enum : uint { RIDEV_EXCLUDE = 0x00000010 }
  8617  enum : uint { RIDEV_PAGEONLY = 0x00000020 }
  8618  enum : uint { RIDEV_NOLEGACY = 0x00000030 }
  8619  enum : uint { RIDEV_CAPTUREMOUSE = 0x00000200 }
  8620  enum : uint { RIDEV_NOHOTKEYS = 0x00000200 }
  8621  enum : uint { RIDEV_EXMODEMASK = 0x000000F0 }
  8622  
  8623  // #define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK)
  8624  
  8625  extern(Windows) export BOOL RegisterRawInputDevices(
  8626    PCRAWINPUTDEVICE pRawInputDevices,
  8627    UINT uiNumDevices,
  8628    UINT cbSize);
  8629  
  8630  extern(Windows) export UINT GetRegisteredRawInputDevices(
  8631    PRAWINPUTDEVICE pRawInputDevices,
  8632    PUINT puiNumDevices,
  8633    UINT cbSize);
  8634  
  8635  struct tagRAWINPUTDEVICELIST {
  8636    HANDLE hDevice;
  8637    DWORD dwType;
  8638  }
  8639  alias tagRAWINPUTDEVICELIST RAWINPUTDEVICELIST;
  8640  alias tagRAWINPUTDEVICELIST* PRAWINPUTDEVICELIST;
  8641  
  8642  extern(Windows) export UINT GetRawInputDeviceList(
  8643    PRAWINPUTDEVICELIST pRawInputDeviceList,
  8644    PUINT puiNumDevices,
  8645    UINT cbSize);
  8646  
  8647  extern(Windows) export LRESULT DefRawInputProc(
  8648    PRAWINPUT* paRawInput,
  8649    INT nInput,
  8650    UINT cbSizeHeader);
  8651  
  8652  // #endif /* _WIN32_WINNT >= 0x0501 */
  8653  
  8654  // #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
  8655  // #if ISOLATION_AWARE_ENABLED
  8656  // #...
  8657  // #endif /* ISOLATION_AWARE_ENABLED */
  8658  // #endif /* RC */
  8659  
  8660  // #ifdef __cplusplus
  8661  // }
  8662  // #endif  /* __cplusplus */
  8663  
  8664  // #endif /* !_WINUSER_ */
  8665