diff win32/winuser.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/winuser.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,4766 @@
+/***********************************************************************\
+*                               winuser.d                               *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.winuser;
+pragma(lib, "user32.lib");
+
+// Conversion Notes:
+// The following macros were for win16 only, and are not included in this file:
+//#define EnumTaskWindows(h, f, p) EnumThreadWindows((DWORD)h, f, p)
+//#define PostAppMessageA(t, m, w, l) PostThreadMessageA((DWORD)t, m, w, l)
+//#define PostAppMessageW(t, m, w, l) PostThreadMessageW((DWORD)t, m, w, l)
+//#define GetSysModalWindow() (NULL)
+//#define SetSysModalWindow(h) (NULL)
+//#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
+//#define DefHookProc(c, p, lp, h) CallNextHookEx((HHOOK)*h, c, p, lp)
+
+private import win32.w32api, win32.winbase, win32.wingdi;
+private import win32.windef; // for HMONITOR
+
+// FIXME: clean up Windows version support
+
+template MAKEINTATOM_T(int i) {
+	const LPTSTR MAKEINTATOM_T = cast(LPTSTR) i;
+}
+
+const WC_DIALOG = MAKEINTATOM_T!(0x8002);
+
+const FVIRTKEY  = 1;
+const FNOINVERT = 2;
+const FSHIFT    = 4;
+const FCONTROL  = 8;
+const FALT      = 16;
+
+const ATF_TIMEOUTON     = 1;
+const ATF_ONOFFFEEDBACK = 2;
+const ATF_AVAILABLE     = 4; // May be obsolete. Not in recent MS docs.
+
+const WH_MIN             = -1;
+const WH_MSGFILTER       =  -1;
+const WH_JOURNALRECORD   = 0;
+const WH_JOURNALPLAYBACK = 1;
+const WH_KEYBOARD        = 2;
+const WH_GETMESSAGE      = 3;
+const WH_CALLWNDPROC     = 4;
+const WH_CBT             = 5;
+const WH_SYSMSGFILTER    = 6;
+const WH_MOUSE           = 7;
+const WH_HARDWARE        = 8;
+const WH_DEBUG           = 9;
+const WH_SHELL           = 10;
+const WH_FOREGROUNDIDLE  = 11;
+const WH_CALLWNDPROCRET  = 12;
+const WH_KEYBOARD_LL     = 13;
+const WH_MOUSE_LL        = 14;
+const WH_MAX             = 14;
+const WH_MINHOOK         = WH_MIN;
+const WH_MAXHOOK         = WH_MAX;
+
+enum {
+	HC_ACTION = 0,
+	HC_GETNEXT,
+	HC_SKIP,
+	HC_NOREMOVE, // = 3
+	HC_NOREM = HC_NOREMOVE,
+	HC_SYSMODALON,
+	HC_SYSMODALOFF
+}
+
+enum {
+	HCBT_MOVESIZE = 0,
+	HCBT_MINMAX,
+	HCBT_QS,
+	HCBT_CREATEWND,
+	HCBT_DESTROYWND,
+	HCBT_ACTIVATE,
+	HCBT_CLICKSKIPPED,
+	HCBT_KEYSKIPPED,
+	HCBT_SYSCOMMAND,
+	HCBT_SETFOCUS // = 9
+}
+
+enum {
+	CF_TEXT = 1,
+	CF_BITMAP,
+	CF_METAFILEPICT,
+	CF_SYLK,
+	CF_DIF,
+	CF_TIFF,
+	CF_OEMTEXT,
+	CF_DIB,
+	CF_PALETTE,
+	CF_PENDATA,
+	CF_RIFF,
+	CF_WAVE,
+	CF_UNICODETEXT,
+	CF_ENHMETAFILE,
+	CF_HDROP,
+	CF_LOCALE,
+	CF_MAX, // = 17
+	CF_OWNERDISPLAY   = 128,
+	CF_DSPTEXT,
+	CF_DSPBITMAP,
+	CF_DSPMETAFILEPICT, // = 131
+	CF_DSPENHMETAFILE = 142,
+	CF_PRIVATEFIRST   = 512,
+	CF_PRIVATELAST    = 767,
+	CF_GDIOBJFIRST    = 768,
+	CF_GDIOBJLAST     = 1023
+}
+
+const HKL_PREV = 0;
+const HKL_NEXT = 1;
+
+const KLF_ACTIVATE       = 1;
+const KLF_SUBSTITUTE_OK  = 2;
+const KLF_UNLOADPREVIOUS = 4;
+const KLF_REORDER        = 8;
+const KLF_REPLACELANG    = 16;
+const KLF_NOTELLSHELL    = 128;
+const KLF_SETFORPROCESS  = 256;
+const KL_NAMELENGTH      = 9;
+
+const MF_ENABLED = 0;
+const MF_GRAYED = 1;
+const MF_DISABLED = 2;
+const MF_BITMAP = 4;
+const MF_CHECKED = 8;
+const MF_MENUBARBREAK = 32;
+const MF_MENUBREAK = 64;
+const MF_OWNERDRAW = 256;
+const MF_POPUP = 16;
+const MF_SEPARATOR = 0x800;
+const MF_STRING = 0;
+const MF_UNCHECKED = 0;
+const MF_DEFAULT = 4096;
+const MF_SYSMENU = 0x2000;
+const MF_HELP = 0x4000;
+const MF_END = 128;
+const MF_RIGHTJUSTIFY = 0x4000;
+const MF_MOUSESELECT = 0x8000;
+const MF_INSERT = 0;
+const MF_CHANGE = 128;
+const MF_APPEND = 256;
+const MF_DELETE = 512;
+const MF_REMOVE = 4096;
+const MF_USECHECKBITMAPS = 512;
+const MF_UNHILITE = 0;
+const MF_HILITE = 128;
+
+// Also defined in dbt.h
+const BSM_ALLCOMPONENTS      = 0;
+const BSM_VXDS               = 1;
+const BSM_NETDRIVER          = 2;
+const BSM_INSTALLABLEDRIVERS = 4;
+const BSM_APPLICATIONS       = 8;
+const BSM_ALLDESKTOPS        = 16;
+
+const BSF_QUERY              = 0x00000001;
+const BSF_IGNORECURRENTTASK  = 0x00000002;
+const BSF_FLUSHDISK          = 0x00000004;
+const BSF_NOHANG             = 0x00000008;
+const BSF_POSTMESSAGE        = 0x00000010;
+const BSF_FORCEIFHUNG        = 0x00000020;
+const BSF_NOTIMEOUTIFNOTHUNG = 0x00000040;
+
+static if (_WIN32_WINNT >= 0x500) {
+	const BSF_ALLOWSFW          = 0x00000080;
+	const BSF_SENDNOTIFYMESSAGE = 0x00000100;
+}
+static if (_WIN32_WINNT >= 0x501) {
+	const BSF_RETURNHDESK       = 0x00000200;
+	const BSF_LUID              = 0x00000400;
+}
+
+const BROADCAST_QUERY_DENY = 1112363332;
+const DWORD ENUM_CURRENT_SETTINGS  = -1;
+const DWORD ENUM_REGISTRY_SETTINGS = -2;
+
+const CDS_UPDATEREGISTRY = 1;
+const CDS_TEST           = 2;
+const CDS_FULLSCREEN     = 4;
+const CDS_GLOBAL         = 8;
+const CDS_SET_PRIMARY    = 16;
+const CDS_NORESET        = 0x10000000;
+const CDS_SETRECT        = 0x20000000;
+const CDS_RESET          = 0x40000000;
+
+const DISP_CHANGE_RESTART    = 1;
+const DISP_CHANGE_SUCCESSFUL = 0;
+const DISP_CHANGE_FAILED     = -1;
+const DISP_CHANGE_BADMODE    = -2;
+const DISP_CHANGE_NOTUPDATED = -3;
+const DISP_CHANGE_BADFLAGS   = -4;
+const DISP_CHANGE_BADPARAM   = -5;
+
+const BST_UNCHECKED     = 0;
+const BST_CHECKED       = 1;
+const BST_INDETERMINATE = 2;
+const BST_PUSHED        = 4;
+const BST_FOCUS         = 8;
+
+const MF_BYCOMMAND  = 0;
+const MF_BYPOSITION = 1024;
+// [Redefined] MF_UNCHECKED=0
+// [Redefined] MF_HILITE=128
+// [Redefined] MF_UNHILITE=0
+
+const CWP_ALL             = 0;
+const CWP_SKIPINVISIBLE   = 1;
+const CWP_SKIPDISABLED    = 2;
+const CWP_SKIPTRANSPARENT = 4;
+
+const IMAGE_BITMAP=0;
+const IMAGE_ICON=1;
+const IMAGE_CURSOR=2;
+const IMAGE_ENHMETAFILE=3;
+
+const DF_ALLOWOTHERACCOUNTHOOK = 1;
+
+const DESKTOP_READOBJECTS     = 1;
+const DESKTOP_CREATEWINDOW    = 2;
+const DESKTOP_CREATEMENU      = 4;
+const DESKTOP_HOOKCONTROL     = 8;
+const DESKTOP_JOURNALRECORD   = 16;
+const DESKTOP_JOURNALPLAYBACK = 32;
+const DESKTOP_ENUMERATE       = 64;
+const DESKTOP_WRITEOBJECTS    = 128;
+const DESKTOP_SWITCHDESKTOP   = 256;
+
+const CW_USEDEFAULT       = 0x80000000;
+
+enum {
+	WS_OVERLAPPED       = 0,
+	WS_TILED            = WS_OVERLAPPED,
+	WS_MAXIMIZEBOX      = 0x00010000,
+	WS_MINIMIZEBOX      = 0x00020000,
+	WS_TABSTOP          = 0x00010000,
+	WS_GROUP            = 0x00020000,
+	WS_THICKFRAME       = 0x00040000,
+	WS_SIZEBOX          = WS_THICKFRAME,
+	WS_SYSMENU          = 0x00080000,
+	WS_HSCROLL          = 0x00100000,
+	WS_VSCROLL          = 0x00200000,
+	WS_DLGFRAME         = 0x00400000,
+	WS_BORDER           = 0x00800000,
+	WS_CAPTION          = 0x00c00000,
+	WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX,
+	WS_TILEDWINDOW      = WS_OVERLAPPEDWINDOW,
+	WS_MAXIMIZE         = 0x01000000,
+	WS_CLIPCHILDREN     = 0x02000000,
+	WS_CLIPSIBLINGS     = 0x04000000,
+	WS_DISABLED         = 0x08000000,
+	WS_VISIBLE          = 0x10000000,
+	WS_MINIMIZE         = 0x20000000,
+	WS_ICONIC           = WS_MINIMIZE,
+	WS_CHILD            = 0x40000000,
+	WS_CHILDWINDOW      = 0x40000000,
+	WS_POPUP            = 0x80000000,
+	WS_POPUPWINDOW      = WS_POPUP|WS_BORDER|WS_SYSMENU,
+}
+
+const MDIS_ALLCHILDSTYLES = 1;
+
+const BS_3STATE = 5;
+const BS_AUTO3STATE = 6;
+const BS_AUTOCHECKBOX = 3;
+const BS_AUTORADIOBUTTON = 9;
+const BS_BITMAP = 128;
+const BS_BOTTOM = 0x800;
+const BS_CENTER = 0x300;
+const BS_CHECKBOX = 2;
+const BS_DEFPUSHBUTTON = 1;
+const BS_GROUPBOX = 7;
+const BS_ICON = 64;
+const BS_LEFT = 256;
+const BS_LEFTTEXT = 32;
+const BS_MULTILINE = 0x2000;
+const BS_NOTIFY = 0x4000;
+const BS_OWNERDRAW = 0xb;
+const BS_PUSHBUTTON = 0;
+const BS_PUSHLIKE = 4096;
+const BS_RADIOBUTTON = 4;
+const BS_RIGHT = 512;
+const BS_RIGHTBUTTON = 32;
+const BS_TEXT = 0;
+const BS_TOP = 0x400;
+const BS_USERBUTTON = 8;
+const BS_VCENTER = 0xc00;
+const BS_FLAT = 0x8000;
+
+const CBS_AUTOHSCROLL = 64;
+const CBS_DISABLENOSCROLL = 0x800;
+const CBS_DROPDOWN = 2;
+const CBS_DROPDOWNLIST = 3;
+const CBS_HASSTRINGS = 512;
+const CBS_LOWERCASE = 0x4000;
+const CBS_NOINTEGRALHEIGHT = 0x400;
+const CBS_OEMCONVERT = 128;
+const CBS_OWNERDRAWFIXED = 16;
+const CBS_OWNERDRAWVARIABLE = 32;
+const CBS_SIMPLE = 1;
+const CBS_SORT = 256;
+const CBS_UPPERCASE = 0x2000;
+
+const ES_AUTOHSCROLL = 128;
+const ES_AUTOVSCROLL = 64;
+const ES_CENTER = 1;
+const ES_LEFT = 0;
+const ES_LOWERCASE = 16;
+const ES_MULTILINE = 4;
+const ES_NOHIDESEL = 256;
+const ES_NUMBER = 0x2000;
+const ES_OEMCONVERT = 0x400;
+const ES_PASSWORD = 32;
+const ES_READONLY = 0x800;
+const ES_RIGHT = 2;
+const ES_UPPERCASE = 8;
+const ES_WANTRETURN = 4096;
+
+const LBS_DISABLENOSCROLL = 4096;
+const LBS_EXTENDEDSEL = 0x800;
+const LBS_HASSTRINGS = 64;
+const LBS_MULTICOLUMN = 512;
+const LBS_MULTIPLESEL = 8;
+const LBS_NODATA = 0x2000;
+const LBS_NOINTEGRALHEIGHT = 256;
+const LBS_NOREDRAW = 4;
+const LBS_NOSEL = 0x4000;
+const LBS_NOTIFY = 1;
+const LBS_OWNERDRAWFIXED = 16;
+const LBS_OWNERDRAWVARIABLE = 32;
+const LBS_SORT = 2;
+const LBS_STANDARD = 0xa00003;
+const LBS_USETABSTOPS = 128;
+const LBS_WANTKEYBOARDINPUT = 0x400;
+
+const SBS_BOTTOMALIGN = 4;
+const SBS_HORZ = 0;
+const SBS_LEFTALIGN = 2;
+const SBS_RIGHTALIGN = 4;
+const SBS_SIZEBOX = 8;
+const SBS_SIZEBOXBOTTOMRIGHTALIGN = 4;
+const SBS_SIZEBOXTOPLEFTALIGN = 2;
+const SBS_SIZEGRIP = 16;
+const SBS_TOPALIGN = 2;
+const SBS_VERT = 1;
+
+const SS_BITMAP = 14;
+const SS_BLACKFRAME = 7;
+const SS_BLACKRECT = 4;
+const SS_CENTER = 1;
+const SS_CENTERIMAGE = 512;
+const SS_ENHMETAFILE = 15;
+const SS_ETCHEDFRAME = 18;
+const SS_ETCHEDHORZ = 16;
+const SS_ETCHEDVERT = 17;
+const SS_GRAYFRAME = 8;
+const SS_GRAYRECT = 5;
+const SS_ICON = 3;
+const SS_LEFT = 0;
+const SS_LEFTNOWORDWRAP = 0xc;
+const SS_NOPREFIX = 128;
+const SS_NOTIFY = 256;
+const SS_OWNERDRAW = 0xd;
+const SS_REALSIZEIMAGE = 0x800;
+const SS_RIGHT = 2;
+const SS_RIGHTJUST = 0x400;
+const SS_SIMPLE = 11;
+const SS_SUNKEN = 4096;
+const SS_WHITEFRAME = 9;
+const SS_WHITERECT = 6;
+const SS_USERITEM = 10;
+const SS_TYPEMASK = 0x0000001FL;
+const SS_ENDELLIPSIS = 0x00004000L;
+const SS_PATHELLIPSIS = 0x00008000L;
+const SS_WORDELLIPSIS = 0x0000C000L;
+const SS_ELLIPSISMASK = 0x0000C000L;
+
+const DS_ABSALIGN      = 0x0001;
+const DS_3DLOOK        = 0x0004;
+const DS_SYSMODAL      = 0x0002;
+const DS_FIXEDSYS      = 0x0008;
+const DS_NOFAILCREATE  = 0x0010;
+const DS_LOCALEDIT     = 0x0020;
+const DS_SETFONT       = 0x0040;
+const DS_MODALFRAME    = 0x0080;
+const DS_NOIDLEMSG     = 0x0100;
+const DS_SETFOREGROUND = 0x0200;
+const DS_CONTROL       = 0x0400;
+const DS_CENTER        = 0x0800;
+const DS_CENTERMOUSE   = 0x1000;
+const DS_CONTEXTHELP   = 0x2000;
+const DS_SHELLFONT     = DS_SETFONT | DS_FIXEDSYS;
+
+const WS_EX_ACCEPTFILES = 16;
+const WS_EX_APPWINDOW = 0x40000;
+const WS_EX_CLIENTEDGE = 512;
+const WS_EX_COMPOSITED = 0x2000000;  // XP
+const WS_EX_CONTEXTHELP = 0x400;
+const WS_EX_CONTROLPARENT = 0x10000;
+const WS_EX_DLGMODALFRAME = 1;
+const WS_EX_LAYERED = 0x80000;  // w2k
+const WS_EX_LAYOUTRTL = 0x400000;  // w98, w2k
+const WS_EX_LEFT = 0;
+const WS_EX_LEFTSCROLLBAR = 0x4000;
+const WS_EX_LTRREADING = 0;
+const WS_EX_MDICHILD = 64;
+const WS_EX_NOACTIVATE = 0x8000000;  // w2k
+const WS_EX_NOINHERITLAYOUT = 0x100000;  // w2k
+const WS_EX_NOPARENTNOTIFY = 4;
+const WS_EX_OVERLAPPEDWINDOW = 0x300;
+const WS_EX_PALETTEWINDOW = 0x188;
+const WS_EX_RIGHT = 0x1000;
+const WS_EX_RIGHTSCROLLBAR = 0;
+const WS_EX_RTLREADING = 0x2000;
+const WS_EX_STATICEDGE = 0x20000;
+const WS_EX_TOOLWINDOW = 128;
+const WS_EX_TOPMOST = 8;
+const WS_EX_TRANSPARENT = 32;
+const WS_EX_WINDOWEDGE = 256;
+
+const WINSTA_ENUMDESKTOPS      = 1;
+const WINSTA_READATTRIBUTES    = 2;
+const WINSTA_ACCESSCLIPBOARD   = 4;
+const WINSTA_CREATEDESKTOP     = 8;
+const WINSTA_WRITEATTRIBUTES   = 16;
+const WINSTA_ACCESSGLOBALATOMS = 32;
+const WINSTA_EXITWINDOWS       = 64;
+const WINSTA_ENUMERATE         = 256;
+const WINSTA_READSCREEN        = 512;
+
+const DDL_READWRITE = 0;
+const DDL_READONLY  = 1;
+const DDL_HIDDEN    = 2;
+const DDL_SYSTEM    = 4;
+const DDL_DIRECTORY = 16;
+const DDL_ARCHIVE   = 32;
+const DDL_POSTMSGS  = 8192;
+const DDL_DRIVES    = 16384;
+const DDL_EXCLUSIVE = 32768;
+
+const DC_ACTIVE   = 0x00000001;
+const DC_SMALLCAP = 0x00000002;
+const DC_ICON     = 0x00000004;
+const DC_TEXT     = 0x00000008;
+const DC_INBUTTON = 0x00000010;
+
+static if (WINVER >= 0x500) {
+const DC_GRADIENT=0x00000020;
+}
+static if (_WIN32_WINNT >= 0x501) {
+const DC_BUTTONS=0x00001000;
+}
+
+// Where are these documented?
+//const DC_CAPTION = DC_ICON|DC_TEXT|DC_BUTTONS;
+//const DC_NC      = DC_CAPTION|DC_FRAME;
+
+const BDR_RAISEDOUTER = 1;
+const BDR_SUNKENOUTER = 2;
+const BDR_RAISEDINNER = 4;
+const BDR_SUNKENINNER = 8;
+const BDR_OUTER       = 3;
+const BDR_INNER       = 0xc;
+const BDR_RAISED      = 5;
+const BDR_SUNKEN      = 10;
+
+const EDGE_RAISED = BDR_RAISEDOUTER|BDR_RAISEDINNER;
+const EDGE_SUNKEN = BDR_SUNKENOUTER|BDR_SUNKENINNER;
+const EDGE_ETCHED = BDR_SUNKENOUTER|BDR_RAISEDINNER;
+const EDGE_BUMP   = BDR_RAISEDOUTER|BDR_SUNKENINNER;
+
+const BF_LEFT                    = 1;
+const BF_TOP                     = 2;
+const BF_RIGHT                   = 4;
+const BF_BOTTOM                  = 8;
+const BF_TOPLEFT                 = BF_TOP|BF_LEFT;
+const BF_TOPRIGHT                = BF_TOP|BF_RIGHT;
+const BF_BOTTOMLEFT              = BF_BOTTOM|BF_LEFT;
+const BF_BOTTOMRIGHT             = BF_BOTTOM|BF_RIGHT;
+const BF_RECT                    = BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM ;
+const BF_DIAGONAL                = 16;
+const BF_DIAGONAL_ENDTOPRIGHT    = BF_DIAGONAL|BF_TOP|BF_RIGHT;
+const BF_DIAGONAL_ENDTOPLEFT     = BF_DIAGONAL|BF_TOP|BF_LEFT;
+const BF_DIAGONAL_ENDBOTTOMLEFT  = BF_DIAGONAL|BF_BOTTOM|BF_LEFT;
+const BF_DIAGONAL_ENDBOTTOMRIGHT = BF_DIAGONAL|BF_BOTTOM|BF_RIGHT;
+const BF_MIDDLE                  = 0x800;
+const BF_SOFT                    = 0x1000;
+const BF_ADJUST                  = 0x2000;
+const BF_FLAT                    = 0x4000;
+const BF_MONO                    = 0x8000;
+
+const DFC_CAPTION=1;
+const DFC_MENU=2;
+const DFC_SCROLL=3;
+const DFC_BUTTON=4;
+static if (WINVER >= 0x500) {
+const DFC_POPUPMENU=5;
+}// WINVER >= 0x500
+
+const DFCS_CAPTIONCLOSE   = 0;
+const DFCS_CAPTIONMIN     = 1;
+const DFCS_CAPTIONMAX     = 2;
+const DFCS_CAPTIONRESTORE = 3;
+const DFCS_CAPTIONHELP    = 4;
+
+const DFCS_MENUARROW      = 0;
+const DFCS_MENUCHECK      = 1;
+const DFCS_MENUBULLET     = 2;
+const DFCS_MENUARROWRIGHT = 4;
+
+const DFCS_SCROLLUP            = 0;
+const DFCS_SCROLLDOWN          = 1;
+const DFCS_SCROLLLEFT          = 2;
+const DFCS_SCROLLRIGHT         = 3;
+const DFCS_SCROLLCOMBOBOX      = 5;
+const DFCS_SCROLLSIZEGRIP      = 8;
+const DFCS_SCROLLSIZEGRIPRIGHT = 16;
+
+const DFCS_BUTTONCHECK         = 0;
+const DFCS_BUTTONRADIOIMAGE    = 1;
+const DFCS_BUTTONRADIOMASK     = 2;
+const DFCS_BUTTONRADIO         = 4;
+const DFCS_BUTTON3STATE        = 8;
+const DFCS_BUTTONPUSH          = 16;
+const DFCS_INACTIVE            = 256;
+const DFCS_PUSHED              = 512;
+const DFCS_CHECKED             = 1024;
+static if (WINVER >= 0x500) {
+const DFCS_TRANSPARENT         = 0x800;
+const DFCS_HOT                 = 0x1000;
+}
+const DFCS_ADJUSTRECT          = 0x2000;
+const DFCS_FLAT                = 0x4000;
+const DFCS_MONO                = 0x8000;
+
+enum {
+	DST_COMPLEX = 0,
+	DST_TEXT,
+	DST_PREFIXTEXT,
+	DST_ICON,
+	DST_BITMAP // = 4
+}
+
+const DSS_NORMAL = 0;
+const DSS_UNION = 16;
+const DSS_DISABLED = 32;
+const DSS_MONO = 128;
+const DSS_RIGHT = 0x8000;
+
+const DT_BOTTOM = 8;
+const DT_CALCRECT = 1024;
+const DT_CENTER = 1;
+const DT_EDITCONTROL = 8192;
+const DT_END_ELLIPSIS = 32768;
+const DT_PATH_ELLIPSIS = 16384;
+const DT_WORD_ELLIPSIS = 0x40000;
+const DT_EXPANDTABS = 64;
+const DT_EXTERNALLEADING = 512;
+const DT_LEFT = 0;
+const DT_MODIFYSTRING = 65536;
+const DT_NOCLIP = 256;
+const DT_NOPREFIX = 2048;
+const DT_RIGHT = 2;
+const DT_RTLREADING = 131072;
+const DT_SINGLELINE = 32;
+const DT_TABSTOP = 128;
+const DT_TOP = 0;
+const DT_VCENTER = 4;
+const DT_WORDBREAK = 16;
+const DT_INTERNAL = 4096;
+
+const WB_ISDELIMITER = 2;
+const WB_LEFT = 0;
+const WB_RIGHT = 1;
+
+const SB_HORZ = 0;
+const SB_VERT = 1;
+const SB_CTL = 2;
+const SB_BOTH = 3;
+
+const ESB_DISABLE_BOTH = 3;
+const ESB_DISABLE_DOWN = 2;
+const ESB_DISABLE_LEFT = 1;
+const ESB_DISABLE_LTUP = 1;
+const ESB_DISABLE_RIGHT = 2;
+const ESB_DISABLE_RTDN = 2;
+const ESB_DISABLE_UP = 1;
+const ESB_ENABLE_BOTH = 0;
+
+const SB_LINEUP = 0;
+const SB_LINEDOWN = 1;
+const SB_LINELEFT = 0;
+const SB_LINERIGHT = 1;
+const SB_PAGEUP = 2;
+const SB_PAGEDOWN = 3;
+const SB_PAGELEFT = 2;
+const SB_PAGERIGHT = 3;
+const SB_THUMBPOSITION = 4;
+const SB_THUMBTRACK = 5;
+const SB_ENDSCROLL = 8;
+const SB_LEFT = 6;
+const SB_RIGHT = 7;
+const SB_BOTTOM = 7;
+const SB_TOP = 6;
+
+//MACRO #define IS_INTRESOURCE(i) (((ULONG_PTR)(i) >> 16) == 0)
+
+template MAKEINTRESOURCE_T (WORD i)
+{
+	const LPTSTR MAKEINTRESOURCE_T = cast(LPTSTR)(i);
+}
+
+LPSTR MAKEINTRESOURCEA(WORD i)
+{
+	return cast(LPSTR)(i);
+}
+
+LPWSTR MAKEINTRESOURCEW(WORD i)
+{
+	return cast(LPWSTR)(i);
+}
+
+const RT_CURSOR       = MAKEINTRESOURCE_T!(1);
+const RT_BITMAP       = MAKEINTRESOURCE_T!(2);
+const RT_ICON         = MAKEINTRESOURCE_T!(3);
+const RT_MENU         = MAKEINTRESOURCE_T!(4);
+const RT_DIALOG       = MAKEINTRESOURCE_T!(5);
+const RT_STRING       = MAKEINTRESOURCE_T!(6);
+const RT_FONTDIR      = MAKEINTRESOURCE_T!(7);
+const RT_FONT         = MAKEINTRESOURCE_T!(8);
+const RT_ACCELERATOR  = MAKEINTRESOURCE_T!(9);
+const RT_RCDATA       = MAKEINTRESOURCE_T!(10);
+const RT_MESSAGETABLE = MAKEINTRESOURCE_T!(11);
+
+const RT_GROUP_CURSOR = MAKEINTRESOURCE_T!(12);
+const RT_GROUP_ICON   = MAKEINTRESOURCE_T!(14);
+const RT_VERSION      = MAKEINTRESOURCE_T!(16);
+const RT_DLGINCLUDE   = MAKEINTRESOURCE_T!(17);
+const RT_PLUGPLAY     = MAKEINTRESOURCE_T!(19);
+const RT_VXD          = MAKEINTRESOURCE_T!(20);
+const RT_ANICURSOR    = MAKEINTRESOURCE_T!(21);
+const RT_ANIICON      = MAKEINTRESOURCE_T!(22);
+const RT_HTML         = MAKEINTRESOURCE_T!(23);
+const RT_MANIFEST     = MAKEINTRESOURCE_T!(24);
+
+const CREATEPROCESS_MANIFEST_RESOURCE_ID                 = MAKEINTRESOURCE_T!(1);
+const ISOLATIONAWARE_MANIFEST_RESOURCE_ID                = MAKEINTRESOURCE_T!(2);
+const ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE_T!(3);
+
+const EWX_LOGOFF   = 0;
+const EWX_SHUTDOWN = 1;
+const EWX_REBOOT   = 2;
+const EWX_FORCE    = 4;
+const EWX_POWEROFF = 8;
+static if (_WIN32_WINNT >= 0x500) {
+const EWX_FORCEIFHUNG = 16;
+}
+
+const CS_BYTEALIGNCLIENT = 4096;
+const CS_BYTEALIGNWINDOW = 8192;
+const CS_KEYCVTWINDOW = 4;
+const CS_NOKEYCVT = 256;
+const CS_CLASSDC = 64;
+const CS_DBLCLKS = 8;
+const CS_GLOBALCLASS = 16384;
+const CS_HREDRAW = 2;
+const CS_NOCLOSE = 512;
+const CS_OWNDC = 32;
+const CS_PARENTDC = 128;
+const CS_SAVEBITS = 2048;
+const CS_VREDRAW = 1;
+const CS_IME = 0x10000;
+
+const GCW_ATOM = -32;
+const GCL_CBCLSEXTRA = -20;
+const GCL_CBWNDEXTRA = -18;
+const GCL_HBRBACKGROUND = -10;
+const GCL_HCURSOR = -12;
+const GCL_HICON = -14;
+const GCL_HICONSM = -34;
+const GCL_HMODULE = -16;
+const GCL_MENUNAME = -8;
+const GCL_STYLE = -26;
+const GCL_WNDPROC = -24;
+
+alias GCL_HICONSM GCLP_HICONSM;
+alias GCL_HICON GCLP_HICON;
+alias GCL_HCURSOR GCLP_HCURSOR;
+alias GCL_HBRBACKGROUND GCLP_HBRBACKGROUND;
+alias GCL_HMODULE  GCLP_HMODULE;
+alias GCL_MENUNAME GCLP_MENUNAME;
+alias GCL_WNDPROC  GCLP_WNDPROC;
+
+const IDC_ARROW       = MAKEINTRESOURCE_T!(32512);
+const IDC_IBEAM       = MAKEINTRESOURCE_T!(32513);
+const IDC_WAIT        = MAKEINTRESOURCE_T!(32514);
+const IDC_CROSS       = MAKEINTRESOURCE_T!(32515);
+const IDC_UPARROW     = MAKEINTRESOURCE_T!(32516);
+const IDC_SIZENWSE    = MAKEINTRESOURCE_T!(32642);
+const IDC_SIZENESW    = MAKEINTRESOURCE_T!(32643);
+const IDC_SIZEWE      = MAKEINTRESOURCE_T!(32644);
+const IDC_SIZENS      = MAKEINTRESOURCE_T!(32645);
+const IDC_SIZEALL     = MAKEINTRESOURCE_T!(32646);
+const IDC_NO          = MAKEINTRESOURCE_T!(32648);
+const IDC_HAND        = MAKEINTRESOURCE_T!(32649);
+const IDC_APPSTARTING = MAKEINTRESOURCE_T!(32650);
+const IDC_HELP        = MAKEINTRESOURCE_T!(32651);
+const IDC_ICON        = MAKEINTRESOURCE_T!(32641);
+const IDC_SIZE        = MAKEINTRESOURCE_T!(32640);
+const IDI_APPLICATION = MAKEINTRESOURCE_T!(32512);
+const IDI_HAND        = MAKEINTRESOURCE_T!(32513);
+const IDI_QUESTION    = MAKEINTRESOURCE_T!(32514);
+const IDI_EXCLAMATION = MAKEINTRESOURCE_T!(32515);
+const IDI_ASTERISK    = MAKEINTRESOURCE_T!(32516);
+const IDI_WINLOGO     = MAKEINTRESOURCE_T!(32517);
+const IDI_WARNING     = IDI_EXCLAMATION;
+const IDI_ERROR       = IDI_HAND;
+const IDI_INFORMATION = IDI_ASTERISK;
+
+const MIIM_STATE = 1;
+const MIIM_ID = 2;
+const MIIM_SUBMENU = 4;
+const MIIM_CHECKMARKS = 8;
+const MIIM_TYPE = 16;
+const MIIM_DATA = 32;
+const MIIM_STRING = 64;
+const MIIM_BITMAP = 128;
+const MIIM_FTYPE = 256;
+
+static if (WINVER >= 0x500) {
+
+const MIM_MAXHEIGHT = 1;
+const MIM_BACKGROUND = 2;
+const MIM_HELPID = 4;
+const MIM_MENUDATA = 8;
+const MIM_STYLE = 16;
+const MIM_APPLYTOSUBMENUS = 0x80000000L;
+
+const MNS_NOCHECK = 0x80000000;
+const MNS_MODELESS = 0x40000000;
+const MNS_DRAGDROP = 0x20000000;
+const MNS_AUTODISMISS = 0x10000000;
+const MNS_NOTIFYBYPOS = 0x08000000;
+const MNS_CHECKORBMP = 0x04000000;
+
+}
+
+const MFT_BITMAP = 4;
+const MFT_MENUBARBREAK = 32;
+const MFT_MENUBREAK = 64;
+const MFT_OWNERDRAW = 256;
+const MFT_RADIOCHECK = 512;
+const MFT_RIGHTJUSTIFY = 0x4000;
+const MFT_SEPARATOR = 0x800;
+const MFT_RIGHTORDER = 0x2000L;
+const MFT_STRING = 0;
+
+const MFS_CHECKED = 8;
+const MFS_DEFAULT = 4096;
+const MFS_DISABLED = 3;
+const MFS_ENABLED = 0;
+const MFS_GRAYED = 3;
+const MFS_HILITE = 128;
+const MFS_UNCHECKED = 0;
+const MFS_UNHILITE = 0;
+
+const GW_HWNDNEXT = 2;
+const GW_HWNDPREV = 3;
+const GW_CHILD = 5;
+const GW_HWNDFIRST = 0;
+const GW_HWNDLAST = 1;
+const GW_OWNER = 4;
+
+const SW_HIDE = 0;
+const SW_NORMAL = 1;
+const SW_SHOWNORMAL = 1;
+const SW_SHOWMINIMIZED = 2;
+const SW_MAXIMIZE = 3;
+const SW_SHOWMAXIMIZED = 3;
+const SW_SHOWNOACTIVATE = 4;
+const SW_SHOW = 5;
+const SW_MINIMIZE = 6;
+const SW_SHOWMINNOACTIVE = 7;
+const SW_SHOWNA = 8;
+const SW_RESTORE = 9;
+const SW_SHOWDEFAULT = 10;
+const SW_FORCEMINIMIZE = 11;
+const SW_MAX = 11;
+
+const MB_USERICON = 128;
+const MB_ICONASTERISK = 64;
+const MB_ICONEXCLAMATION = 0x30;
+const MB_ICONWARNING = 0x30;
+const MB_ICONERROR = 16;
+const MB_ICONHAND = 16;
+const MB_ICONQUESTION = 32;
+const MB_OK = 0;
+const MB_ABORTRETRYIGNORE = 2;
+const MB_APPLMODAL = 0;
+const MB_DEFAULT_DESKTOP_ONLY = 0x20000;
+const MB_HELP = 0x4000;
+const MB_RIGHT = 0x80000;
+const MB_RTLREADING = 0x100000;
+const MB_TOPMOST = 0x40000;
+const MB_DEFBUTTON1 = 0;
+const MB_DEFBUTTON2 = 256;
+const MB_DEFBUTTON3 = 512;
+const MB_DEFBUTTON4 = 0x300;
+const MB_ICONINFORMATION = 64;
+const MB_ICONSTOP = 16;
+const MB_OKCANCEL = 1;
+const MB_RETRYCANCEL = 5;
+
+static if (_WIN32_WINNT_ONLY) {
+	static if (_WIN32_WINNT >= 0x400) {
+		const MB_SERVICE_NOTIFICATION = 0x00200000;
+	} else {
+		const MB_SERVICE_NOTIFICATION = 0x00040000;
+	}
+	const MB_SERVICE_NOTIFICATION_NT3X = 0x00040000;
+}
+
+const MB_SETFOREGROUND = 0x10000;
+const MB_SYSTEMMODAL = 4096;
+const MB_TASKMODAL = 0x2000;
+const MB_YESNO = 4;
+const MB_YESNOCANCEL = 3;
+const MB_ICONMASK = 240;
+const MB_DEFMASK = 3840;
+const MB_MODEMASK = 0x00003000;
+const MB_MISCMASK = 0x0000C000;
+const MB_NOFOCUS = 0x00008000;
+const MB_TYPEMASK = 15;
+// [Redefined] MB_TOPMOST=0x40000
+static if (WINVER >= 0x500) {
+	const MB_CANCELTRYCONTINUE=6;
+}
+
+const IDOK       = 1;
+const IDCANCEL   = 2;
+const IDABORT    = 3;
+const IDRETRY    = 4;
+const IDIGNORE   = 5;
+const IDYES      = 6;
+const IDNO       = 7;
+static if (WINVER >= 0x400) {
+const IDCLOSE    = 8;
+const IDHELP     = 9;
+}
+static if (WINVER >= 0x500) {
+const IDTRYAGAIN = 10;
+const IDCONTINUE = 11;
+}
+
+const GWL_EXSTYLE = -20;
+const GWL_STYLE = -16;
+const GWL_WNDPROC = -4;
+const GWLP_WNDPROC = -4;
+const GWL_HINSTANCE = -6;
+const GWLP_HINSTANCE = -6;
+const GWL_HWNDPARENT = -8;
+const GWLP_HWNDPARENT = -8;
+const GWL_ID = -12;
+const GWLP_ID = -12;
+const GWL_USERDATA = -21;
+const GWLP_USERDATA = -21;
+
+const DWL_DLGPROC = 4;
+const DWLP_DLGPROC = 4;
+const DWL_MSGRESULT = 0;
+const DWLP_MSGRESULT = 0;
+const DWL_USER = 8;
+const DWLP_USER = 8;
+
+const QS_KEY            = 1;
+const QS_MOUSEMOVE      = 2;
+const QS_MOUSEBUTTON    = 4;
+const QS_MOUSE          = 6;
+const QS_POSTMESSAGE    = 8;
+const QS_TIMER          = 16;
+const QS_PAINT          = 32;
+const QS_SENDMESSAGE    = 64;
+const QS_HOTKEY         = 128;
+const QS_ALLPOSTMESSAGE = 256;
+static if (_WIN32_WINNT >= 0x501) {
+const QS_RAWINPUT       = 1024;
+const QS_INPUT          = 1031;
+const QS_ALLEVENTS      = 1215;
+const QS_ALLINPUT       = 1279;
+} else {
+const QS_INPUT          = 7;
+const QS_ALLEVENTS      = 191;
+const QS_ALLINPUT       = 255;
+}
+
+const MWMO_WAITALL        = 1;
+const MWMO_ALERTABLE      = 2;
+const MWMO_INPUTAVAILABLE = 4;
+
+const COLOR_3DDKSHADOW=21;
+const COLOR_3DFACE=15;
+const COLOR_3DHILIGHT=20;
+const COLOR_3DHIGHLIGHT=20;
+const COLOR_3DLIGHT=22;
+const COLOR_BTNHILIGHT=20;
+const COLOR_3DSHADOW=16;
+const COLOR_ACTIVEBORDER=10;
+const COLOR_ACTIVECAPTION=2;
+const COLOR_APPWORKSPACE=12;
+const COLOR_BACKGROUND=1;
+const COLOR_DESKTOP=1;
+const COLOR_BTNFACE=15;
+const COLOR_BTNHIGHLIGHT=20;
+const COLOR_BTNSHADOW=16;
+const COLOR_BTNTEXT=18;
+const COLOR_CAPTIONTEXT=9;
+const COLOR_GRAYTEXT=17;
+const COLOR_HIGHLIGHT=13;
+const COLOR_HIGHLIGHTTEXT=14;
+const COLOR_INACTIVEBORDER=11;
+const COLOR_INACTIVECAPTION=3;
+const COLOR_INACTIVECAPTIONTEXT=19;
+const COLOR_INFOBK=24;
+const COLOR_INFOTEXT=23;
+const COLOR_MENU=4;
+const COLOR_MENUTEXT=7;
+const COLOR_SCROLLBAR=0;
+const COLOR_WINDOW=5;
+const COLOR_WINDOWFRAME=6;
+const COLOR_WINDOWTEXT=8;
+const COLOR_HOTLIGHT=26;
+const COLOR_GRADIENTACTIVECAPTION=27;
+const COLOR_GRADIENTINACTIVECAPTION=28;
+
+const CTLCOLOR_MSGBOX=0;
+const CTLCOLOR_EDIT=1;
+const CTLCOLOR_LISTBOX=2;
+const CTLCOLOR_BTN=3;
+const CTLCOLOR_DLG=4;
+const CTLCOLOR_SCROLLBAR=5;
+const CTLCOLOR_STATIC=6;
+const CTLCOLOR_MAX=7;
+
+// For GetSystemMetrics()
+enum : int {
+	SM_CXSCREEN = 0,
+	SM_CYSCREEN,
+	SM_CXVSCROLL,
+	SM_CYHSCROLL,
+	SM_CYCAPTION,
+	SM_CXBORDER,
+	SM_CYBORDER,
+	SM_CXDLGFRAME, // = 7,
+	SM_CXFIXEDFRAME = SM_CXDLGFRAME,
+	SM_CYDLGFRAME, // =8,
+	SM_CYFIXEDFRAME = SM_CYDLGFRAME,
+	SM_CYVTHUMB = 9,
+	SM_CXHTHUMB,
+	SM_CXICON,
+	SM_CYICON,
+	SM_CXCURSOR,
+	SM_CYCURSOR,
+	SM_CYMENU,
+	SM_CXFULLSCREEN,
+	SM_CYFULLSCREEN,
+	SM_CYKANJIWINDOW,
+	SM_MOUSEPRESENT,
+	SM_CYVSCROLL,
+	SM_CXHSCROLL,
+	SM_DEBUG,
+	SM_SWAPBUTTON,
+	SM_RESERVED1,
+	SM_RESERVED2,
+	SM_RESERVED3,
+	SM_RESERVED4,
+	SM_CXMIN,
+	SM_CYMIN,
+	SM_CXSIZE,
+	SM_CYSIZE,
+	SM_CXSIZEFRAME, // = 32,
+	SM_CXFRAME = SM_CXSIZEFRAME,
+	SM_CYSIZEFRAME, // = 33
+	SM_CYFRAME = SM_CYSIZEFRAME,
+	SM_CXMINTRACK,
+	SM_CYMINTRACK,
+	SM_CXDOUBLECLK,
+	SM_CYDOUBLECLK,
+	SM_CXICONSPACING,
+	SM_CYICONSPACING,
+	SM_MENUDROPALIGNMENT,
+	SM_PENWINDOWS,
+	SM_DBCSENABLED,
+	SM_CMOUSEBUTTONS,
+	SM_SECURE,
+	SM_CXEDGE,
+	SM_CYEDGE,
+	SM_CXMINSPACING,
+	SM_CYMINSPACING,
+	SM_CXSMICON,
+	SM_CYSMICON,
+	SM_CYSMCAPTION,
+	SM_CXSMSIZE,
+	SM_CYSMSIZE,
+	SM_CXMENUSIZE,
+	SM_CYMENUSIZE,
+	SM_ARRANGE,
+	SM_CXMINIMIZED,
+	SM_CYMINIMIZED,
+	SM_CXMAXTRACK,
+	SM_CYMAXTRACK,
+	SM_CXMAXIMIZED,
+	SM_CYMAXIMIZED,
+	SM_NETWORK, // = 63
+	SM_CLEANBOOT = 67,
+	SM_CXDRAG,
+	SM_CYDRAG,
+	SM_SHOWSOUNDS,
+	SM_CXMENUCHECK,
+	SM_CYMENUCHECK,
+	SM_SLOWMACHINE,
+	SM_MIDEASTENABLED,
+	// The next values aren't supported in Win95.
+	SM_MOUSEWHEELPRESENT,
+	SM_XVIRTUALSCREEN,
+	SM_YVIRTUALSCREEN,
+	SM_CXVIRTUALSCREEN,
+	SM_CYVIRTUALSCREEN,
+	SM_CMONITORS,
+	SM_SAMEDISPLAYFORMAT,
+	SM_IMMENABLED,
+	SM_CXFOCUSBORDER,
+	SM_CYFOCUSBORDER, // = 84
+	SM_TABLETPC = 86,
+	SM_MEDIACENTER = 87,
+	SM_REMOTESESSION = 0x1000,
+	// These are only for WinXP and later
+	SM_SHUTTINGDOWN = 0x2000,
+	SM_REMOTECONTROL = 0x2001
+}
+
+const ARW_BOTTOMLEFT=0;
+const ARW_BOTTOMRIGHT=1;
+const ARW_HIDE=8;
+const ARW_TOPLEFT=2;
+const ARW_TOPRIGHT=3;
+const ARW_DOWN=4;
+const ARW_LEFT=0;
+const ARW_RIGHT=0;
+const ARW_UP=4;
+
+const UOI_FLAGS=1;
+const UOI_NAME=2;
+const UOI_TYPE=3;
+const UOI_USER_SID=4;
+
+// For the fuLoad parameter of LoadImage()
+enum : UINT {
+	LR_DEFAULTCOLOR     = 0,
+	LR_MONOCHROME       = 1,
+	LR_COLOR            = 2,
+	LR_COPYRETURNORG    = 4,
+	LR_COPYDELETEORG    = 8,
+	LR_LOADFROMFILE     = 16,
+	LR_LOADTRANSPARENT  = 32,
+	LR_DEFAULTSIZE      = 64,
+	LR_LOADREALSIZE     = 128,
+	LR_LOADMAP3DCOLORS  = 4096,
+	LR_CREATEDIBSECTION = 8192,
+	LR_COPYFROMRESOURCE = 16384,
+	LR_SHARED           = 32768
+}
+
+const KEYEVENTF_EXTENDEDKEY = 0x00000001;
+const KEYEVENTF_KEYUP       = 00000002;
+static if (_WIN32_WINNT >= 0x500) {
+const KEYEVENTF_UNICODE     = 0x00000004;
+const KEYEVENTF_SCANCODE    = 0x00000008;
+}
+
+const OBM_BTNCORNERS = 32758;
+const OBM_BTSIZE = 32761;
+const OBM_CHECK = 32760;
+const OBM_CHECKBOXES = 32759;
+const OBM_CLOSE = 32754;
+const OBM_COMBO = 32738;
+const OBM_DNARROW = 32752;
+const OBM_DNARROWD = 32742;
+const OBM_DNARROWI = 32736;
+const OBM_LFARROW = 32750;
+const OBM_LFARROWI = 32734;
+const OBM_LFARROWD = 32740;
+const OBM_MNARROW = 32739;
+const OBM_OLD_CLOSE = 32767;
+const OBM_OLD_DNARROW = 32764;
+const OBM_OLD_LFARROW = 32762;
+const OBM_OLD_REDUCE = 32757;
+const OBM_OLD_RESTORE = 32755;
+const OBM_OLD_RGARROW = 32763;
+const OBM_OLD_UPARROW = 32765;
+const OBM_OLD_ZOOM = 32756;
+const OBM_REDUCE = 32749;
+const OBM_REDUCED = 32746;
+const OBM_RESTORE = 32747;
+const OBM_RESTORED = 32744;
+const OBM_RGARROW = 32751;
+const OBM_RGARROWD = 32741;
+const OBM_RGARROWI = 32735;
+const OBM_SIZE = 32766;
+const OBM_UPARROW = 32753;
+const OBM_UPARROWD = 32743;
+const OBM_UPARROWI = 32737;
+const OBM_ZOOM = 32748;
+const OBM_ZOOMD = 32745;
+
+const OCR_NORMAL = 32512;
+const OCR_IBEAM = 32513;
+const OCR_WAIT = 32514;
+const OCR_CROSS = 32515;
+const OCR_UP = 32516;
+const OCR_SIZE = 32640;
+const OCR_ICON = 32641;
+const OCR_SIZENWSE = 32642;
+const OCR_SIZENESW = 32643;
+const OCR_SIZEWE = 32644;
+const OCR_SIZENS = 32645;
+const OCR_SIZEALL = 32646;
+const OCR_NO = 32648;
+const OCR_APPSTARTING = 32650;
+
+const OIC_SAMPLE = 32512;
+const OIC_HAND = 32513;
+const OIC_QUES = 32514;
+const OIC_BANG = 32515;
+const OIC_NOTE = 32516;
+const OIC_WINLOGO = 32517;
+const OIC_WARNING = OIC_BANG;
+const OIC_ERROR = OIC_HAND;
+const OIC_INFORMATION = OIC_NOTE;
+
+const HELPINFO_MENUITEM = 2;
+const HELPINFO_WINDOW = 1;
+
+const MSGF_DIALOGBOX = 0;
+const MSGF_MESSAGEBOX = 1;
+const MSGF_MENU = 2;
+const MSGF_MOVE = 3;
+const MSGF_SIZE = 4;
+const MSGF_SCROLLBAR = 5;
+const MSGF_NEXTWINDOW = 6;
+const MSGF_MAINLOOP = 8;
+const MSGF_USER = 4096;
+
+const MOUSEEVENTF_MOVE = 1;
+const MOUSEEVENTF_LEFTDOWN = 2;
+const MOUSEEVENTF_LEFTUP = 4;
+const MOUSEEVENTF_RIGHTDOWN = 8;
+const MOUSEEVENTF_RIGHTUP = 16;
+const MOUSEEVENTF_MIDDLEDOWN = 32;
+const MOUSEEVENTF_MIDDLEUP = 64;
+const MOUSEEVENTF_WHEEL = 0x0800;
+const MOUSEEVENTF_ABSOLUTE = 32768;
+
+const PM_NOREMOVE = 0;
+const PM_REMOVE = 1;
+const PM_NOYIELD = 2;
+
+static if (WINVER >= 0x500) {
+const PM_QS_INPUT = (QS_INPUT << 16);
+const PM_QS_POSTMESSAGE = ((QS_POSTMESSAGE|QS_HOTKEY|QS_TIMER) << 16);
+const PM_QS_PAINT = (QS_PAINT << 16);
+const PM_QS_SENDMESSAGE = (QS_SENDMESSAGE << 16);
+}
+const HWND
+	HWND_BROADCAST = cast(HWND)0xffff,
+	HWND_BOTTOM    = cast(HWND)1,
+	HWND_NOTOPMOST = cast(HWND)(-2),
+	HWND_TOP       = cast(HWND)0,
+	HWND_TOPMOST   = cast(HWND)(-1),
+	HWND_DESKTOP   = cast(HWND)0,
+	HWND_MESSAGE   = cast(HWND)(-3);// w2k
+
+const RDW_INVALIDATE      = 1;
+const RDW_INTERNALPAINT   = 2;
+const RDW_ERASE           = 4;
+const RDW_VALIDATE        = 8;
+const RDW_NOINTERNALPAINT = 16;
+const RDW_NOERASE         = 32;
+const RDW_NOCHILDREN      = 64;
+const RDW_ALLCHILDREN     = 128;
+const RDW_UPDATENOW       = 256;
+const RDW_ERASENOW        = 512;
+const RDW_FRAME           = 1024;
+const RDW_NOFRAME         = 2048;
+
+const SMTO_NORMAL      = 0;
+const SMTO_BLOCK       = 1;
+const SMTO_ABORTIFHUNG = 2;
+
+const SIF_ALL = 23;
+const SIF_PAGE = 2;
+const SIF_POS = 4;
+const SIF_RANGE = 1;
+const SIF_DISABLENOSCROLL = 8;
+const SIF_TRACKPOS = 16;
+
+const SWP_DRAWFRAME = 32;
+const SWP_FRAMECHANGED = 32;
+const SWP_HIDEWINDOW = 128;
+const SWP_NOACTIVATE = 16;
+const SWP_NOCOPYBITS = 256;
+const SWP_NOMOVE = 2;
+const SWP_NOSIZE = 1;
+const SWP_NOREDRAW = 8;
+const SWP_NOZORDER = 4;
+const SWP_SHOWWINDOW = 64;
+const SWP_NOOWNERZORDER = 512;
+const SWP_NOREPOSITION = 512;
+const SWP_NOSENDCHANGING = 1024;
+const SWP_DEFERERASE = 8192;
+const SWP_ASYNCWINDOWPOS = 16384;
+
+const HSHELL_ACTIVATESHELLWINDOW = 3;
+const HSHELL_GETMINRECT = 5;
+const HSHELL_LANGUAGE = 8;
+const HSHELL_REDRAW = 6;
+const HSHELL_TASKMAN = 7;
+const HSHELL_WINDOWACTIVATED = 4;
+const HSHELL_WINDOWCREATED = 1;
+const HSHELL_WINDOWDESTROYED = 2;
+const HSHELL_FLASH = 32774;
+
+static if (WINVER >= 0x500) {
+const SPI_SETFOREGROUNDLOCKTIMEOUT=0x2001;
+const SPI_GETFOREGROUNDLOCKTIMEOUT=0x2000;
+}
+
+const SPI_GETACCESSTIMEOUT=60;
+const SPI_GETACTIVEWNDTRKTIMEOUT=8194;
+const SPI_GETANIMATION=72;
+const SPI_GETBEEP=1;
+const SPI_GETBORDER=5;
+const SPI_GETDEFAULTINPUTLANG=89;
+const SPI_GETDRAGFULLWINDOWS=38;
+const SPI_GETFASTTASKSWITCH=35;
+const SPI_GETFILTERKEYS=50;
+const SPI_GETFONTSMOOTHING=74;
+const SPI_GETGRIDGRANULARITY=18;
+const SPI_GETHIGHCONTRAST=66;
+const SPI_GETICONMETRICS=45;
+const SPI_GETICONTITLELOGFONT=31;
+const SPI_GETICONTITLEWRAP=25;
+const SPI_GETKEYBOARDDELAY=22;
+const SPI_GETKEYBOARDPREF=68;
+const SPI_GETKEYBOARDSPEED=10;
+const SPI_GETLOWPOWERACTIVE=83;
+const SPI_GETLOWPOWERTIMEOUT=79;
+const SPI_GETMENUDROPALIGNMENT=27;
+const SPI_GETMINIMIZEDMETRICS=43;
+const SPI_GETMOUSE=3;
+const SPI_GETMOUSEKEYS=54;
+const SPI_GETMOUSETRAILS=94;
+const SPI_GETNONCLIENTMETRICS=41;
+const SPI_GETPOWEROFFACTIVE=84;
+const SPI_GETPOWEROFFTIMEOUT=80;
+const SPI_GETSCREENREADER=70;
+const SPI_GETSCREENSAVEACTIVE=16;
+const SPI_GETSCREENSAVETIMEOUT=14;
+const SPI_GETSERIALKEYS=62;
+const SPI_GETSHOWSOUNDS=56;
+const SPI_GETSOUNDSENTRY=64;
+const SPI_GETSTICKYKEYS=58;
+const SPI_GETTOGGLEKEYS=52;
+const SPI_GETWHEELSCROLLLINES=104;
+const SPI_GETWINDOWSEXTENSION=92;
+const SPI_GETWORKAREA=48;
+const SPI_ICONHORIZONTALSPACING=13;
+const SPI_ICONVERTICALSPACING=24;
+const SPI_LANGDRIVER=12;
+const SPI_SCREENSAVERRUNNING=97;
+const SPI_SETACCESSTIMEOUT=61;
+const SPI_SETACTIVEWNDTRKTIMEOUT=8195;
+const SPI_SETANIMATION=73;
+const SPI_SETBEEP=2;
+const SPI_SETBORDER=6;
+const SPI_SETDEFAULTINPUTLANG=90;
+const SPI_SETDESKPATTERN=21;
+const SPI_SETDESKWALLPAPER=20;
+const SPI_SETDOUBLECLICKTIME=32;
+const SPI_SETDOUBLECLKHEIGHT=30;
+const SPI_SETDOUBLECLKWIDTH=29;
+const SPI_SETDRAGFULLWINDOWS=37;
+const SPI_SETDRAGHEIGHT=77;
+const SPI_SETDRAGWIDTH=76;
+const SPI_SETFASTTASKSWITCH=36;
+const SPI_SETFILTERKEYS=51;
+const SPI_SETFONTSMOOTHING=75;
+const SPI_SETGRIDGRANULARITY=19;
+const SPI_SETHANDHELD=78;
+const SPI_SETHIGHCONTRAST=67;
+const SPI_SETICONMETRICS=46;
+const SPI_SETICONTITLELOGFONT=34;
+const SPI_SETICONTITLEWRAP=26;
+const SPI_SETKEYBOARDDELAY=23;
+const SPI_SETKEYBOARDPREF=69;
+const SPI_SETKEYBOARDSPEED=11;
+const SPI_SETLANGTOGGLE=91;
+const SPI_SETLOWPOWERACTIVE=85;
+const SPI_SETLOWPOWERTIMEOUT=81;
+const SPI_SETMENUDROPALIGNMENT=28;
+const SPI_SETMINIMIZEDMETRICS=44;
+const SPI_SETMOUSE=4;
+const SPI_SETMOUSEBUTTONSWAP=33;
+const SPI_SETMOUSEKEYS=55;
+const SPI_SETMOUSETRAILS=93;
+const SPI_SETNONCLIENTMETRICS=42;
+const SPI_SETPENWINDOWS=49;
+const SPI_SETPOWEROFFACTIVE=86;
+const SPI_SETPOWEROFFTIMEOUT=82;
+const SPI_SETSCREENREADER=71;
+const SPI_SETSCREENSAVEACTIVE=17;
+const SPI_SETSCREENSAVERRUNNING=97;
+const SPI_SETSCREENSAVETIMEOUT=15;
+const SPI_SETSERIALKEYS=63;
+const SPI_SETSHOWSOUNDS=57;
+const SPI_SETSOUNDSENTRY=65;
+const SPI_SETSTICKYKEYS=59;
+const SPI_SETTOGGLEKEYS=53;
+const SPI_SETWHEELSCROLLLINES=105;
+const SPI_SETWORKAREA=47;
+
+static if (WINVER >= 0x500) {
+const SPI_GETDESKWALLPAPER=115;
+const SPI_GETMOUSESPEED=112;
+const SPI_GETSCREENSAVERRUNNING=114;
+const SPI_GETACTIVEWINDOWTRACKING=0x1000;
+const SPI_GETACTIVEWNDTRKZORDER=0x100C;
+const SPI_GETCOMBOBOXANIMATION=0x1004;
+const SPI_GETCURSORSHADOW=0x101A;
+const SPI_GETGRADIENTCAPTIONS=0x1008;
+const SPI_GETHOTTRACKING=0x100E;
+const SPI_GETKEYBOARDCUES=0x100A;
+const SPI_GETLISTBOXSMOOTHSCROLLING=0x1006;
+const SPI_GETMENUANIMATION=0x1002;
+const SPI_GETMENUFADE=0x1012;
+const SPI_GETMENUUNDERLINES=0x100A;
+const SPI_GETSELECTIONFADE=0x1014;
+const SPI_GETTOOLTIPANIMATION=0x1016;
+const SPI_GETTOOLTIPFADE=0x1018;
+const SPI_SETACTIVEWINDOWTRACKING=0x1001;
+const SPI_SETACTIVEWNDTRKZORDER=0x100D;
+const SPI_SETCOMBOBOXANIMATION=0x1005;
+const SPI_SETCURSORSHADOW=0x101B;
+const SPI_SETGRADIENTCAPTIONS=0x1009;
+const SPI_SETHOTTRACKING=0x100F;
+const SPI_SETKEYBOARDCUES=0x100B;
+const SPI_SETLISTBOXSMOOTHSCROLLING=0x1007;
+const SPI_SETMENUANIMATION=0x1003;
+const SPI_SETMENUFADE=0x1013;
+const SPI_SETMENUUNDERLINES=0x100B;
+const SPI_SETMOUSESPEED=113;
+const SPI_SETSELECTIONFADE=0x1015;
+const SPI_SETTOOLTIPANIMATION=0x1017;
+const SPI_SETTOOLTIPFADE=0x1019;
+}
+
+const SPIF_UPDATEINIFILE=1;
+const SPIF_SENDWININICHANGE=2;
+const SPIF_SENDCHANGE=2;
+// [Redefined] ATF_ONOFFFEEDBACK=2
+// [Redefined] ATF_TIMEOUTON=1
+const WM_APP=32768;
+const WM_ACTIVATE=6;
+const WM_ACTIVATEAPP=28;
+// FIXME/CHECK: Are WM_AFX {FIRST, LAST} valid for WINVER < 0x400?
+const WM_AFXFIRST=864;
+const WM_AFXLAST=895;
+const WM_ASKCBFORMATNAME=780;
+const WM_CANCELJOURNAL=75;
+const WM_CANCELMODE=31;
+const WM_CAPTURECHANGED=533;
+const WM_CHANGECBCHAIN=781;
+const WM_CHAR=258;
+const WM_CHARTOITEM=47;
+const WM_CHILDACTIVATE=34;
+const WM_CLEAR=771;
+const WM_CLOSE=16;
+const WM_COMMAND=273;
+const WM_COMMNOTIFY=68; // obsolete
+const WM_COMPACTING=65;
+const WM_COMPAREITEM=57;
+const WM_CONTEXTMENU=123;
+const WM_COPY=769;
+const WM_COPYDATA=74;
+const WM_CREATE=1;
+const WM_CTLCOLORBTN=309;
+const WM_CTLCOLORDLG=310;
+const WM_CTLCOLOREDIT=307;
+const WM_CTLCOLORLISTBOX=308;
+const WM_CTLCOLORMSGBOX=306;
+const WM_CTLCOLORSCROLLBAR=311;
+const WM_CTLCOLORSTATIC=312;
+const WM_CUT=768;
+const WM_DEADCHAR=259;
+const WM_DELETEITEM=45;
+const WM_DESTROY=2;
+const WM_DESTROYCLIPBOARD=775;
+const WM_DEVICECHANGE=537;
+const WM_DEVMODECHANGE=27;
+const WM_DISPLAYCHANGE=126;
+const WM_DRAWCLIPBOARD=776;
+const WM_DRAWITEM=43;
+const WM_DROPFILES=563;
+const WM_ENABLE=10;
+const WM_ENDSESSION=22;
+const WM_ENTERIDLE=289;
+const WM_ENTERMENULOOP=529;
+const WM_ENTERSIZEMOVE=561;
+const WM_ERASEBKGND=20;
+const WM_EXITMENULOOP=530;
+const WM_EXITSIZEMOVE=562;
+const WM_FONTCHANGE=29;
+const WM_GETDLGCODE=135;
+const WM_GETFONT=49;
+const WM_GETHOTKEY=51;
+const WM_GETICON=127;
+const WM_GETMINMAXINFO=36;
+const WM_GETTEXT=13;
+const WM_GETTEXTLENGTH=14;
+const WM_HANDHELDFIRST=856;
+const WM_HANDHELDLAST=863;
+const WM_HELP=83;
+const WM_HOTKEY=786;
+const WM_HSCROLL=276;
+const WM_HSCROLLCLIPBOARD=782;
+const WM_ICONERASEBKGND=39;
+const WM_INITDIALOG=272;
+const WM_INITMENU=278;
+const WM_INITMENUPOPUP=279;
+const WM_INPUTLANGCHANGE=81;
+const WM_INPUTLANGCHANGEREQUEST=80;
+const WM_KEYDOWN=256;
+const WM_KEYUP=257;
+const WM_KILLFOCUS=8;
+const WM_MDIACTIVATE=546;
+const WM_MDICASCADE=551;
+const WM_MDICREATE=544;
+const WM_MDIDESTROY=545;
+const WM_MDIGETACTIVE=553;
+const WM_MDIICONARRANGE=552;
+const WM_MDIMAXIMIZE=549;
+const WM_MDINEXT=548;
+const WM_MDIREFRESHMENU=564;
+const WM_MDIRESTORE=547;
+const WM_MDISETMENU=560;
+const WM_MDITILE=550;
+const WM_MEASUREITEM=44;
+static if (WINVER >= 0x500) {
+const WM_UNINITMENUPOPUP=0x0125;
+const WM_MENURBUTTONUP=290;
+const WM_MENUCOMMAND=0x0126;
+const WM_MENUGETOBJECT=0x0124;
+const WM_MENUDRAG=0x0123;
+}
+
+static if (_WIN32_WINNT >= 0x500) {
+
+	enum {
+		WM_CHANGEUISTATE	=	0x0127,
+		WM_UPDATEUISTATE	=	0x0128,
+		WM_QUERYUISTATE		=	0x0129
+	}
+
+	// LOWORD(wParam) values in WM_*UISTATE*
+	enum {
+		UIS_SET			=	1,
+		UIS_CLEAR		=	2,
+		UIS_INITIALIZE	=	3
+	}
+
+	// HIWORD(wParam) values in WM_*UISTATE*
+	enum {
+		UISF_HIDEFOCUS	=	0x1,
+		UISF_HIDEACCEL	=	0x2
+	}
+
+}
+
+static if (_WIN32_WINNT >= 0x501) {
+
+	// HIWORD(wParam) values in WM_*UISTATE*
+	enum {
+		UISF_ACTIVE		=	0x4
+	}
+
+}
+
+const WM_MENUCHAR=288;
+const WM_MENUSELECT=287;
+const WM_MOVE=3;
+const WM_MOVING=534;
+const WM_NCACTIVATE=134;
+const WM_NCCALCSIZE=131;
+const WM_NCCREATE=129;
+const WM_NCDESTROY=130;
+const WM_NCHITTEST=132;
+const WM_NCLBUTTONDBLCLK=163;
+const WM_NCLBUTTONDOWN=161;
+const WM_NCLBUTTONUP=162;
+const WM_NCMBUTTONDBLCLK=169;
+const WM_NCMBUTTONDOWN=167;
+const WM_NCMBUTTONUP=168;
+static if (_WIN32_WINNT >= 0x500) {
+const WM_NCXBUTTONDOWN=171;
+const WM_NCXBUTTONUP=172;
+const WM_NCXBUTTONDBLCLK=173;
+const WM_NCMOUSEHOVER=0x02A0;
+const WM_NCMOUSELEAVE=0x02A2;
+}
+const WM_NCMOUSEMOVE=160;
+const WM_NCPAINT=133;
+const WM_NCRBUTTONDBLCLK=166;
+const WM_NCRBUTTONDOWN=164;
+const WM_NCRBUTTONUP=165;
+const WM_NEXTDLGCTL=40;
+const WM_NEXTMENU=531;
+const WM_NOTIFY=78;
+const WM_NOTIFYFORMAT=85;
+const WM_NULL=0;
+const WM_PAINT=15;
+const WM_PAINTCLIPBOARD=777;
+const WM_PAINTICON=38;
+const WM_PALETTECHANGED=785;
+const WM_PALETTEISCHANGING=784;
+const WM_PARENTNOTIFY=528;
+const WM_PASTE=770;
+const WM_PENWINFIRST=896;
+const WM_PENWINLAST=911;
+const WM_POWER=72;
+const WM_POWERBROADCAST=536;
+const WM_PRINT=791;
+const WM_PRINTCLIENT=792;
+const WM_APPCOMMAND = 0x0319;
+const WM_QUERYDRAGICON=55;
+const WM_QUERYENDSESSION=17;
+const WM_QUERYNEWPALETTE=783;
+const WM_QUERYOPEN=19;
+const WM_QUEUESYNC=35;
+const WM_QUIT=18;
+const WM_RENDERALLFORMATS=774;
+const WM_RENDERFORMAT=773;
+const WM_SETCURSOR=32;
+const WM_SETFOCUS=7;
+const WM_SETFONT=48;
+const WM_SETHOTKEY=50;
+const WM_SETICON=128;
+const WM_SETREDRAW=11;
+const WM_SETTEXT=12;
+const WM_SETTINGCHANGE=26;
+const WM_SHOWWINDOW=24;
+const WM_SIZE=5;
+const WM_SIZECLIPBOARD=779;
+const WM_SIZING=532;
+const WM_SPOOLERSTATUS=42;
+const WM_STYLECHANGED=125;
+const WM_STYLECHANGING=124;
+const WM_SYSCHAR=262;
+const WM_SYSCOLORCHANGE=21;
+const WM_SYSCOMMAND=274;
+const WM_SYSDEADCHAR=263;
+const WM_SYSKEYDOWN=260;
+const WM_SYSKEYUP=261;
+const WM_TCARD=82;
+const WM_THEMECHANGED=794;
+const WM_TIMECHANGE=30;
+const WM_TIMER=275;
+const WM_UNDO=772;
+const WM_USER=1024;
+const WM_USERCHANGED=84;
+const WM_VKEYTOITEM=46;
+const WM_VSCROLL=277;
+const WM_VSCROLLCLIPBOARD=778;
+const WM_WINDOWPOSCHANGED=71;
+const WM_WINDOWPOSCHANGING=70;
+const WM_WININICHANGE=26;
+const WM_INPUT=255;
+const WM_KEYFIRST=256;
+const WM_KEYLAST=264;
+const WM_SYNCPAINT=136;
+const WM_MOUSEACTIVATE=33;
+const WM_MOUSEMOVE=512;
+const WM_LBUTTONDOWN=513;
+const WM_LBUTTONUP=514;
+const WM_LBUTTONDBLCLK=515;
+const WM_RBUTTONDOWN=516;
+const WM_RBUTTONUP=517;
+const WM_RBUTTONDBLCLK=518;
+const WM_MBUTTONDOWN=519;
+const WM_MBUTTONUP=520;
+const WM_MBUTTONDBLCLK=521;
+const WM_MOUSEWHEEL=522;
+const WM_MOUSEFIRST=512;
+static if (_WIN32_WINNT >= 0x500) {
+const WM_XBUTTONDOWN=523;
+const WM_XBUTTONUP=524;
+const WM_XBUTTONDBLCLK=525;
+const WM_MOUSELAST=525;
+} else {
+const WM_MOUSELAST=522;
+}
+const WM_MOUSEHOVER=0x2A1;
+const WM_MOUSELEAVE=0x2A3;
+static if (_WIN32_WINNT >= 0x400) {
+const WHEEL_DELTA=120;
+
+SHORT GET_WHEEL_DELTA_WPARAM(WPARAM wparam)
+{
+return cast(SHORT) HIWORD(wparam);
+}
+
+const WHEEL_PAGESCROLL = uint.max;
+}
+const BM_CLICK=245;
+const BM_GETCHECK=240;
+const BM_GETIMAGE=246;
+const BM_GETSTATE=242;
+const BM_SETCHECK=241;
+const BM_SETIMAGE=247;
+const BM_SETSTATE=243;
+const BM_SETSTYLE=244;
+const BN_CLICKED=0;
+const BN_DBLCLK=5;
+const BN_DISABLE=4;
+const BN_DOUBLECLICKED=5;
+const BN_HILITE=2;
+const BN_KILLFOCUS=7;
+const BN_PAINT=1;
+const BN_PUSHED=2;
+const BN_SETFOCUS=6;
+const BN_UNHILITE=3;
+const BN_UNPUSHED=3;
+const CB_ADDSTRING=323;
+const CB_DELETESTRING=324;
+const CB_DIR=325;
+const CB_FINDSTRING=332;
+const CB_FINDSTRINGEXACT=344;
+const CB_GETCOUNT=326;
+const CB_GETCURSEL=327;
+const CB_GETDROPPEDCONTROLRECT=338;
+const CB_GETDROPPEDSTATE=343;
+const CB_GETDROPPEDWIDTH=351;
+const CB_GETEDITSEL=320;
+const CB_GETEXTENDEDUI=342;
+const CB_GETHORIZONTALEXTENT=349;
+const CB_GETITEMDATA=336;
+const CB_GETITEMHEIGHT=340;
+const CB_GETLBTEXT=328;
+const CB_GETLBTEXTLEN=329;
+const CB_GETLOCALE=346;
+const CB_GETTOPINDEX=347;
+const CB_INITSTORAGE=353;
+const CB_INSERTSTRING=330;
+const CB_LIMITTEXT=321;
+const CB_RESETCONTENT=331;
+const CB_SELECTSTRING=333;
+const CB_SETCURSEL=334;
+const CB_SETDROPPEDWIDTH=352;
+const CB_SETEDITSEL=322;
+const CB_SETEXTENDEDUI=341;
+const CB_SETHORIZONTALEXTENT=350;
+const CB_SETITEMDATA=337;
+const CB_SETITEMHEIGHT=339;
+const CB_SETLOCALE=345;
+const CB_SETTOPINDEX=348;
+const CB_SHOWDROPDOWN=335;
+
+const CBN_CLOSEUP=8;
+const CBN_DBLCLK=2;
+const CBN_DROPDOWN=7;
+const CBN_EDITCHANGE=5;
+const CBN_EDITUPDATE=6;
+const CBN_ERRSPACE=(-1);
+const CBN_KILLFOCUS=4;
+const CBN_SELCHANGE=1;
+const CBN_SELENDCANCEL=10;
+const CBN_SELENDOK=9;
+const CBN_SETFOCUS=3;
+
+const EM_CANUNDO=198;
+const EM_CHARFROMPOS=215;
+const EM_EMPTYUNDOBUFFER=205;
+const EM_FMTLINES=200;
+const EM_GETFIRSTVISIBLELINE=206;
+const EM_GETHANDLE=189;
+const EM_GETLIMITTEXT=213;
+const EM_GETLINE=196;
+const EM_GETLINECOUNT=186;
+const EM_GETMARGINS=212;
+const EM_GETMODIFY=184;
+const EM_GETPASSWORDCHAR=210;
+const EM_GETRECT=178;
+const EM_GETSEL=176;
+const EM_GETTHUMB=190;
+const EM_GETWORDBREAKPROC=209;
+const EM_LIMITTEXT=197;
+const EM_LINEFROMCHAR=201;
+const EM_LINEINDEX=187;
+const EM_LINELENGTH=193;
+const EM_LINESCROLL=182;
+const EM_POSFROMCHAR=214;
+const EM_REPLACESEL=194;
+const EM_SCROLL=181;
+const EM_SCROLLCARET=183;
+const EM_SETHANDLE=188;
+const EM_SETLIMITTEXT=197;
+const EM_SETMARGINS=211;
+const EM_SETMODIFY=185;
+const EM_SETPASSWORDCHAR=204;
+const EM_SETREADONLY=207;
+const EM_SETRECT=179;
+const EM_SETRECTNP=180;
+const EM_SETSEL=177;
+const EM_SETTABSTOPS=203;
+const EM_SETWORDBREAKPROC=208;
+const EM_UNDO=199;
+
+const EN_CHANGE=768;
+const EN_ERRSPACE=1280;
+const EN_HSCROLL=1537;
+const EN_KILLFOCUS=512;
+const EN_MAXTEXT=1281;
+const EN_SETFOCUS=256;
+const EN_UPDATE=1024;
+const EN_VSCROLL=1538;
+
+const LB_ADDFILE=406;
+const LB_ADDSTRING=384;
+const LB_DELETESTRING=386;
+const LB_DIR=397;
+const LB_FINDSTRING=399;
+const LB_FINDSTRINGEXACT=418;
+const LB_GETANCHORINDEX=413;
+const LB_GETCARETINDEX=415;
+const LB_GETCOUNT=395;
+const LB_GETCURSEL=392;
+const LB_GETHORIZONTALEXTENT=403;
+const LB_GETITEMDATA=409;
+const LB_GETITEMHEIGHT=417;
+const LB_GETITEMRECT=408;
+const LB_GETLOCALE=422;
+const LB_GETSEL=391;
+const LB_GETSELCOUNT=400;
+const LB_GETSELITEMS=401;
+const LB_GETTEXT=393;
+const LB_GETTEXTLEN=394;
+const LB_GETTOPINDEX=398;
+const LB_INITSTORAGE=424;
+const LB_INSERTSTRING=385;
+const LB_ITEMFROMPOINT=425;
+const LB_RESETCONTENT=388;
+const LB_SELECTSTRING=396;
+const LB_SELITEMRANGE=411;
+const LB_SELITEMRANGEEX=387;
+const LB_SETANCHORINDEX=412;
+const LB_SETCARETINDEX=414;
+const LB_SETCOLUMNWIDTH=405;
+const LB_SETCOUNT=423;
+const LB_SETCURSEL=390;
+const LB_SETHORIZONTALEXTENT=404;
+const LB_SETITEMDATA=410;
+const LB_SETITEMHEIGHT=416;
+const LB_SETLOCALE=421;
+const LB_SETSEL=389;
+const LB_SETTABSTOPS=402;
+const LB_SETTOPINDEX=407;
+
+const LBN_DBLCLK=2;
+const LBN_ERRSPACE=-2;
+const LBN_KILLFOCUS=5;
+const LBN_SELCANCEL=3;
+const LBN_SELCHANGE=1;
+const LBN_SETFOCUS=4;
+
+const SBM_ENABLE_ARROWS=228;
+const SBM_GETPOS=225;
+const SBM_GETRANGE=227;
+const SBM_GETSCROLLINFO=234;
+const SBM_SETPOS=224;
+const SBM_SETRANGE=226;
+const SBM_SETRANGEREDRAW=230;
+const SBM_SETSCROLLINFO=233;
+const STM_GETICON=369;
+const STM_GETIMAGE=371;
+const STM_SETICON=368;
+const STM_SETIMAGE=370;
+const STN_CLICKED=0;
+const STN_DBLCLK=1;
+const STN_DISABLE=3;
+const STN_ENABLE=2;
+
+const DM_GETDEFID   = WM_USER;
+const DM_SETDEFID   = WM_USER+1;
+const DM_REPOSITION = WM_USER+2;
+
+const PSM_PAGEINFO  = WM_USER+100;
+const PSM_SHEETINFO = WM_USER+101;
+
+const PSI_SETACTIVE=1;
+const PSI_KILLACTIVE=2;
+const PSI_APPLY=3;
+const PSI_RESET=4;
+const PSI_HASHELP=5;
+const PSI_HELP=6;
+const PSI_CHANGED=1;
+const PSI_GUISTART=2;
+const PSI_REBOOT=3;
+const PSI_GETSIBLINGS=4;
+
+const DCX_WINDOW=1;
+const DCX_CACHE=2;
+const DCX_PARENTCLIP=32;
+const DCX_CLIPSIBLINGS=16;
+const DCX_CLIPCHILDREN=8;
+const DCX_NORESETATTRS=4;
+const DCX_INTERSECTUPDATE=0x200;
+const DCX_LOCKWINDOWUPDATE=0x400;
+const DCX_EXCLUDERGN=64;
+const DCX_INTERSECTRGN=128;
+const DCX_VALIDATE=0x200000;
+
+const GMDI_GOINTOPOPUPS=2;
+const GMDI_USEDISABLED=1;
+const FKF_AVAILABLE=2;
+const FKF_CLICKON=64;
+const FKF_FILTERKEYSON=1;
+const FKF_HOTKEYACTIVE=4;
+const FKF_HOTKEYSOUND=16;
+const FKF_CONFIRMHOTKEY=8;
+const FKF_INDICATOR=32;
+const HCF_HIGHCONTRASTON=1;
+const HCF_AVAILABLE=2;
+const HCF_HOTKEYACTIVE=4;
+const HCF_CONFIRMHOTKEY=8;
+const HCF_HOTKEYSOUND=16;
+const HCF_INDICATOR=32;
+const HCF_HOTKEYAVAILABLE=64;
+const MKF_AVAILABLE=2;
+const MKF_CONFIRMHOTKEY=8;
+const MKF_HOTKEYACTIVE=4;
+const MKF_HOTKEYSOUND=16;
+const MKF_INDICATOR=32;
+const MKF_MOUSEKEYSON=1;
+const MKF_MODIFIERS=64;
+const MKF_REPLACENUMBERS=128;
+const SERKF_ACTIVE=8;  // May be obsolete. Not in recent MS docs.
+const SERKF_AVAILABLE=2;
+const SERKF_INDICATOR=4;
+const SERKF_SERIALKEYSON=1;
+const SSF_AVAILABLE=2;
+const SSF_SOUNDSENTRYON=1;
+const SSTF_BORDER=2;
+const SSTF_CHARS=1;
+const SSTF_DISPLAY=3;
+const SSTF_NONE=0;
+const SSGF_DISPLAY=3;
+const SSGF_NONE=0;
+const SSWF_CUSTOM=4;
+const SSWF_DISPLAY=3;
+const SSWF_NONE=0;
+const SSWF_TITLE=1;
+const SSWF_WINDOW=2;
+const SKF_AUDIBLEFEEDBACK=64;
+const SKF_AVAILABLE=2;
+const SKF_CONFIRMHOTKEY=8;
+const SKF_HOTKEYACTIVE=4;
+const SKF_HOTKEYSOUND=16;
+const SKF_INDICATOR=32;
+const SKF_STICKYKEYSON=1;
+const SKF_TRISTATE=128;
+const SKF_TWOKEYSOFF=256;
+const TKF_AVAILABLE=2;
+const TKF_CONFIRMHOTKEY=8;
+const TKF_HOTKEYACTIVE=4;
+const TKF_HOTKEYSOUND=16;
+const TKF_TOGGLEKEYSON=1;
+const MDITILE_SKIPDISABLED=2;
+const MDITILE_HORIZONTAL=1;
+const MDITILE_VERTICAL=0;
+
+enum {
+	VK_LBUTTON = 0x01,
+	VK_RBUTTON = 0x02,
+	VK_CANCEL = 0x03,
+	VK_MBUTTON = 0x04,
+	//static if (_WIN32_WINNT > =  0x500) {
+	VK_XBUTTON1 = 0x05,
+	VK_XBUTTON2 = 0x06,
+	//}
+	VK_BACK = 0x08,
+	VK_TAB = 0x09,
+	VK_CLEAR = 0x0C,
+	VK_RETURN = 0x0D,
+	VK_SHIFT = 0x10,
+	VK_CONTROL = 0x11,
+	VK_MENU = 0x12,
+	VK_PAUSE = 0x13,
+	VK_CAPITAL = 0x14,
+	VK_KANA = 0x15,
+	VK_HANGEUL = 0x15,
+	VK_HANGUL = 0x15,
+	VK_JUNJA = 0x17,
+	VK_FINAL = 0x18,
+	VK_HANJA = 0x19,
+	VK_KANJI = 0x19,
+	VK_ESCAPE = 0x1B,
+	VK_CONVERT = 0x1C,
+	VK_NONCONVERT = 0x1D,
+	VK_ACCEPT = 0x1E,
+	VK_MODECHANGE = 0x1F,
+	VK_SPACE = 0x20,
+	VK_PRIOR = 0x21,
+	VK_NEXT = 0x22,
+	VK_END = 0x23,
+	VK_HOME = 0x24,
+	VK_LEFT = 0x25,
+	VK_UP = 0x26,
+	VK_RIGHT = 0x27,
+	VK_DOWN = 0x28,
+	VK_SELECT = 0x29,
+	VK_PRINT = 0x2A,
+	VK_EXECUTE = 0x2B,
+	VK_SNAPSHOT = 0x2C,
+	VK_INSERT = 0x2D,
+	VK_DELETE = 0x2E,
+	VK_HELP = 0x2F,
+	VK_LWIN = 0x5B,
+	VK_RWIN = 0x5C,
+	VK_APPS = 0x5D,
+	VK_SLEEP = 0x5F,
+	VK_NUMPAD0 = 0x60,
+	VK_NUMPAD1 = 0x61,
+	VK_NUMPAD2 = 0x62,
+	VK_NUMPAD3 = 0x63,
+	VK_NUMPAD4 = 0x64,
+	VK_NUMPAD5 = 0x65,
+	VK_NUMPAD6 = 0x66,
+	VK_NUMPAD7 = 0x67,
+	VK_NUMPAD8 = 0x68,
+	VK_NUMPAD9 = 0x69,
+	VK_MULTIPLY = 0x6A,
+	VK_ADD = 0x6B,
+	VK_SEPARATOR = 0x6C,
+	VK_SUBTRACT = 0x6D,
+	VK_DECIMAL = 0x6E,
+	VK_DIVIDE = 0x6F,
+	VK_F1 = 0x70,
+	VK_F2 = 0x71,
+	VK_F3 = 0x72,
+	VK_F4 = 0x73,
+	VK_F5 = 0x74,
+	VK_F6 = 0x75,
+	VK_F7 = 0x76,
+	VK_F8 = 0x77,
+	VK_F9 = 0x78,
+	VK_F10 = 0x79,
+	VK_F11 = 0x7A,
+	VK_F12 = 0x7B,
+	VK_F13 = 0x7C,
+	VK_F14 = 0x7D,
+	VK_F15 = 0x7E,
+	VK_F16 = 0x7F,
+	VK_F17 = 0x80,
+	VK_F18 = 0x81,
+	VK_F19 = 0x82,
+	VK_F20 = 0x83,
+	VK_F21 = 0x84,
+	VK_F22 = 0x85,
+	VK_F23 = 0x86,
+	VK_F24 = 0x87,
+	VK_NUMLOCK = 0x90,
+	VK_SCROLL = 0x91,
+	VK_LSHIFT = 0xA0,
+	VK_RSHIFT = 0xA1,
+	VK_LCONTROL = 0xA2,
+	VK_RCONTROL = 0xA3,
+	VK_LMENU = 0xA4,
+	VK_RMENU = 0xA5,
+	//static if (_WIN32_WINNT > =  0x500) {
+	VK_BROWSER_BACK = 0xA6,
+	VK_BROWSER_FORWARD = 0xA7,
+	VK_BROWSER_REFRESH = 0xA8,
+	VK_BROWSER_STOP = 0xA9,
+	VK_BROWSER_SEARCH = 0xAA,
+	VK_BROWSER_FAVORITES = 0xAB,
+	VK_BROWSER_HOME = 0xAC,
+	VK_VOLUME_MUTE = 0xAD,
+	VK_VOLUME_DOWN = 0xAE,
+	VK_VOLUME_UP = 0xAF,
+	VK_MEDIA_NEXT_TRACK = 0xB0,
+	VK_MEDIA_PREV_TRACK = 0xB1,
+	VK_MEDIA_STOP = 0xB2,
+	VK_MEDIA_PLAY_PAUSE = 0xB3,
+	VK_LAUNCH_MAIL = 0xB4,
+	VK_LAUNCH_MEDIA_SELECT = 0xB5,
+	VK_LAUNCH_APP1 = 0xB6,
+	VK_LAUNCH_APP2 = 0xB7,
+	//}
+	VK_OEM_1 = 0xBA,
+	//static if (_WIN32_WINNT > =  0x500) {
+	VK_OEM_PLUS = 0xBB,
+	VK_OEM_COMMA = 0xBC,
+	VK_OEM_MINUS = 0xBD,
+	VK_OEM_PERIOD = 0xBE,
+	//}
+	VK_OEM_2 = 0xBF,
+	VK_OEM_3 = 0xC0,
+	VK_OEM_4 = 0xDB,
+	VK_OEM_5 = 0xDC,
+	VK_OEM_6 = 0xDD,
+	VK_OEM_7 = 0xDE,
+	VK_OEM_8 = 0xDF,
+	//static if (_WIN32_WINNT > =  0x500) {
+	VK_OEM_102 = 0xE2,
+	//}
+	VK_PROCESSKEY = 0xE5,
+	//static if (_WIN32_WINNT > =  0x500) {
+	VK_PACKET = 0xE7,
+	//}
+	VK_ATTN = 0xF6,
+	VK_CRSEL = 0xF7,
+	VK_EXSEL = 0xF8,
+	VK_EREOF = 0xF9,
+	VK_PLAY = 0xFA,
+	VK_ZOOM = 0xFB,
+	VK_NONAME = 0xFC,
+	VK_PA1 = 0xFD,
+	VK_OEM_CLEAR = 0xFE,
+}
+
+const TME_HOVER=1;
+const TME_LEAVE=2;
+const TME_QUERY=0x40000000;
+const TME_CANCEL=0x80000000;
+
+const HOVER_DEFAULT=0xFFFFFFFF;
+
+const MK_LBUTTON=1;
+const MK_RBUTTON=2;
+const MK_SHIFT=4;
+const MK_CONTROL=8;
+const MK_MBUTTON=16;
+static if (_WIN32_WINNT >= 0x500) {
+const MK_XBUTTON1=32;
+const MK_XBUTTON2=64;
+}
+const TPM_CENTERALIGN=4;
+const TPM_LEFTALIGN=0;
+const TPM_RIGHTALIGN=8;
+const TPM_LEFTBUTTON=0;
+const TPM_RIGHTBUTTON=2;
+const TPM_HORIZONTAL=0;
+const TPM_VERTICAL=64;
+const TPM_TOPALIGN=0;
+const TPM_VCENTERALIGN=16;
+const TPM_BOTTOMALIGN=32;
+const TPM_NONOTIFY=128;
+const TPM_RETURNCMD=256;
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+const TPM_RECURSE=1;
+}
+
+const HELP_COMMAND=0x102;
+const HELP_CONTENTS=3;
+const HELP_CONTEXT=1;
+const HELP_CONTEXTPOPUP=8;
+const HELP_FORCEFILE=9;
+const HELP_HELPONHELP=4;
+const HELP_INDEX=3;
+const HELP_KEY=0x101;
+const HELP_MULTIKEY=0x201;
+const HELP_PARTIALKEY=0x105;
+const HELP_QUIT=2;
+const HELP_SETCONTENTS=5;
+const HELP_SETINDEX=5;
+const HELP_SETWINPOS=0x203;
+const HELP_CONTEXTMENU=0xa;
+const HELP_FINDER=0xb;
+const HELP_WM_HELP=0xc;
+const HELP_TCARD=0x8000;
+const HELP_TCARD_DATA=16;
+const HELP_TCARD_OTHER_CALLER=0x11;
+
+const IDH_NO_HELP=28440;
+const IDH_MISSING_CONTEXT=28441;
+const IDH_GENERIC_HELP_BUTTON=28442;
+const IDH_OK=28443;
+const IDH_CANCEL=28444;
+const IDH_HELP=28445;
+
+const LB_CTLCODE=0;
+const LB_OKAY=0;
+const LB_ERR=-1;
+const LB_ERRSPACE=-2;
+
+const CB_OKAY=0;
+const CB_ERR=-1;
+const CB_ERRSPACE=-2;
+
+const HIDE_WINDOW=0;
+
+const SHOW_OPENWINDOW=1;
+const SHOW_ICONWINDOW=2;
+const SHOW_FULLSCREEN=3;
+const SHOW_OPENNOACTIVATE=4;
+
+const SW_PARENTCLOSING=1;
+const SW_OTHERZOOM=2;
+const SW_PARENTOPENING=3;
+const SW_OTHERUNZOOM=4;
+
+const KF_EXTENDED=256;
+const KF_DLGMODE=2048;
+const KF_MENUMODE=4096;
+const KF_ALTDOWN=8192;
+const KF_REPEAT=16384;
+const KF_UP=32768;
+
+const WSF_VISIBLE=1;
+
+const PWR_OK=1;
+const PWR_FAIL=-1;
+const PWR_SUSPENDREQUEST=1;
+const PWR_SUSPENDRESUME=2;
+const PWR_CRITICALRESUME=3;
+
+const NFR_ANSI=1;
+const NFR_UNICODE=2;
+const NF_QUERY=3;
+const NF_REQUERY=4;
+
+const MENULOOP_WINDOW=0;
+const MENULOOP_POPUP=1;
+
+const WMSZ_LEFT=1;
+const WMSZ_RIGHT=2;
+const WMSZ_TOP=3;
+const WMSZ_TOPLEFT=4;
+const WMSZ_TOPRIGHT=5;
+const WMSZ_BOTTOM=6;
+const WMSZ_BOTTOMLEFT=7;
+const WMSZ_BOTTOMRIGHT=8;
+
+const HTERROR=-2;
+const HTTRANSPARENT=-1;
+const HTNOWHERE=0;
+const HTCLIENT=1;
+const HTCAPTION=2;
+const HTSYSMENU=3;
+const HTGROWBOX=4;
+const HTSIZE=4;
+const HTMENU=5;
+const HTHSCROLL=6;
+const HTVSCROLL=7;
+const HTMINBUTTON=8;
+const HTMAXBUTTON=9;
+const HTREDUCE=8;
+const HTZOOM=9;
+const HTLEFT=10;
+const HTSIZEFIRST=10;
+const HTRIGHT=11;
+const HTTOP=12;
+const HTTOPLEFT=13;
+const HTTOPRIGHT=14;
+const HTBOTTOM=15;
+const HTBOTTOMLEFT=16;
+const HTBOTTOMRIGHT=17;
+const HTSIZELAST=17;
+const HTBORDER=18;
+const HTOBJECT=19;
+const HTCLOSE=20;
+const HTHELP=21;
+
+const MA_ACTIVATE=1;
+const MA_ACTIVATEANDEAT=2;
+const MA_NOACTIVATE=3;
+const MA_NOACTIVATEANDEAT=4;
+
+const SIZE_RESTORED=0;
+const SIZE_MINIMIZED=1;
+const SIZE_MAXIMIZED=2;
+const SIZE_MAXSHOW=3;
+const SIZE_MAXHIDE=4;
+
+const SIZENORMAL=0;
+const SIZEICONIC=1;
+const SIZEFULLSCREEN=2;
+const SIZEZOOMSHOW=3;
+const SIZEZOOMHIDE=4;
+
+const WVR_ALIGNTOP=16;
+const WVR_ALIGNLEFT=32;
+const WVR_ALIGNBOTTOM=64;
+const WVR_ALIGNRIGHT=128;
+const WVR_HREDRAW=256;
+const WVR_VREDRAW=512;
+const WVR_REDRAW=(WVR_HREDRAW|WVR_VREDRAW);
+const WVR_VALIDRECTS=1024;
+
+const PRF_CHECKVISIBLE=1;
+const PRF_NONCLIENT=2;
+const PRF_CLIENT=4;
+const PRF_ERASEBKGND=8;
+const PRF_CHILDREN=16;
+const PRF_OWNED=32;
+
+const IDANI_OPEN=1;
+const IDANI_CLOSE=2;
+const IDANI_CAPTION=3;
+
+const WPF_RESTORETOMAXIMIZED=2;
+const WPF_SETMINPOSITION=1;
+
+const ODT_MENU=1;
+const ODT_LISTBOX=2;
+const ODT_COMBOBOX=3;
+const ODT_BUTTON=4;
+const ODT_STATIC=5;
+const ODA_DRAWENTIRE=1;
+const ODA_SELECT=2;
+const ODA_FOCUS=4;
+const ODS_SELECTED=1;
+const ODS_GRAYED=2;
+const ODS_DISABLED=4;
+const ODS_CHECKED=8;
+const ODS_FOCUS=16;
+const ODS_DEFAULT=32;
+const ODS_COMBOBOXEDIT=4096;
+
+const IDHOT_SNAPWINDOW=-1;
+const IDHOT_SNAPDESKTOP=-2;
+
+const DBWF_LPARAMPOINTER=0x8000;
+const DLGWINDOWEXTRA=30;
+const MNC_IGNORE=0;
+const MNC_CLOSE=1;
+const MNC_EXECUTE=2;
+const MNC_SELECT=3;
+const DOF_EXECUTABLE=0x8001;
+const DOF_DOCUMENT=0x8002;
+const DOF_DIRECTORY=0x8003;
+const DOF_MULTIPLE=0x8004;
+const DOF_PROGMAN=1;
+const DOF_SHELLDATA=2;
+const DO_DROPFILE=0x454C4946;
+const DO_PRINTFILE=0x544E5250;
+
+const SW_SCROLLCHILDREN=1;
+const SW_INVALIDATE=2;
+const SW_ERASE=4;
+
+const SC_SIZE=0xF000;
+const SC_MOVE=0xF010;
+const SC_MINIMIZE=0xF020;
+const SC_ICON=0xf020;
+const SC_MAXIMIZE=0xF030;
+const SC_ZOOM=0xF030;
+const SC_NEXTWINDOW=0xF040;
+const SC_PREVWINDOW=0xF050;
+const SC_CLOSE=0xF060;
+const SC_VSCROLL=0xF070;
+const SC_HSCROLL=0xF080;
+const SC_MOUSEMENU=0xF090;
+const SC_KEYMENU=0xF100;
+const SC_ARRANGE=0xF110;
+const SC_RESTORE=0xF120;
+const SC_TASKLIST=0xF130;
+const SC_SCREENSAVE=0xF140;
+const SC_HOTKEY=0xF150;
+const SC_DEFAULT=0xF160;
+const SC_MONITORPOWER=0xF170;
+const SC_CONTEXTHELP=0xF180;
+const SC_SEPARATOR=0xF00F;
+
+const EC_LEFTMARGIN=1;
+const EC_RIGHTMARGIN=2;
+const EC_USEFONTINFO=0xffff;
+
+const DC_HASDEFID=0x534B;
+
+const DLGC_WANTARROWS=1;
+const DLGC_WANTTAB=2;
+const DLGC_WANTALLKEYS=4;
+const DLGC_WANTMESSAGE=4;
+const DLGC_HASSETSEL=8;
+const DLGC_DEFPUSHBUTTON=16;
+const DLGC_UNDEFPUSHBUTTON=32;
+const DLGC_RADIOBUTTON=64;
+const DLGC_WANTCHARS=128;
+const DLGC_STATIC=256;
+const DLGC_BUTTON=0x2000;
+
+const WA_INACTIVE=0;
+const WA_ACTIVE=1;
+const WA_CLICKACTIVE=2;
+
+const ICON_SMALL=0;
+const ICON_BIG=1;
+static if (_WIN32_WINNT >= 0x501) {
+const ICON_SMALL2=2;
+}
+
+const HBITMAP
+	HBMMENU_CALLBACK = cast(HBITMAP)-1,
+	HBMMENU_SYSTEM = cast(HBITMAP)1,
+	HBMMENU_MBAR_RESTORE = cast(HBITMAP)2,
+	HBMMENU_MBAR_MINIMIZE = cast(HBITMAP)3,
+	HBMMENU_MBAR_CLOSE = cast(HBITMAP)5,
+	HBMMENU_MBAR_CLOSE_D = cast(HBITMAP)6,
+	HBMMENU_MBAR_MINIMIZE_D = cast(HBITMAP)7,
+	HBMMENU_POPUP_CLOSE = cast(HBITMAP)8,
+	HBMMENU_POPUP_RESTORE = cast(HBITMAP)9,
+	HBMMENU_POPUP_MAXIMIZE = cast(HBITMAP)10,
+	HBMMENU_POPUP_MINIMIZE = cast(HBITMAP)11;
+
+const MOD_ALT=1;
+const MOD_CONTROL=2;
+const MOD_SHIFT=4;
+const MOD_WIN=8;
+const MOD_IGNORE_ALL_MODIFIER=1024;
+const MOD_ON_KEYUP=2048;
+const MOD_RIGHT=16384;
+const MOD_LEFT=32768;
+
+const LLKHF_EXTENDED=(KF_EXTENDED >> 8);
+const LLKHF_INJECTED=0x00000010;
+const LLKHF_ALTDOWN=(KF_ALTDOWN >> 8);
+const LLKHF_UP=(KF_UP >> 8);
+
+static if (WINVER >= 0x500) {
+const FLASHW_STOP=0;
+const FLASHW_CAPTION=1;
+const FLASHW_TRAY=2;
+const FLASHW_ALL=(FLASHW_CAPTION|FLASHW_TRAY);
+const FLASHW_TIMER=4;
+const FLASHW_TIMERNOFG=12;
+}
+
+const CURSOR_SHOWING=0x00000001;
+const WS_ACTIVECAPTION=0x00000001;
+static if (_WIN32_WINNT >= 0x403) {
+const INPUT_MOUSE=0x00000000;
+const INPUT_KEYBOARD=0x00000001;
+const INPUT_HARDWARE=0x00000002;
+}
+static if (WINVER >= 0x400) {
+const ENDSESSION_LOGOFF = 0x80000000;
+}
+
+static if (WINVER >= 0x500) {
+const CHILDID_SELF   = 0;
+const OBJID_WINDOW   = 0x00000000;
+const OBJID_SYSMENU  = 0xFFFFFFFF;
+const OBJID_TITLEBAR = 0xFFFFFFFE;
+const OBJID_MENU     = 0xFFFFFFFD;
+const OBJID_CLIENT   = 0xFFFFFFFC;
+const OBJID_VSCROLL  = 0xFFFFFFFB;
+const OBJID_HSCROLL  = 0xFFFFFFFA;
+const OBJID_SIZEGRIP = 0xFFFFFFF9;
+const OBJID_CARET    = 0xFFFFFFF8;
+const OBJID_CURSOR   = 0xFFFFFFF7;
+const OBJID_ALERT    = 0xFFFFFFF6;
+const OBJID_SOUND    = 0xFFFFFFF5;
+
+const GUI_CARETBLINKING  = 0x00000001;
+const GUI_INMOVESIZE     = 0x00000002;
+const GUI_INMENUMODE     = 0x00000004;
+const GUI_SYSTEMMENUMODE = 0x00000008;
+const GUI_POPUPMENUMODE  = 0x00000010;
+
+static if (_WIN32_WINNT >= 0x501) {
+const GUI_16BITTASK      = 0x00000020;
+}
+const WINEVENT_OUTOFCONTEXT=0x0000;
+const WINEVENT_SKIPOWNTHREAD=0x0001;
+const WINEVENT_SKIPOWNPROCESS=0x0002;
+const WINEVENT_INCONTEXT=0x0004;
+const AW_HOR_POSITIVE=0x00000001;
+const AW_HOR_NEGATIVE=0x00000002;
+const AW_VER_POSITIVE=0x00000004;
+const AW_VER_NEGATIVE=0x00000008;
+const AW_CENTER=0x00000010;
+const AW_HIDE=0x00010000;
+const AW_ACTIVATE=0x00020000;
+const AW_SLIDE=0x00040000;
+const AW_BLEND=0x00080000;
+const DEVICE_NOTIFY_WINDOW_HANDLE=0x00000000;
+const DEVICE_NOTIFY_SERVICE_HANDLE=0x00000001;
+
+static if (_WIN32_WINNT >= 0x501) {
+const DEVICE_NOTIFY_ALL_INTERFACE_CLASSES=0x00000004;
+}
+
+const EVENT_MIN = 0x00000001;
+const EVENT_SYSTEM_SOUND = 0x00000001;
+const EVENT_SYSTEM_ALERT = 0x00000002;
+const EVENT_SYSTEM_FOREGROUND = 0x00000003;
+const EVENT_SYSTEM_MENUSTART = 0x00000004;
+const EVENT_SYSTEM_MENUEND = 0x00000005;
+const EVENT_SYSTEM_MENUPOPUPSTART = 0x00000006;
+const EVENT_SYSTEM_MENUPOPUPEND = 0x00000007;
+const EVENT_SYSTEM_CAPTURESTART = 0x00000008;
+const EVENT_SYSTEM_CAPTUREEND = 0x00000009;
+const EVENT_SYSTEM_MOVESIZESTART = 0x0000000a;
+const EVENT_SYSTEM_MOVESIZEEND = 0x0000000b;
+const EVENT_SYSTEM_CONTEXTHELPSTART = 0x0000000c;
+const EVENT_SYSTEM_CONTEXTHELPEND = 0x0000000d;
+const EVENT_SYSTEM_DRAGDROPSTART = 0x0000000e;
+const EVENT_SYSTEM_DRAGDROPEND = 0x0000000f;
+const EVENT_SYSTEM_DIALOGSTART = 0x00000010;
+const EVENT_SYSTEM_DIALOGEND = 0x00000011;
+const EVENT_SYSTEM_SCROLLINGSTART = 0x00000012;
+const EVENT_SYSTEM_SCROLLINGEND = 0x00000013;
+const EVENT_SYSTEM_SWITCHSTART = 0x00000014;
+const EVENT_SYSTEM_SWITCHEND = 0x00000015;
+const EVENT_SYSTEM_MINIMIZESTART = 0x00000016;
+const EVENT_SYSTEM_MINIMIZEEND = 0x00000017;
+
+const EVENT_OBJECT_CREATE = 0x00008000;
+const EVENT_OBJECT_DESTROY = 0x00008001;
+const EVENT_OBJECT_SHOW = 0x00008002;
+const EVENT_OBJECT_HIDE = 0x00008003;
+const EVENT_OBJECT_REORDER = 0x00008004;
+const EVENT_OBJECT_FOCUS = 0x00008005;
+const EVENT_OBJECT_SELECTION = 0x00008006;
+const EVENT_OBJECT_SELECTIONADD = 0x00008007;
+const EVENT_OBJECT_SELECTIONREMOVE = 0x00008008;
+const EVENT_OBJECT_SELECTIONWITHIN = 0x00008009;
+const EVENT_OBJECT_STATECHANGE = 0x0000800a;
+const EVENT_OBJECT_LOCATIONCHANGE = 0x0000800b;
+const EVENT_OBJECT_NAMECHANGE = 0x0000800c;
+const EVENT_OBJECT_DESCRIPTIONCHANGE = 0x0000800d;
+const EVENT_OBJECT_VALUECHANGE = 0x0000800e;
+const EVENT_OBJECT_PARENTCHANGE = 0x0000800f;
+const EVENT_OBJECT_HELPCHANGE = 0x00008010;
+const EVENT_OBJECT_DEFACTIONCHANGE = 0x00008011;
+const EVENT_OBJECT_ACCELERATORCHANGE = 0x00008012;
+
+static if (_WIN32_WINNT >= 0x501) {
+const EVENT_CONSOLE_CARET             = 0x00004001;
+const EVENT_CONSOLE_UPDATE_REGION     = 0x00004002;
+const EVENT_CONSOLE_UPDATE_SIMPLE     = 0x00004003;
+const EVENT_CONSOLE_UPDATE_SCROLL     = 0x00004004;
+const EVENT_CONSOLE_LAYOUT            = 0x00004005;
+const EVENT_CONSOLE_START_APPLICATION = 0x00004006;
+const EVENT_CONSOLE_END_APPLICATION   = 0x00004007;
+
+const CONSOLE_CARET_SELECTION   = 0x00000001;
+const CONSOLE_CARET_VISIBLE     = 0x00000002;
+
+const CONSOLE_APPLICATION_16BIT = 0x00000001;
+
+}
+const EVENT_MAX=0x7fffffff;
+
+}//(WINVER >= 0x500)
+
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) {
+const DWORD ASFW_ANY = -1;
+const LSFW_LOCK   = 1;
+const LSFW_UNLOCK = 2;
+}
+
+static if (_WIN32_WINNT >= 0x500) {
+const LWA_COLORKEY=0x01;
+const LWA_ALPHA=0x02;
+const ULW_COLORKEY=0x01;
+const ULW_ALPHA=0x02;
+const ULW_OPAQUE=0x04;
+}
+
+const GA_PARENT    = 1;
+const GA_ROOT      = 2;
+const GA_ROOTOWNER = 3;
+
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+
+const MONITOR_DEFAULTTONULL    = 0;
+const MONITOR_DEFAULTTOPRIMARY = 1;
+const MONITOR_DEFAULTTONEAREST = 2;
+const MONITORINFOF_PRIMARY     = 1;
+
+const EDS_RAWMODE = 0x00000002;
+
+const ISMEX_NOSEND   = 0x00000000;
+const ISMEX_SEND     = 0x00000001;
+const ISMEX_NOTIFY   = 0x00000002;
+const ISMEX_CALLBACK = 0x00000004;
+const ISMEX_REPLIED  = 0x00000008;
+}
+
+static if (_WIN32_WINNT >= 0x500) {
+const GR_GDIOBJECTS  = 0;
+const GR_USEROBJECTS = 1;
+}
+
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) {
+const GMMP_USE_DISPLAY_POINTS         = 1;
+const GMMP_USE_HIGH_RESOLUTION_POINTS = 2;
+}
+
+static if (_WIN32_WINNT >= 0x501) {
+const PW_CLIENTONLY               = 0x00000001;
+const RIM_INPUT                   = 0x00000000;
+const RIM_INPUTSINK               = 0x00000001;
+const RIM_TYPEMOUSE               = 0x00000000;
+const RIM_TYPEKEYBOARD            = 0x00000001;
+const RIM_TYPEHID                 = 0x00000002;
+const MOUSE_MOVE_RELATIVE         = 0x00000000;
+const MOUSE_MOVE_ABSOLUTE         = 0x00000001;
+const MOUSE_VIRTUAL_DESKTOP       = 0x00000002;
+const MOUSE_ATTRIBUTES_CHANGED    = 0x00000004;
+const RI_MOUSE_LEFT_BUTTON_DOWN   = 0x0001;
+const RI_MOUSE_LEFT_BUTTON_UP     = 0x0002;
+const RI_MOUSE_RIGHT_BUTTON_DOWN  = 0x0004;
+const RI_MOUSE_RIGHT_BUTTON_UP    = 0x0008;
+const RI_MOUSE_MIDDLE_BUTTON_DOWN = 0x0010;
+const RI_MOUSE_MIDDLE_BUTTON_UP   = 0x0020;
+const RI_MOUSE_BUTTON_1_DOWN = RI_MOUSE_LEFT_BUTTON_DOWN;
+const RI_MOUSE_BUTTON_1_UP   = RI_MOUSE_LEFT_BUTTON_UP;
+const RI_MOUSE_BUTTON_2_DOWN = RI_MOUSE_RIGHT_BUTTON_DOWN;
+const RI_MOUSE_BUTTON_2_UP   = RI_MOUSE_RIGHT_BUTTON_UP;
+const RI_MOUSE_BUTTON_3_DOWN = RI_MOUSE_MIDDLE_BUTTON_DOWN;
+const RI_MOUSE_BUTTON_3_UP   = RI_MOUSE_MIDDLE_BUTTON_UP;
+const RI_MOUSE_BUTTON_4_DOWN = 0x0040;
+const RI_MOUSE_BUTTON_4_UP   = 0x0080;
+const RI_MOUSE_BUTTON_5_DOWN = 0x0100;
+const RI_MOUSE_BUTTON_5_UP   = 0x0200;
+const RI_MOUSE_WHEEL         = 0x0400;
+const KEYBOARD_OVERRUN_MAKE_CODE = 0x00ff;
+const RI_KEY_MAKE            = 0x0000;
+const RI_KEY_BREAK           = 0x0001;
+const RI_KEY_E0              = 0x0002;
+const RI_KEY_E1              = 0x0004;
+const RI_KEY_TERMSRV_SET_LED = 0x0008;
+const RI_KEY_TERMSRV_SHADOW  = 0x0010;
+
+const RID_INPUT          = 0x10000003;
+const RID_HEADER         = 0x10000005;
+
+const RIDI_PREPARSEDDATA = 0x20000005;
+const RIDI_DEVICENAME    = 0x20000007;
+const RIDI_DEVICEINFO    = 0x2000000b;
+
+const RIDEV_REMOVE       = 0x00000001;
+const RIDEV_EXCLUDE      = 0x00000010;
+const RIDEV_PAGEONLY     = 0x00000020;
+const RIDEV_NOLEGACY     = 0x00000030;
+const RIDEV_INPUTSINK    = 0x00000100;
+const RIDEV_CAPTUREMOUSE = 0x00000200;
+const RIDEV_NOHOTKEYS    = 0x00000200;
+const RIDEV_APPKEYS      = 0x00000400;
+}
+
+// Callbacks
+// ---------
+extern (Windows) {
+	alias BOOL function (HWND, UINT, WPARAM, LPARAM)    DLGPROC;
+	alias void function (HWND, UINT, UINT, DWORD)       TIMERPROC;
+	alias BOOL function (HDC, LPARAM, int)              GRAYSTRINGPROC;
+	alias LRESULT function (int, WPARAM, LPARAM)        HOOKPROC;
+	alias BOOL function (HWND, LPCSTR, HANDLE)          PROPENUMPROCA;
+	alias BOOL function (HWND, LPCWSTR, HANDLE)         PROPENUMPROCW;
+	alias BOOL function (HWND, LPSTR, HANDLE, DWORD)    PROPENUMPROCEXA;
+	alias BOOL function (HWND, LPWSTR, HANDLE, DWORD)   PROPENUMPROCEXW;
+	alias int function (LPSTR, int, int, int)           EDITWORDBREAKPROCA;
+	alias int function (LPWSTR, int, int, int)          EDITWORDBREAKPROCW;
+	alias LRESULT function (HWND, UINT, WPARAM, LPARAM) WNDPROC;
+	alias BOOL function (HDC, LPARAM, WPARAM, int, int) DRAWSTATEPROC;
+	alias BOOL function (HWND, LPARAM)                  WNDENUMPROC;
+	alias BOOL function (HWND, LPARAM)                  ENUMWINDOWSPROC;
+	alias void function (LPHELPINFO)                    MSGBOXCALLBACK;
+
+	static if (WINVER >= 0x410) {
+		alias BOOL function (HMONITOR, HDC, LPRECT, LPARAM) MONITORENUMPROC;
+	}
+	alias BOOL function (LPSTR, LPARAM)                 NAMEENUMPROCA;
+	alias BOOL function (LPWSTR, LPARAM)                NAMEENUMPROCW;
+	alias void function (HWND, UINT, DWORD, LRESULT)    SENDASYNCPROC;
+
+	alias NAMEENUMPROCA DESKTOPENUMPROCA;
+	alias NAMEENUMPROCW DESKTOPENUMPROCW;
+	alias NAMEENUMPROCA WINSTAENUMPROCA;
+	alias NAMEENUMPROCW WINSTAENUMPROCW;
+}
+
+typedef HANDLE HHOOK;
+typedef HANDLE HDWP;
+typedef HANDLE HDEVNOTIFY;
+
+struct ACCEL {
+	BYTE fVirt;
+	WORD key;
+	WORD cmd;
+}
+alias ACCEL* LPACCEL;
+
+struct ACCESSTIMEOUT {
+	UINT  cbSize = ACCESSTIMEOUT.sizeof;
+	DWORD dwFlags;
+	DWORD iTimeOutMSec;
+}
+alias ACCESSTIMEOUT* LPACCESSTIMEOUT;
+
+struct ANIMATIONINFO {
+	UINT cbSize = ANIMATIONINFO.sizeof;
+	int  iMinAnimate;
+}
+alias ANIMATIONINFO* LPANIMATIONINFO;
+
+struct CREATESTRUCTA {
+	LPVOID    lpCreateParams;
+	HINSTANCE hInstance;
+	HMENU     hMenu;
+	HWND      hwndParent;
+	int       cy;
+	int       cx;
+	int       y;
+	int       x;
+	LONG      style;
+	LPCSTR    lpszName;
+	LPCSTR    lpszClass;
+	DWORD     dwExStyle;
+}
+alias CREATESTRUCTA* LPCREATESTRUCTA;
+
+struct CREATESTRUCTW {
+	LPVOID    lpCreateParams;
+	HINSTANCE hInstance;
+	HMENU     hMenu;
+	HWND      hwndParent;
+	int       cy;
+	int       cx;
+	int       y;
+	int       x;
+	LONG      style;
+	LPCWSTR   lpszName;
+	LPCWSTR   lpszClass;
+	DWORD     dwExStyle;
+}
+alias CREATESTRUCTW* LPCREATESTRUCTW;
+
+struct CBT_CREATEWNDA {
+	LPCREATESTRUCTA lpcs;
+	HWND            hwndInsertAfter;
+}
+alias CBT_CREATEWNDA* LPCBT_CREATEWNDA;
+
+struct CBT_CREATEWNDW {
+	LPCREATESTRUCTW lpcs;
+	HWND            hwndInsertAfter;
+}
+alias CBT_CREATEWNDW* LPCBT_CREATEWNDW;
+
+struct CBTACTIVATESTRUCT {
+	BOOL fMouse;
+	HWND hWndActive;
+}
+alias CBTACTIVATESTRUCT* LPCBTACTIVATESTRUCT;
+
+struct CLIENTCREATESTRUCT {
+	HANDLE hWindowMenu;
+	UINT   idFirstChild;
+}
+alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT;
+
+struct COMPAREITEMSTRUCT {
+	UINT  CtlType;
+	UINT  CtlID;
+	HWND  hwndItem;
+	UINT  itemID1;
+	DWORD itemData1;
+	UINT  itemID2;
+	DWORD itemData2;
+	DWORD dwLocaleId;
+}
+alias COMPAREITEMSTRUCT* LPCOMPAREITEMSTRUCT;
+
+struct COPYDATASTRUCT {
+	DWORD dwData;
+	DWORD cbData;
+	PVOID lpData;
+}
+alias COPYDATASTRUCT* PCOPYDATASTRUCT;
+
+struct CURSORSHAPE {
+	int xHotSpot;
+	int yHotSpot;
+	int cx;
+	int cy;
+	int cbWidth;
+	BYTE Planes;
+	BYTE BitsPixel;
+}
+alias CURSORSHAPE* LPCURSORSHAPE;
+
+struct CWPRETSTRUCT {
+	LRESULT lResult;
+	LPARAM lParam;
+	WPARAM wParam;
+	DWORD message;
+	HWND hwnd;
+}
+
+struct CWPSTRUCT {
+	LPARAM lParam;
+	WPARAM wParam;
+	UINT message;
+	HWND hwnd;
+}
+alias CWPSTRUCT* PCWPSTRUCT;
+
+struct DEBUGHOOKINFO {
+	DWORD idThread;
+	DWORD idThreadInstaller;
+	LPARAM lParam;
+	WPARAM wParam;
+	int code;
+}
+alias DEBUGHOOKINFO* PDEBUGHOOKINFO, LPDEBUGHOOKINFO;
+
+struct DELETEITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	HWND hwndItem;
+	UINT itemData;
+}
+alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT, LPDELETEITEMSTRUCT;
+
+align(2):
+struct DLGITEMTEMPLATE {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	short x;
+	short y;
+	short cx;
+	short cy;
+	WORD id;
+}
+alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE;
+
+struct DLGTEMPLATE {
+	DWORD style;
+	DWORD dwExtendedStyle;
+	WORD  cdit;
+	short x;
+	short y;
+	short cx;
+	short cy;
+}
+alias DLGTEMPLATE* LPDLGTEMPLATE, LPDLGTEMPLATEA, LPDLGTEMPLATEW;
+alias DLGTEMPLATE* LPCDLGTEMPLATE;
+
+align:
+
+struct DRAWITEMSTRUCT {
+	UINT  CtlType;
+	UINT  CtlID;
+	UINT  itemID;
+	UINT  itemAction;
+	UINT  itemState;
+	HWND  hwndItem;
+	HDC   hDC;
+	RECT  rcItem;
+	DWORD itemData;
+}
+alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT, PDRAWITEMSTRUCT;
+
+struct DRAWTEXTPARAMS {
+	UINT cbSize = DRAWTEXTPARAMS.sizeof;
+	int  iTabLength;
+	int  iLeftMargin;
+	int  iRightMargin;
+	UINT uiLengthDrawn;
+}
+alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS;
+
+struct PAINTSTRUCT {
+	HDC      hdc;
+	BOOL     fErase;
+	RECT     rcPaint;
+	BOOL     fRestore;
+	BOOL     fIncUpdate;
+	BYTE[32] rgbReserved;
+}
+alias PAINTSTRUCT* LPPAINTSTRUCT;
+
+struct MSG {
+	HWND   hwnd;
+	UINT   message;
+	WPARAM wParam;
+	LPARAM lParam;
+	DWORD  time;
+	POINT  pt;
+}
+alias MSG* LPMSG, PMSG;
+
+struct ICONINFO {
+	BOOL    fIcon;
+	DWORD   xHotspot;
+	DWORD   yHotspot;
+	HBITMAP hbmMask;
+	HBITMAP hbmColor;
+}
+alias ICONINFO* PICONINFO;
+
+struct NMHDR {
+	HWND hwndFrom;
+	UINT idFrom;
+	UINT code;
+}
+alias NMHDR* LPNMHDR;
+
+struct WNDCLASSA {
+	UINT      style;
+	WNDPROC   lpfnWndProc;
+	int       cbClsExtra;
+	int       cbWndExtra;
+	HINSTANCE hInstance;
+	HICON     hIcon;
+	HCURSOR   hCursor;
+	HBRUSH    hbrBackground;
+	LPCSTR    lpszMenuName;
+	LPCSTR    lpszClassName;
+}
+alias WNDCLASSA* LPWNDCLASSA, PWNDCLASSA;
+
+struct WNDCLASSW {
+	UINT      style;
+	WNDPROC   lpfnWndProc;
+	int       cbClsExtra;
+	int       cbWndExtra;
+	HINSTANCE hInstance;
+	HICON     hIcon;
+	HCURSOR   hCursor;
+	HBRUSH    hbrBackground;
+	LPCWSTR   lpszMenuName;
+	LPCWSTR   lpszClassName;
+}
+alias WNDCLASSW* LPWNDCLASSW, PWNDCLASSW;
+
+struct WNDCLASSEXA {
+	UINT      cbSize = WNDCLASSEXA.sizeof;
+	UINT      style;
+	WNDPROC   lpfnWndProc;
+	int       cbClsExtra;
+	int       cbWndExtra;
+	HINSTANCE hInstance;
+	HICON     hIcon;
+	HCURSOR   hCursor;
+	HBRUSH    hbrBackground;
+	LPCSTR    lpszMenuName;
+	LPCSTR    lpszClassName;
+	HICON     hIconSm;
+}
+alias WNDCLASSEXA* LPWNDCLASSEXA, PWNDCLASSEXA;
+
+struct WNDCLASSEXW {
+	UINT      cbSize = WNDCLASSEXW.sizeof;
+	UINT      style;
+	WNDPROC   lpfnWndProc;
+	int       cbClsExtra;
+	int       cbWndExtra;
+	HINSTANCE hInstance;
+	HICON     hIcon;
+	HCURSOR   hCursor;
+	HBRUSH    hbrBackground;
+	LPCWSTR   lpszMenuName;
+	LPCWSTR   lpszClassName;
+	HICON     hIconSm;
+}
+alias WNDCLASSEXW* LPWNDCLASSEXW, PWNDCLASSEXW;
+
+struct MENUITEMINFOA {
+	UINT    cbSize = MENUITEMINFOA.sizeof;
+	UINT    fMask;
+	UINT    fType;
+	UINT    fState;
+	UINT    wID;
+	HMENU   hSubMenu;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD   dwItemData;
+	LPSTR   dwTypeData;
+	UINT    cch;
+	static if (_WIN32_WINNT >= 0x500) {
+		HBITMAP hbmpItem;
+	}
+}
+alias MENUITEMINFOA* LPMENUITEMINFOA;
+alias MENUITEMINFOA* LPCMENUITEMINFOA;
+
+struct MENUITEMINFOW {
+	UINT    cbSize = MENUITEMINFOW.sizeof;
+	UINT    fMask;
+	UINT    fType;
+	UINT    fState;
+	UINT    wID;
+	HMENU   hSubMenu;
+	HBITMAP hbmpChecked;
+	HBITMAP hbmpUnchecked;
+	DWORD   dwItemData;
+	LPWSTR  dwTypeData;
+	UINT    cch;
+	static if (_WIN32_WINNT >= 0x500) {
+		HBITMAP hbmpItem;
+	}
+}
+alias MENUITEMINFOW* LPMENUITEMINFOW;
+alias  MENUITEMINFOW* LPCMENUITEMINFOW;
+
+struct SCROLLINFO {
+	UINT cbSize = this.sizeof;
+	UINT fMask;
+	int nMin;
+	int nMax;
+	UINT nPage;
+	int nPos;
+	int nTrackPos;
+}
+alias SCROLLINFO* LPSCROLLINFO;
+alias SCROLLINFO* LPCSCROLLINFO;
+
+struct WINDOWPLACEMENT {
+	UINT length;
+	UINT flags;
+	UINT showCmd;
+	POINT ptMinPosition;
+	POINT ptMaxPosition;
+	RECT rcNormalPosition;
+}
+alias WINDOWPLACEMENT* LPWINDOWPLACEMENT, PWINDOWPLACEMENT;
+
+struct MENUITEMTEMPLATEHEADER {
+	WORD versionNumber;
+	WORD offset;
+}
+
+struct MENUITEMTEMPLATE {
+	WORD mtOption;
+	WORD mtID;
+	WCHAR mtString[1];
+}
+
+alias void MENUTEMPLATE, MENUTEMPLATEA, MENUTEMPLATEW;
+
+alias MENUTEMPLATE* LPMENUTEMPLATEA, LPMENUTEMPLATEW, LPMENUTEMPLATE;
+
+struct HELPINFO {
+	UINT cbSize = this.sizeof;
+	int iContextType;
+	int iCtrlId;
+	HANDLE hItemHandle;
+	DWORD dwContextId;
+	POINT MousePos;
+}
+alias HELPINFO* LPHELPINFO;
+
+struct MSGBOXPARAMSA {
+	UINT cbSize = this.sizeof;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCSTR lpszText;
+	LPCSTR lpszCaption;
+	DWORD dwStyle;
+	LPCSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+}
+alias MSGBOXPARAMSA* PMSGBOXPARAMSA, LPMSGBOXPARAMSA;
+
+struct MSGBOXPARAMSW {
+	UINT cbSize = this.sizeof;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCWSTR lpszText;
+	LPCWSTR lpszCaption;
+	DWORD dwStyle;
+	LPCWSTR lpszIcon;
+	DWORD dwContextHelpId;
+	MSGBOXCALLBACK lpfnMsgBoxCallback;
+	DWORD dwLanguageId;
+}
+alias MSGBOXPARAMSW* PMSGBOXPARAMSW, LPMSGBOXPARAMSW;
+
+struct USEROBJECTFLAGS {
+	BOOL fInherit;
+	BOOL fReserved;
+	DWORD dwFlags;
+}
+
+struct FILTERKEYS {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	DWORD iWaitMSec;
+	DWORD iDelayMSec;
+	DWORD iRepeatMSec;
+	DWORD iBounceMSec;
+}
+
+struct HIGHCONTRASTA {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	LPSTR lpszDefaultScheme;
+}
+alias HIGHCONTRASTA* LPHIGHCONTRASTA;
+
+struct HIGHCONTRASTW {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	LPWSTR lpszDefaultScheme;
+}
+alias HIGHCONTRASTW* LPHIGHCONTRASTW;
+
+struct ICONMETRICSA {
+	UINT cbSize = this.sizeof;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTA lfFont;
+}
+alias ICONMETRICSA* LPICONMETRICSA;
+
+struct ICONMETRICSW {
+	UINT cbSize = this.sizeof;
+	int iHorzSpacing;
+	int iVertSpacing;
+	int iTitleWrap;
+	LOGFONTW lfFont;
+}
+alias ICONMETRICSW* LPICONMETRICSW;
+
+struct MINIMIZEDMETRICS {
+	UINT cbSize = this.sizeof;
+	int iWidth;
+	int iHorzGap;
+	int iVertGap;
+	int iArrange;
+}
+alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS;
+
+struct MOUSEKEYS {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	DWORD iMaxSpeed;
+	DWORD iTimeToMaxSpeed;
+	DWORD iCtrlSpeed;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+}
+alias MOUSEKEYS* LPMOUSEKEYS;
+
+struct NONCLIENTMETRICSA {
+	UINT cbSize = this.sizeof;
+	int iBorderWidth;
+	int iScrollWidth;
+	int iScrollHeight;
+	int iCaptionWidth;
+	int iCaptionHeight;
+	LOGFONTA lfCaptionFont;
+	int iSmCaptionWidth;
+	int iSmCaptionHeight;
+	LOGFONTA lfSmCaptionFont;
+	int iMenuWidth;
+	int iMenuHeight;
+	LOGFONTA lfMenuFont;
+	LOGFONTA lfStatusFont;
+	LOGFONTA lfMessageFont;
+}
+alias NONCLIENTMETRICSA* LPNONCLIENTMETRICSA;
+
+struct NONCLIENTMETRICSW {
+	UINT cbSize = this.sizeof;
+	int iBorderWidth;
+	int iScrollWidth;
+	int iScrollHeight;
+	int iCaptionWidth;
+	int iCaptionHeight;
+	LOGFONTW lfCaptionFont;
+	int iSmCaptionWidth;
+	int iSmCaptionHeight;
+	LOGFONTW lfSmCaptionFont;
+	int iMenuWidth;
+	int iMenuHeight;
+	LOGFONTW lfMenuFont;
+	LOGFONTW lfStatusFont;
+	LOGFONTW lfMessageFont;
+}
+alias NONCLIENTMETRICSW* LPNONCLIENTMETRICSW;
+
+struct SERIALKEYSA {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	LPSTR lpszActivePort;
+	LPSTR lpszPort;
+	UINT iBaudRate;
+	UINT iPortState;
+	UINT iActive;
+}
+alias SERIALKEYSA* LPSERIALKEYSA;
+
+struct SERIALKEYSW {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	LPWSTR lpszActivePort;
+	LPWSTR lpszPort;
+	UINT iBaudRate;
+	UINT iPortState;
+	UINT iActive;
+}
+alias SERIALKEYSW* LPSERIALKEYSW;
+
+struct SOUNDSENTRYA {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	DWORD iFSTextEffect;
+	DWORD iFSTextEffectMSec;
+	DWORD iFSTextEffectColorBits;
+	DWORD iFSGrafEffect;
+	DWORD iFSGrafEffectMSec;
+	DWORD iFSGrafEffectColor;
+	DWORD iWindowsEffect;
+	DWORD iWindowsEffectMSec;
+	LPSTR lpszWindowsEffectDLL;
+	DWORD iWindowsEffectOrdinal;
+}
+alias SOUNDSENTRYA* LPSOUNDSENTRYA;
+
+struct SOUNDSENTRYW {
+	UINT cbSize = this.sizeof;
+	DWORD dwFlags;
+	DWORD iFSTextEffect;
+	DWORD iFSTextEffectMSec;
+	DWORD iFSTextEffectColorBits;
+	DWORD iFSGrafEffect;
+	DWORD iFSGrafEffectMSec;
+	DWORD iFSGrafEffectColor;
+	DWORD iWindowsEffect;
+	DWORD iWindowsEffectMSec;
+	LPWSTR lpszWindowsEffectDLL;
+	DWORD iWindowsEffectOrdinal;
+}
+alias SOUNDSENTRYW* LPSOUNDSENTRYW;
+
+struct STICKYKEYS {
+	DWORD cbSize = this.sizeof;
+	DWORD dwFlags;
+}
+alias STICKYKEYS* LPSTICKYKEYS;
+
+struct TOGGLEKEYS {
+	DWORD cbSize = this.sizeof;
+	DWORD dwFlags;
+}
+
+struct MOUSEHOOKSTRUCT {
+	POINT pt;
+	HWND hwnd;
+	UINT wHitTestCode;
+	DWORD dwExtraInfo;
+}
+alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT, PMOUSEHOOKSTRUCT;
+
+struct TRACKMOUSEEVENT {
+	DWORD cbSize = this.sizeof;
+	DWORD dwFlags;
+	HWND  hwndTrack;
+	DWORD dwHoverTime;
+}
+alias TRACKMOUSEEVENT* LPTRACKMOUSEEVENT;
+
+struct TPMPARAMS {
+	UINT cbSize = this.sizeof;
+	RECT rcExclude;
+}
+alias TPMPARAMS* LPTPMPARAMS;
+
+struct EVENTMSG {
+	UINT message;
+	UINT paramL;
+	UINT paramH;
+	DWORD time;
+	HWND hwnd;
+}
+alias EVENTMSG* PEVENTMSGMSG, LPEVENTMSGMSG, PEVENTMSG, LPEVENTMSG;
+
+struct WINDOWPOS {
+	HWND hwnd;
+	HWND hwndInsertAfter;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	UINT flags;
+}
+alias WINDOWPOS* PWINDOWPOS, LPWINDOWPOS;
+
+struct NCCALCSIZE_PARAMS {
+	RECT rgrc[3];
+	PWINDOWPOS lppos;
+}
+alias NCCALCSIZE_PARAMS* LPNCCALCSIZE_PARAMS;
+
+struct MDICREATESTRUCTA {
+	LPCSTR szClass;
+	LPCSTR szTitle;
+	HANDLE hOwner;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	DWORD style;
+	LPARAM lParam;
+}
+alias MDICREATESTRUCTA* LPMDICREATESTRUCTA;
+
+struct MDICREATESTRUCTW {
+	LPCWSTR szClass;
+	LPCWSTR szTitle;
+	HANDLE hOwner;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	DWORD style;
+	LPARAM lParam;
+}
+alias MDICREATESTRUCTW* LPMDICREATESTRUCTW;
+
+struct MINMAXINFO {
+	POINT ptReserved;
+	POINT ptMaxSize;
+	POINT ptMaxPosition;
+	POINT ptMinTrackSize;
+	POINT ptMaxTrackSize;
+}
+alias MINMAXINFO* PMINMAXINFO, LPMINMAXINFO;
+
+struct MDINEXTMENU {
+	HMENU hmenuIn;
+	HMENU hmenuNext;
+	HWND hwndNext;
+}
+alias MDINEXTMENU* PMDINEXTMENU, LPMDINEXTMENU;
+
+struct MEASUREITEMSTRUCT {
+	UINT CtlType;
+	UINT CtlID;
+	UINT itemID;
+	UINT itemWidth;
+	UINT itemHeight;
+	DWORD itemData;
+}
+alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT, LPMEASUREITEMSTRUCT;
+
+struct DROPSTRUCT {
+	HWND hwndSource;
+	HWND hwndSink;
+	DWORD wFmt;
+	DWORD dwData;
+	POINT ptDrop;
+	DWORD dwControlData;
+}
+alias DROPSTRUCT* PDROPSTRUCT, LPDROPSTRUCT;
+
+alias DWORD HELPPOLY;
+
+struct MULTIKEYHELPA {
+	DWORD mkSize;
+	CHAR mkKeylist;
+	CHAR szKeyphrase[1];
+}
+alias MULTIKEYHELPA* PMULTIKEYHELPA, LPMULTIKEYHELPA;
+
+struct MULTIKEYHELPW {
+	DWORD mkSize;
+	WCHAR mkKeylist;
+	WCHAR szKeyphrase[1];
+}
+alias MULTIKEYHELPW* PMULTIKEYHELPW, LPMULTIKEYHELPW;
+
+struct HELPWININFOA {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	CHAR rgchMember[2];
+}
+alias HELPWININFOA* PHELPWININFOA, LPHELPWININFOA;
+
+struct HELPWININFOW {
+	int wStructSize;
+	int x;
+	int y;
+	int dx;
+	int dy;
+	int wMax;
+	WCHAR rgchMember[2];
+}
+alias HELPWININFOW* PHELPWININFOW, LPHELPWININFOW;
+
+struct STYLESTRUCT {
+	DWORD styleOld;
+	DWORD styleNew;
+}
+alias STYLESTRUCT* LPSTYLESTRUCT;
+
+struct ALTTABINFO {
+	DWORD cbSize = this.sizeof;
+	int   cItems;
+	int   cColumns;
+	int   cRows;
+	int   iColFocus;
+	int   iRowFocus;
+	int   cxItem;
+	int   cyItem;
+	POINT ptStart;
+}
+alias ALTTABINFO* PALTTABINFO, LPALTTABINFO;
+
+struct COMBOBOXINFO {
+	DWORD cbSize = this.sizeof;
+	RECT rcItem;
+	RECT rcButton;
+	DWORD stateButton;
+	HWND hwndCombo;
+	HWND hwndItem;
+	HWND hwndList;
+}
+alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO;
+
+struct CURSORINFO {
+	DWORD cbSize = this.sizeof;
+	DWORD flags;
+	HCURSOR hCursor;
+	POINT ptScreenPos;
+}
+alias CURSORINFO* PCURSORINFO, LPCURSORINFO;
+
+struct MENUBARINFO {
+	DWORD cbSize = this.sizeof;
+	RECT  rcBar;
+	HMENU hMenu;
+	HWND  hwndMenu;
+	byte bf_; // Simulated bitfield
+//	BOOL  fBarFocused:1;
+//	BOOL  fFocused:1;
+	bool fBarFocused() { return (bf_ & 1) == 1; }
+	bool fFocused() { return (bf_ & 2) == 2; }
+	void fBarFocused(bool b) { bf_ = cast(byte)((bf_ & 0xFE) | b); }
+	void fFocused(bool b) { bf_ = cast(byte)(b ? (bf_ | 2) : bf_ & 0xFD); }
+}
+alias MENUBARINFO* PMENUBARINFO;
+
+struct MENUINFO {
+	DWORD cbSize = this.sizeof;
+	DWORD fMask;
+	DWORD dwStyle;
+	UINT cyMax;
+	HBRUSH  hbrBack;
+	DWORD   dwContextHelpID;
+	ULONG_PTR dwMenuData;
+}
+alias MENUINFO* LPMENUINFO, LPCMENUINFO;
+
+
+const CCHILDREN_SCROLLBAR=5;
+
+struct SCROLLBARINFO {
+	DWORD cbSize = this.sizeof;
+	RECT  rcScrollBar;
+	int   dxyLineButton;
+	int   xyThumbTop;
+	int   xyThumbBottom;
+	int   reserved;
+	DWORD rgstate[CCHILDREN_SCROLLBAR+1];
+}
+alias SCROLLBARINFO* PSCROLLBARINFO, LPSCROLLBARINFO;
+
+const CCHILDREN_TITLEBAR=5;
+
+struct TITLEBARINFO {
+	DWORD cbSize = TITLEBARINFO.sizeof;
+	RECT  rcTitleBar;
+	DWORD[CCHILDREN_TITLEBAR+1] rgstate;
+}
+alias TITLEBARINFO* PTITLEBARINFO, LPTITLEBARINFO;
+
+struct WINDOWINFO {
+	DWORD cbSize = WINDOWINFO.sizeof;
+	RECT  rcWindow;
+	RECT  rcClient;
+	DWORD dwStyle;
+	DWORD dwExStyle;
+	DWORD dwWindowStatus;
+	UINT  cxWindowBorders;
+	UINT  cyWindowBorders;
+	ATOM  atomWindowType;
+	WORD  wCreatorVersion;
+}
+alias WINDOWINFO* PWINDOWINFO, LPWINDOWINFO;
+
+struct LASTINPUTINFO {
+	UINT cbSize = this.sizeof;
+	DWORD dwTime;
+}
+alias LASTINPUTINFO* PLASTINPUTINFO;
+
+struct MONITORINFO {
+	DWORD cbSize = this.sizeof;
+	RECT rcMonitor;
+	RECT rcWork;
+	DWORD dwFlags;
+}
+alias MONITORINFO* LPMONITORINFO;
+
+const CCHDEVICENAME=32;
+
+struct MONITORINFOEXA {
+	DWORD cbSize = MONITORINFOEXA.sizeof;
+	RECT  rcMonitor;
+	RECT  rcWork;
+	DWORD dwFlags;
+	CHAR[CCHDEVICENAME] szDevice;
+}
+alias MONITORINFOEXA* LPMONITORINFOEXA;
+
+struct MONITORINFOEXW {
+	DWORD cbSize = MONITORINFOEXW.sizeof;
+	RECT  rcMonitor;
+	RECT  rcWork;
+	DWORD dwFlags;
+	WCHAR[CCHDEVICENAME] szDevice;
+}
+alias MONITORINFOEXW* LPMONITORINFOEXW;
+
+struct KBDLLHOOKSTRUCT {
+	DWORD vkCode;
+	DWORD scanCode;
+	DWORD flags;
+	DWORD time;
+	DWORD dwExtraInfo;
+}
+alias KBDLLHOOKSTRUCT* LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT;
+
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+
+struct FLASHWINFO {
+	UINT  cbSize = this.sizeof;
+	HWND  hwnd;
+	DWORD dwFlags;
+	UINT  uCount;
+	DWORD dwTimeout;
+}
+alias FLASHWINFO* PFLASHWINFO;
+
+}
+
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) {
+
+struct MOUSEMOVEPOINT {
+	int x;
+	int y;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+}
+alias MOUSEMOVEPOINT* PMOUSEMOVEPOINT, LPMOUSEMOVEPOINT;
+}
+
+static if (_WIN32_WINNT >= 0x403) {
+struct MOUSEINPUT {
+	LONG dx;
+	LONG dy;
+	DWORD mouseData;
+	DWORD dwFlags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+}
+alias MOUSEINPUT* PMOUSEINPUT;
+
+struct KEYBDINPUT {
+	WORD wVk;
+	WORD wScan;
+	DWORD dwFlags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+}
+alias KEYBDINPUT* PKEYBDINPUT;
+
+struct HARDWAREINPUT {
+	DWORD uMsg;
+	WORD wParamL;
+	WORD wParamH;
+}
+alias HARDWAREINPUT* PHARDWAREINPUT;
+
+struct INPUT {
+	DWORD type;
+	union {
+		MOUSEINPUT mi;
+		KEYBDINPUT ki;
+		HARDWAREINPUT hi;
+	}
+}
+alias INPUT* PINPUT, LPINPUT;
+}// (_WIN32_WINNT >= 0x403)
+
+static if (WINVER >= 0x500) {
+struct GUITHREADINFO {
+	DWORD cbSize = this.sizeof;
+	DWORD flags;
+	HWND hwndActive;
+	HWND hwndFocus;
+	HWND hwndCapture;
+	HWND hwndMenuOwner;
+	HWND hwndMoveSize;
+	HWND hwndCaret;
+	RECT rcCaret;
+}
+alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO;
+extern (Windows) {
+alias void function (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD) WINEVENTPROC;
+}
+
+}// (WINVER >= 0x500)
+
+static if (_WIN32_WINNT >= 0x501) {
+struct BSMINFO {
+	UINT  cbSize = this.sizeof;
+	HDESK hdesk;
+	HWND  hwnd;
+	LUID  luid;
+}
+alias BSMINFO* PBSMINFO;
+
+typedef HANDLE HRAWINPUT;
+
+struct RAWINPUTHEADER {
+	DWORD dwType;
+	DWORD dwSize;
+	HANDLE hDevice;
+	WPARAM wParam;
+}
+alias RAWINPUTHEADER* PRAWINPUTHEADER;
+
+struct RAWMOUSE {
+	USHORT usFlags;
+	union {
+		ULONG ulButtons;
+		struct {
+			USHORT usButtonFlags;
+			USHORT usButtonData;
+		}
+	}
+	ULONG ulRawButtons;
+	LONG lLastX;
+	LONG lLastY;
+	ULONG ulExtraInformation;
+}
+alias RAWMOUSE* PRAWMOUSE, LPRAWMOUSE;
+
+struct RAWKEYBOARD {
+	USHORT MakeCode;
+	USHORT Flags;
+	USHORT Reserved;
+	USHORT VKey;
+	UINT Message;
+	ULONG ExtraInformation;
+}
+alias RAWKEYBOARD* PRAWKEYBOARD, LPRAWKEYBOARD;
+
+struct RAWHID {
+	DWORD dwSizeHid;
+	DWORD dwCount;
+	BYTE bRawData;
+}
+alias RAWHID* PRAWHID, LPRAWHID;
+
+struct RAWINPUT {
+	RAWINPUTHEADER header;
+	union _data {
+		RAWMOUSE    mouse;
+		RAWKEYBOARD keyboard;
+		RAWHID      hid;
+	}
+	_data data;
+}
+alias RAWINPUT* PRAWINPUT, LPRAWINPUT;
+
+struct RAWINPUTDEVICE {
+	USHORT usUsagePage;
+	USHORT usUsage;
+	DWORD dwFlags;
+	HWND hwndTarget;
+}
+alias RAWINPUTDEVICE* PRAWINPUTDEVICE, LPRAWINPUTDEVICE;
+alias RAWINPUTDEVICE* PCRAWINPUTDEVICE;
+
+struct RAWINPUTDEVICELIST {
+	HANDLE hDevice;
+	DWORD dwType;
+}
+alias RAWINPUTDEVICELIST* PRAWINPUTDEVICELIST;
+
+struct RID_DEVICE_INFO_MOUSE {
+	DWORD dwId;
+	DWORD dwNumberOfButtons;
+	DWORD dwSampleRate;
+	BOOL  fHasHorizontalWheel;
+}
+
+struct RID_DEVICE_INFO_KEYBOARD {
+	DWORD dwType;
+	DWORD dwSubType;
+	DWORD dwKeyboardMode;
+	DWORD dwNumberOfFunctionKeys;
+	DWORD dwNumberOfIndicators;
+	DWORD dwNumberOfKeysTotal;
+}
+
+struct RID_DEVICE_INFO_HID {
+	DWORD dwVendorId;
+	DWORD dwProductId;
+	DWORD dwVersionNumber;
+	USHORT usUsagePage;
+	USHORT usUsage;
+}
+
+struct RID_DEVICE_INFO {
+	DWORD cbSize = this.sizeof;
+	DWORD dwType;
+	union {
+		RID_DEVICE_INFO_MOUSE mouse;
+		RID_DEVICE_INFO_KEYBOARD keyboard;
+		RID_DEVICE_INFO_HID hid;
+	}
+}
+}// (_WIN32_WINNT >= 0x501)
+
+struct MSLLHOOKSTRUCT {
+	POINT pt;
+	DWORD mouseData;
+	DWORD flags;
+	DWORD time;
+	ULONG_PTR dwExtraInfo;
+}
+alias MSLLHOOKSTRUCT* PMSLLHOOKSTRUCT;
+
+alias CharToOemA AnsiToOem;
+alias OemToCharA OemToAnsi;
+alias CharToOemBuffA AnsiToOemBuff;
+alias OemToCharBuffA OemToAnsiBuff;
+alias CharUpperA AnsiUpper;
+alias CharUpperBuffA AnsiUpperBuff;
+alias CharLowerA AnsiLower;
+alias CharLowerBuffA AnsiLowerBuff;
+alias CharNextA AnsiNext;
+alias CharPrevA AnsiPrev;
+
+alias MAKELONG MAKEWPARAM;
+alias MAKELONG MAKELPARAM;
+alias MAKELONG MAKELRESULT;
+
+//MACRO #define POINTSTOPOINT(p, ps) { (p).x=LOWORD(*(DWORD* )&ps); (p).y=HIWORD(*(DWORD* )&ps); }
+//MACRO #define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x, (p).y))
+
+extern (Windows) {
+
+HKL ActivateKeyboardLayout(HKL, UINT);
+BOOL AdjustWindowRect(LPRECT, DWORD, BOOL);
+BOOL AdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD);
+BOOL AnyPopup();
+BOOL AppendMenuA(HMENU, UINT, UINT_PTR, LPCSTR);
+BOOL AppendMenuW(HMENU, UINT, UINT_PTR, LPCWSTR);
+UINT ArrangeIconicWindows(HWND);
+BOOL AttachThreadInput(DWORD, DWORD, BOOL);
+HDWP BeginDeferWindowPos(int);
+HDC BeginPaint(HWND, LPPAINTSTRUCT);
+BOOL BringWindowToTop(HWND);
+BOOL CallMsgFilterA(LPMSG, INT);
+BOOL CallMsgFilterW(LPMSG, INT);
+LRESULT CallNextHookEx(HHOOK, int, WPARAM, LPARAM);
+LRESULT CallWindowProcA(WNDPROC, HWND, UINT, WPARAM, LPARAM);
+LRESULT CallWindowProcW(WNDPROC, HWND, UINT, WPARAM, LPARAM);
+WORD CascadeWindows(HWND, UINT, LPCRECT, UINT, HWND*);
+BOOL ChangeClipboardChain(HWND, HWND);
+
+LONG ChangeDisplaySettingsA(PDEVMODEA, DWORD);
+LONG ChangeDisplaySettingsW(PDEVMODEW, DWORD);
+LONG ChangeDisplaySettingsExA(LPCSTR, LPDEVMODEA, HWND, DWORD, LPVOID);
+LONG ChangeDisplaySettingsExW(LPCWSTR, LPDEVMODEW, HWND, DWORD, LPVOID);
+
+BOOL ChangeMenuA(HMENU, UINT, LPCSTR, UINT, UINT);
+BOOL ChangeMenuW(HMENU, UINT, LPCWSTR, UINT, UINT);
+LPSTR CharLowerA(LPSTR);
+LPWSTR CharLowerW(LPWSTR);
+DWORD CharLowerBuffA(LPSTR, DWORD);
+DWORD CharLowerBuffW(LPWSTR, DWORD);
+LPSTR CharNextA(LPCSTR);
+LPWSTR CharNextW(LPCWSTR);
+LPSTR CharNextExA(WORD, LPCSTR, DWORD);
+LPWSTR CharNextExW(WORD, LPCWSTR, DWORD);
+LPSTR CharPrevA(LPCSTR, LPCSTR);
+LPWSTR CharPrevW(LPCWSTR, LPCWSTR);
+LPSTR CharPrevExA(WORD, LPCSTR, LPCSTR, DWORD);
+LPWSTR CharPrevExW(WORD, LPCWSTR, LPCWSTR, DWORD);
+BOOL CharToOemA(LPCSTR, LPSTR);
+BOOL CharToOemW(LPCWSTR, LPSTR);
+BOOL CharToOemBuffA(LPCSTR, LPSTR, DWORD);
+BOOL CharToOemBuffW(LPCWSTR, LPSTR, DWORD);
+LPSTR CharUpperA(LPSTR);
+LPWSTR CharUpperW(LPWSTR);
+DWORD CharUpperBuffA(LPSTR, DWORD);
+DWORD CharUpperBuffW(LPWSTR, DWORD);
+BOOL CheckDlgButton(HWND, int, UINT);
+DWORD CheckMenuItem(HMENU, UINT, UINT);
+BOOL CheckMenuRadioItem(HMENU, UINT, UINT, UINT, UINT);
+BOOL CheckRadioButton(HWND, int, int, int);
+HWND ChildWindowFromPoint(HWND, POINT);
+HWND ChildWindowFromPointEx(HWND, POINT, UINT);
+BOOL ClientToScreen(HWND, LPPOINT);
+BOOL ClipCursor(LPCRECT);
+BOOL CloseClipboard();
+BOOL CloseDesktop(HDESK);
+BOOL CloseWindow(HWND);
+BOOL CloseWindowStation(HWINSTA);
+int CopyAcceleratorTableA(HACCEL, LPACCEL, int);
+int CopyAcceleratorTableW(HACCEL, LPACCEL, int);
+
+HICON CopyIcon(HICON);
+HANDLE CopyImage(HANDLE, UINT, int, int, UINT);
+BOOL CopyRect(LPRECT, LPCRECT);
+int CountClipboardFormats();
+HACCEL CreateAcceleratorTableA(LPACCEL, int);
+HACCEL CreateAcceleratorTableW(LPACCEL, int);
+BOOL CreateCaret(HWND, HBITMAP, int, int);
+HCURSOR CreateCursor(HINSTANCE, int, int, int, int, PCVOID, PCVOID);
+
+HDESK CreateDesktopA(LPCSTR, LPCSTR, LPDEVMODEA, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES);
+HDESK CreateDesktopW(LPCWSTR, LPCWSTR, LPDEVMODEW, DWORD, ACCESS_MASK, LPSECURITY_ATTRIBUTES);
+
+HWND CreateDialogParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
+HWND CreateDialogParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM);
+HWND CreateDialogIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
+HWND CreateDialogIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
+
+HICON CreateIcon(HINSTANCE, int, int, BYTE, BYTE, BYTE*, BYTE*);
+HICON CreateIconFromResource(PBYTE, DWORD, BOOL, DWORD);
+HICON CreateIconFromResourceEx(PBYTE, DWORD, BOOL, DWORD, int, int, UINT);
+HICON CreateIconIndirect(PICONINFO);
+HWND CreateMDIWindowA(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM);
+HWND CreateMDIWindowW(LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HINSTANCE, LPARAM);
+HMENU CreateMenu();
+HMENU CreatePopupMenu();
+
+HWND CreateWindowExA(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
+HWND CreateWindowExW(DWORD, LPCWSTR, LPCWSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, LPVOID);
+
+HWINSTA CreateWindowStationA(LPSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES);
+HWINSTA CreateWindowStationW(LPWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES);
+LRESULT DefDlgProcA(HWND, UINT, WPARAM, LPARAM);
+LRESULT DefDlgProcW(HWND, UINT, WPARAM, LPARAM);
+HDWP DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT);
+LRESULT DefFrameProcA(HWND, HWND, UINT, WPARAM, LPARAM);
+LRESULT DefFrameProcW(HWND, HWND, UINT, WPARAM, LPARAM);
+
+LRESULT DefMDIChildProcA(HWND, UINT, WPARAM, LPARAM);
+LRESULT DefMDIChildProcW(HWND, UINT, WPARAM, LPARAM);
+LRESULT DefWindowProcA(HWND, UINT, WPARAM, LPARAM);
+LRESULT DefWindowProcW(HWND, UINT, WPARAM, LPARAM);
+BOOL DeleteMenu(HMENU, UINT, UINT);
+BOOL DeregisterShellHookWindow(HWND);
+BOOL DestroyAcceleratorTable(HACCEL);
+BOOL DestroyCaret();
+BOOL DestroyCursor(HCURSOR);
+BOOL DestroyIcon(HICON);
+BOOL DestroyMenu(HMENU);
+BOOL DestroyWindow(HWND);
+
+int DialogBoxParamA(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM);
+int DialogBoxParamW(HINSTANCE, LPCWSTR, HWND, DLGPROC, LPARAM);
+int DialogBoxIndirectParamA(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
+int DialogBoxIndirectParamW(HINSTANCE, LPCDLGTEMPLATE, HWND, DLGPROC, LPARAM);
+
+} // extern (Windows)
+
+HCURSOR CopyCursor(HCURSOR c)
+{
+	return cast(HCURSOR)CopyIcon(cast(HICON)c);
+}
+
+HWND CreateDialogA(HINSTANCE h, LPCSTR n, HWND w, DLGPROC f)
+{
+	return CreateDialogParamA(h, n, w, f, 0);
+}
+
+HWND CreateDialogW(HINSTANCE h, LPCWSTR n, HWND w, DLGPROC f)
+{
+	return CreateDialogParamW(h, n, w, f, 0);
+}
+
+HWND CreateDialogIndirectA(HINSTANCE h, LPCDLGTEMPLATE t, HWND w , DLGPROC f)
+{
+	return CreateDialogIndirectParamA(h, t, w, f, 0);
+}
+
+HWND CreateDialogIndirectW(HINSTANCE h, LPCDLGTEMPLATE t, HWND w , DLGPROC f)
+{
+	return CreateDialogIndirectParamW(h, t, w, f, 0);
+}
+
+
+HWND CreateWindowA(LPCSTR a, LPCSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k)
+{
+	return CreateWindowExA(0, a, b, c, d, e, f, g, h, i, j, k);
+}
+
+HWND CreateWindowW(LPCWSTR a, LPCWSTR b, DWORD c, int d, int e, int f, int g, HWND h, HMENU i, HINSTANCE j, LPVOID k)
+{
+	return CreateWindowExW(0, a, b, c, d, e, f, g, h, i, j, k);
+}
+
+int DialogBoxA(HINSTANCE i, LPCSTR t, HWND p, DLGPROC f)
+{
+	return DialogBoxParamA(i, t, p, f, 0);
+}
+
+int DialogBoxW(HINSTANCE i, LPCWSTR t, HWND p, DLGPROC f)
+{
+	return DialogBoxParamW(i, t, p, f, 0);
+}
+
+int DialogBoxIndirectA(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f)
+{
+	return DialogBoxIndirectParamA(i, t, p, f, 0);
+}
+
+int DialogBoxIndirectW(HINSTANCE i, LPCDLGTEMPLATE t, HWND p, DLGPROC f)
+{
+	return DialogBoxIndirectParamW(i, t, p, f, 0);
+}
+
+BOOL ExitWindows(UINT r, DWORD c)
+{
+	return ExitWindowsEx(EWX_LOGOFF, 0);
+}
+alias GetWindow GetNextWindow;
+
+extern (Windows):
+LONG DispatchMessageA( MSG*);
+LONG DispatchMessageW( MSG*);
+int DlgDirListA(HWND, LPSTR, int, int, UINT);
+int DlgDirListW(HWND, LPWSTR, int, int, UINT);
+int DlgDirListComboBoxA(HWND, LPSTR, int, int, UINT);
+int DlgDirListComboBoxW(HWND, LPWSTR, int, int, UINT);
+BOOL DlgDirSelectComboBoxExA(HWND, LPSTR, int, int);
+BOOL DlgDirSelectComboBoxExW(HWND, LPWSTR, int, int);
+BOOL DlgDirSelectExA(HWND, LPSTR, int, int);
+BOOL DlgDirSelectExW(HWND, LPWSTR, int, int);
+BOOL DragDetect(HWND, POINT);
+DWORD DragObject(HWND, HWND, UINT, DWORD, HCURSOR);
+BOOL DrawAnimatedRects(HWND, int, LPCRECT, LPCRECT);
+BOOL DrawCaption(HWND, HDC, LPCRECT, UINT);
+BOOL DrawEdge(HDC, LPRECT, UINT, UINT);
+BOOL DrawFocusRect(HDC, LPCRECT);
+BOOL DrawFrameControl(HDC, LPRECT, UINT, UINT);
+BOOL DrawIcon(HDC, int, int, HICON);
+BOOL DrawIconEx(HDC, int, int, HICON, int, int, UINT, HBRUSH, UINT);
+BOOL DrawMenuBar(HWND);
+BOOL DrawStateA(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
+BOOL DrawStateW(HDC, HBRUSH, DRAWSTATEPROC, LPARAM, WPARAM, int, int, int, int, UINT);
+int DrawTextA(HDC, LPCSTR, int, LPRECT, UINT);
+int DrawTextW(HDC, LPCWSTR, int, LPRECT, UINT);
+int DrawTextExA(HDC, LPSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
+int DrawTextExW(HDC, LPWSTR, int, LPRECT, UINT, LPDRAWTEXTPARAMS);
+BOOL EmptyClipboard();
+BOOL EnableMenuItem(HMENU, UINT, UINT);
+BOOL EnableScrollBar(HWND, UINT, UINT);
+BOOL EnableWindow(HWND, BOOL);
+BOOL EndDeferWindowPos(HDWP);
+BOOL EndDialog(HWND, int);
+BOOL EndMenu();
+BOOL EndPaint(HWND, PAINTSTRUCT*);
+BOOL EnumChildWindows(HWND, ENUMWINDOWSPROC, LPARAM);
+UINT EnumClipboardFormats(UINT);
+BOOL EnumDesktopsA(HWINSTA, DESKTOPENUMPROCA, LPARAM);
+BOOL EnumDesktopsW(HWINSTA, DESKTOPENUMPROCW, LPARAM);
+BOOL EnumDesktopWindows(HDESK, ENUMWINDOWSPROC, LPARAM);
+BOOL EnumDisplaySettingsA(LPCSTR, DWORD, PDEVMODEA);
+BOOL EnumDisplaySettingsW(LPCWSTR, DWORD, PDEVMODEW);
+
+BOOL EnumDisplayDevicesA(LPCSTR, DWORD, PDISPLAY_DEVICEA, DWORD);
+BOOL EnumDisplayDevicesW(LPCWSTR, DWORD, PDISPLAY_DEVICEW, DWORD);
+
+int EnumPropsA(HWND, PROPENUMPROCA);
+int EnumPropsW(HWND, PROPENUMPROCW);
+int EnumPropsExA(HWND, PROPENUMPROCEXA, LPARAM);
+int EnumPropsExW(HWND, PROPENUMPROCEXW, LPARAM);
+
+BOOL EnumThreadWindows(DWORD, WNDENUMPROC, LPARAM);
+BOOL EnumWindows(WNDENUMPROC, LPARAM);
+BOOL EnumWindowStationsA(WINSTAENUMPROCA, LPARAM);
+BOOL EnumWindowStationsW(WINSTAENUMPROCW, LPARAM);
+BOOL EqualRect(LPCRECT, LPCRECT);
+
+BOOL ExitWindowsEx(UINT, DWORD);
+HWND FindWindowA(LPCSTR, LPCSTR);
+HWND FindWindowExA(HWND, HWND, LPCSTR, LPCSTR);
+HWND FindWindowExW(HWND, HWND, LPCWSTR, LPCWSTR);
+HWND FindWindowW(LPCWSTR, LPCWSTR);
+BOOL FlashWindow(HWND, BOOL);
+
+int FrameRect(HDC, LPCRECT, HBRUSH);
+BOOL FrameRgn(HDC, HRGN, HBRUSH, int, int);
+HWND GetActiveWindow();
+HWND GetAncestor(HWND, UINT);
+SHORT GetAsyncKeyState(int);
+HWND GetCapture();
+UINT GetCaretBlinkTime();
+BOOL GetCaretPos(LPPOINT);
+BOOL GetClassInfoA(HINSTANCE, LPCSTR, LPWNDCLASSA);
+BOOL GetClassInfoExA(HINSTANCE, LPCSTR, LPWNDCLASSEXA);
+BOOL GetClassInfoW(HINSTANCE, LPCWSTR, LPWNDCLASSW);
+BOOL GetClassInfoExW(HINSTANCE, LPCWSTR, LPWNDCLASSEXW);
+DWORD GetClassLongA(HWND, int);
+DWORD GetClassLongW(HWND, int);
+int GetClassNameA(HWND, LPSTR, int);
+int GetClassNameW(HWND, LPWSTR, int);
+WORD GetClassWord(HWND, int);
+BOOL GetClientRect(HWND, LPRECT);
+HANDLE GetClipboardData(UINT);
+int GetClipboardFormatNameA(UINT, LPSTR, int);
+int GetClipboardFormatNameW(UINT, LPWSTR, int);
+HWND GetClipboardOwner();
+HWND GetClipboardViewer();
+BOOL GetClipCursor(LPRECT);
+BOOL GetCursorPos(LPPOINT);
+HDC GetDC(HWND);
+HDC GetDCEx(HWND, HRGN, DWORD);
+HWND GetDesktopWindow();
+int GetDialogBaseUnits();
+int GetDlgCtrlID(HWND);
+HWND GetDlgItem(HWND, int);
+UINT GetDlgItemInt(HWND, int, PBOOL, BOOL);
+UINT GetDlgItemTextA(HWND, int, LPSTR, int);
+UINT GetDlgItemTextW(HWND, int, LPWSTR, int);
+UINT GetDoubleClickTime();
+HWND GetFocus();
+HWND GetForegroundWindow();
+
+BOOL GetIconInfo(HICON, PICONINFO);
+BOOL GetInputState();
+UINT GetKBCodePage();
+HKL GetKeyboardLayout(DWORD);
+UINT GetKeyboardLayoutList(int, HKL*);
+BOOL GetKeyboardLayoutNameA(LPSTR);
+BOOL GetKeyboardLayoutNameW(LPWSTR);
+BOOL GetKeyboardState(PBYTE);
+int GetKeyboardType(int);
+int GetKeyNameTextA(LONG, LPSTR, int);
+int GetKeyNameTextW(LONG, LPWSTR, int);
+SHORT GetKeyState(int);
+HWND GetLastActivePopup(HWND);
+HMENU GetMenu(HWND);
+LONG GetMenuCheckMarkDimensions();
+DWORD GetMenuContextHelpId(HMENU);
+UINT GetMenuDefaultItem(HMENU, UINT, UINT);
+int GetMenuItemCount(HMENU);
+UINT GetMenuItemID(HMENU, int);
+BOOL GetMenuItemInfoA(HMENU, UINT, BOOL, LPMENUITEMINFOA);
+BOOL GetMenuItemInfoW(HMENU, UINT, BOOL, LPMENUITEMINFOW);
+BOOL GetMenuItemRect(HWND, HMENU, UINT, LPRECT);
+UINT GetMenuState(HMENU, UINT, UINT);
+int GetMenuStringA(HMENU, UINT, LPSTR, int, UINT);
+int GetMenuStringW(HMENU, UINT, LPWSTR, int, UINT);
+BOOL GetMessageA(LPMSG, HWND, UINT, UINT);
+BOOL GetMessageW(LPMSG, HWND, UINT, UINT);
+LONG GetMessageExtraInfo();
+DWORD GetMessagePos();
+LONG GetMessageTime();
+
+HWND GetNextDlgGroupItem(HWND, HWND, BOOL);
+HWND GetNextDlgTabItem(HWND, HWND, BOOL);
+
+HWND GetOpenClipboardWindow();
+HWND GetParent(HWND);
+int GetPriorityClipboardFormat(UINT*, int);
+HANDLE GetPropA(HWND, LPCSTR);
+HANDLE GetPropW(HWND, LPCWSTR);
+
+DWORD GetQueueStatus(UINT);
+BOOL GetScrollInfo(HWND, int, LPSCROLLINFO);
+int GetScrollPos(HWND, int);
+BOOL GetScrollRange(HWND, int, LPINT, LPINT);
+
+HMENU GetSubMenu(HMENU, int);
+DWORD GetSysColor(int);
+HBRUSH GetSysColorBrush(int);
+
+HMENU GetSystemMenu(HWND, BOOL);
+int GetSystemMetrics(int);
+DWORD GetTabbedTextExtentA(HDC, LPCSTR, int, int, LPINT);
+DWORD GetTabbedTextExtentW(HDC, LPCWSTR, int, int, LPINT);
+LONG GetWindowLongA(HWND, int);
+LONG GetWindowLongW(HWND, int);
+
+HDESK GetThreadDesktop(DWORD);
+HWND GetTopWindow(HWND);
+BOOL GetUpdateRect(HWND, LPRECT, BOOL);
+int GetUpdateRgn(HWND, HRGN, BOOL);
+BOOL GetUserObjectInformationA(HANDLE, int, PVOID, DWORD, PDWORD);
+BOOL GetUserObjectInformationW(HANDLE, int, PVOID, DWORD, PDWORD);
+BOOL GetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD);
+HWND GetWindow(HWND, UINT);
+DWORD GetWindowContextHelpId(HWND);
+HDC GetWindowDC(HWND);
+BOOL GetWindowPlacement(HWND, WINDOWPLACEMENT*);
+BOOL GetWindowRect(HWND, LPRECT);
+int GetWindowRgn(HWND, HRGN);
+int GetWindowTextA(HWND, LPSTR, int);
+int GetWindowTextLengthA(HWND);
+int GetWindowTextLengthW(HWND);
+int GetWindowTextW(HWND, LPWSTR, int);
+WORD GetWindowWord(HWND, int);
+BOOL GetAltTabInfoA(HWND, int, PALTTABINFO, LPSTR, UINT);
+BOOL GetAltTabInfoW(HWND, int, PALTTABINFO, LPWSTR, UINT);
+BOOL GetComboBoxInfo(HWND, PCOMBOBOXINFO);
+BOOL GetCursorInfo(PCURSORINFO);
+BOOL GetLastInputInfo(PLASTINPUTINFO);
+DWORD GetListBoxInfo(HWND);
+BOOL GetMenuBarInfo(HWND, LONG, LONG, PMENUBARINFO);
+BOOL GetMenuInfo(HMENU, LPMENUINFO);
+BOOL GetScrollBarInfo(HWND, LONG, PSCROLLBARINFO);
+BOOL GetTitleBarInfo(HWND, PTITLEBARINFO);
+BOOL GetWindowInfo(HWND, PWINDOWINFO);
+UINT GetWindowModuleFileNameA(HWND, LPSTR, UINT);
+UINT GetWindowModuleFileNameW(HWND, LPWSTR, UINT);
+BOOL GrayStringA(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
+BOOL GrayStringW(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
+BOOL HideCaret(HWND);
+BOOL HiliteMenuItem(HWND, HMENU, UINT, UINT);
+BOOL InflateRect(LPRECT, int, int);
+BOOL InSendMessage();
+BOOL InsertMenuA(HMENU, UINT, UINT, UINT, LPCSTR);
+BOOL InsertMenuW(HMENU, UINT, UINT, UINT, LPCWSTR);
+BOOL InsertMenuItemA(HMENU, UINT, BOOL, LPCMENUITEMINFOA);
+BOOL InsertMenuItemW(HMENU, UINT, BOOL, LPCMENUITEMINFOW);
+INT InternalGetWindowText(HWND, LPWSTR, INT);
+BOOL IntersectRect(LPRECT, LPCRECT, LPCRECT);
+BOOL InvalidateRect(HWND, LPCRECT, BOOL);
+BOOL InvalidateRgn(HWND, HRGN, BOOL);
+BOOL InvertRect(HDC, LPCRECT);
+BOOL IsCharAlphaA(CHAR ch);
+BOOL IsCharAlphaNumericA(CHAR);
+BOOL IsCharAlphaNumericW(WCHAR);
+BOOL IsCharAlphaW(WCHAR);
+BOOL IsCharLowerA(CHAR);
+BOOL IsCharLowerW(WCHAR);
+BOOL IsCharUpperA(CHAR);
+BOOL IsCharUpperW(WCHAR);
+BOOL IsChild(HWND, HWND);
+BOOL IsClipboardFormatAvailable(UINT);
+BOOL IsDialogMessageA(HWND, LPMSG);
+BOOL IsDialogMessageW(HWND, LPMSG);
+UINT IsDlgButtonChecked(HWND, int);
+BOOL IsIconic(HWND);
+BOOL IsMenu(HMENU);
+BOOL IsRectEmpty(LPCRECT);
+BOOL IsWindow(HWND);
+BOOL IsWindowEnabled(HWND);
+BOOL IsWindowUnicode(HWND);
+BOOL IsWindowVisible(HWND);
+BOOL IsZoomed(HWND);
+void keybd_event(BYTE, BYTE, DWORD, DWORD);
+BOOL KillTimer(HWND, UINT);
+HACCEL LoadAcceleratorsA(HINSTANCE, LPCSTR);
+HACCEL LoadAcceleratorsW(HINSTANCE, LPCWSTR);
+HBITMAP LoadBitmapA(HINSTANCE, LPCSTR);
+HBITMAP LoadBitmapW(HINSTANCE, LPCWSTR);
+HCURSOR LoadCursorA(HINSTANCE, LPCSTR);
+HCURSOR LoadCursorFromFileA(LPCSTR);
+HCURSOR LoadCursorFromFileW(LPCWSTR);
+HCURSOR LoadCursorW(HINSTANCE, LPCWSTR);
+HICON LoadIconA(HINSTANCE, LPCSTR);
+HICON LoadIconW(HINSTANCE, LPCWSTR);
+HANDLE LoadImageA(HINSTANCE, LPCSTR, UINT, int, int, UINT);
+HANDLE LoadImageW(HINSTANCE, LPCWSTR, UINT, int, int, UINT);
+HKL LoadKeyboardLayoutA(LPCSTR, UINT);
+HKL LoadKeyboardLayoutW(LPCWSTR, UINT);
+HMENU LoadMenuA(HINSTANCE, LPCSTR);
+HMENU LoadMenuIndirectA( MENUTEMPLATE*);
+HMENU LoadMenuIndirectW( MENUTEMPLATE*);
+HMENU LoadMenuW(HINSTANCE, LPCWSTR);
+int LoadStringA(HINSTANCE, UINT, LPSTR, int);
+int LoadStringW(HINSTANCE, UINT, LPWSTR, int);
+BOOL LockWindowUpdate(HWND);
+int LookupIconIdFromDirectory(PBYTE, BOOL);
+int LookupIconIdFromDirectoryEx(PBYTE, BOOL, int, int, UINT);
+BOOL MapDialogRect(HWND, LPRECT);
+UINT MapVirtualKeyA(UINT, UINT);
+UINT MapVirtualKeyExA(UINT, UINT, HKL);
+UINT MapVirtualKeyExW(UINT, UINT, HKL);
+UINT MapVirtualKeyW(UINT, UINT);
+int MapWindowPoints(HWND, HWND, LPPOINT, UINT);
+int MenuItemFromPoint(HWND, HMENU, POINT);
+BOOL MessageBeep(UINT);
+int MessageBoxA(HWND, LPCSTR, LPCSTR, UINT);
+int MessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT);
+int MessageBoxExA(HWND, LPCSTR, LPCSTR, UINT, WORD);
+int MessageBoxExW(HWND, LPCWSTR, LPCWSTR, UINT, WORD);
+int MessageBoxIndirectA(MSGBOXPARAMSA*);
+int MessageBoxIndirectW(MSGBOXPARAMSW*);
+BOOL ModifyMenuA(HMENU, UINT, UINT, UINT, LPCSTR);
+BOOL ModifyMenuW(HMENU, UINT, UINT, UINT, LPCWSTR);
+void mouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR);
+BOOL MoveWindow(HWND, int, int, int, int, BOOL);
+DWORD MsgWaitForMultipleObjects(DWORD, HANDLE*, BOOL, DWORD, DWORD);
+DWORD MsgWaitForMultipleObjectsEx(DWORD, HANDLE*, DWORD, DWORD, DWORD);
+DWORD OemKeyScan(WORD);
+BOOL OemToCharA(LPCSTR, LPSTR);
+BOOL OemToCharBuffA(LPCSTR, LPSTR, DWORD);
+BOOL OemToCharBuffW(LPCSTR, LPWSTR, DWORD);
+BOOL OemToCharW(LPCSTR, LPWSTR);
+BOOL OffsetRect(LPRECT, int, int);
+BOOL OpenClipboard(HWND);
+HDESK OpenDesktopA(LPSTR, DWORD, BOOL, DWORD);
+HDESK OpenDesktopW(LPWSTR, DWORD, BOOL, DWORD);
+BOOL OpenIcon(HWND);
+HDESK OpenInputDesktop(DWORD, BOOL, DWORD);
+HWINSTA OpenWindowStationA(LPSTR, BOOL, DWORD);
+HWINSTA OpenWindowStationW(LPWSTR, BOOL, DWORD);
+BOOL PaintDesktop(HDC);
+BOOL PeekMessageA(LPMSG, HWND, UINT, UINT, UINT);
+BOOL PeekMessageW(LPMSG, HWND, UINT, UINT, UINT);
+BOOL PostMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL PostMessageW(HWND, UINT, WPARAM, LPARAM);
+void PostQuitMessage(int);
+BOOL PostThreadMessageA(DWORD, UINT, WPARAM, LPARAM);
+BOOL PostThreadMessageW(DWORD, UINT, WPARAM, LPARAM);
+BOOL PtInRect(LPCRECT, POINT);
+HWND RealChildWindowFromPoint(HWND, POINT);
+UINT RealGetWindowClassA(HWND, LPSTR, UINT);
+UINT RealGetWindowClassW(HWND, LPWSTR, UINT);
+BOOL RedrawWindow(HWND, LPCRECT, HRGN, UINT);
+ATOM RegisterClassA(WNDCLASSA*);
+ATOM RegisterClassW(WNDCLASSW*);
+ATOM RegisterClassExA(WNDCLASSEXA*);
+ATOM RegisterClassExW(WNDCLASSEXW*);
+UINT RegisterClipboardFormatA(LPCSTR);
+UINT RegisterClipboardFormatW(LPCWSTR);
+BOOL RegisterHotKey(HWND, int, UINT, UINT);
+UINT RegisterWindowMessageA(LPCSTR);
+UINT RegisterWindowMessageW(LPCWSTR);
+BOOL ReleaseCapture();
+int ReleaseDC(HWND, HDC);
+BOOL RemoveMenu(HMENU, UINT, UINT);
+HANDLE RemovePropA(HWND, LPCSTR);
+HANDLE RemovePropW(HWND, LPCWSTR);
+BOOL ReplyMessage(LRESULT);
+BOOL ScreenToClient(HWND, LPPOINT);
+BOOL ScrollDC(HDC, int, int, LPCRECT, LPCRECT, HRGN, LPRECT);
+BOOL ScrollWindow(HWND, int, int, LPCRECT, LPCRECT);
+int ScrollWindowEx(HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT);
+LONG SendDlgItemMessageA(HWND, int, UINT, WPARAM, LPARAM);
+LONG SendDlgItemMessageW(HWND, int, UINT, WPARAM, LPARAM);
+LRESULT SendMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL SendMessageCallbackA(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD);
+BOOL SendMessageCallbackW(HWND, UINT, WPARAM, LPARAM, SENDASYNCPROC, DWORD);
+LRESULT SendMessageTimeoutA(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD);
+LRESULT SendMessageTimeoutW(HWND, UINT, WPARAM, LPARAM, UINT, UINT, PDWORD);
+LRESULT SendMessageW(HWND, UINT, WPARAM, LPARAM);
+BOOL SendNotifyMessageA(HWND, UINT, WPARAM, LPARAM);
+BOOL SendNotifyMessageW(HWND, UINT, WPARAM, LPARAM);
+HWND SetActiveWindow(HWND);
+HWND SetCapture(HWND hWnd);
+BOOL SetCaretBlinkTime(UINT);
+BOOL SetCaretPos(int, int);
+DWORD SetClassLongA(HWND, int, LONG);
+DWORD SetClassLongW(HWND, int, LONG);
+WORD SetClassWord(HWND, int, WORD);
+HANDLE SetClipboardData(UINT, HANDLE);
+HWND SetClipboardViewer(HWND);
+HCURSOR SetCursor(HCURSOR);
+BOOL SetCursorPos(int, int);
+void SetDebugErrorLevel(DWORD);
+BOOL SetDlgItemInt(HWND, int, UINT, BOOL);
+BOOL SetDlgItemTextA(HWND, int, LPCSTR);
+BOOL SetDlgItemTextW(HWND, int, LPCWSTR);
+BOOL SetDoubleClickTime(UINT);
+HWND SetFocus(HWND);
+BOOL SetForegroundWindow(HWND);
+BOOL SetKeyboardState(PBYTE);
+BOOL SetMenu(HWND, HMENU);
+BOOL SetMenuContextHelpId(HMENU, DWORD);
+BOOL SetMenuDefaultItem(HMENU, UINT, UINT);
+BOOL SetMenuInfo(HMENU, LPCMENUINFO);
+BOOL SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP);
+BOOL SetMenuItemInfoA(HMENU, UINT, BOOL, LPCMENUITEMINFOA);
+BOOL SetMenuItemInfoW( HMENU, UINT, BOOL, LPCMENUITEMINFOW);
+LPARAM SetMessageExtraInfo(LPARAM);
+BOOL SetMessageQueue(int);
+HWND SetParent(HWND, HWND);
+BOOL SetProcessWindowStation(HWINSTA);
+BOOL SetPropA(HWND, LPCSTR, HANDLE);
+BOOL SetPropW(HWND, LPCWSTR, HANDLE);
+BOOL SetRect(LPRECT, int, int, int, int);
+BOOL SetRectEmpty(LPRECT);
+int SetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL);
+int SetScrollPos(HWND, int, int, BOOL);
+BOOL SetScrollRange(HWND, int, int, int, BOOL);
+BOOL SetSysColors(int, INT* , COLORREF* );
+BOOL SetSystemCursor(HCURSOR, DWORD);
+BOOL SetThreadDesktop(HDESK);
+UINT SetTimer(HWND, UINT, UINT, TIMERPROC);
+BOOL SetUserObjectInformationA(HANDLE, int, PVOID, DWORD);
+BOOL SetUserObjectInformationW(HANDLE, int, PVOID, DWORD);
+BOOL SetUserObjectSecurity(HANDLE, PSECURITY_INFORMATION, PSECURITY_DESCRIPTOR);
+BOOL SetWindowContextHelpId(HWND, DWORD);
+LONG SetWindowLongA(HWND, int, LONG);
+LONG SetWindowLongW(HWND, int, LONG);
+BOOL SetWindowPlacement(HWND hWnd, WINDOWPLACEMENT*);
+BOOL SetWindowPos(HWND, HWND, int, int, int, int, UINT);
+int SetWindowRgn(HWND, HRGN, BOOL);
+HHOOK SetWindowsHookA(int, HOOKPROC);
+HHOOK SetWindowsHookW(int, HOOKPROC);
+HHOOK SetWindowsHookExA(int, HOOKPROC, HINSTANCE, DWORD);
+HHOOK SetWindowsHookExW(int, HOOKPROC, HINSTANCE, DWORD);
+BOOL SetWindowTextA(HWND, LPCSTR);
+BOOL SetWindowTextW(HWND, LPCWSTR);
+WORD SetWindowWord(HWND, int, WORD);
+BOOL ShowCaret(HWND);
+int ShowCursor(BOOL);
+BOOL ShowOwnedPopups(HWND, BOOL);
+BOOL ShowScrollBar(HWND, int, BOOL);
+BOOL ShowWindow(HWND, int);
+BOOL ShowWindowAsync(HWND, int);
+BOOL SubtractRect(LPRECT, LPCRECT, LPCRECT);
+BOOL SwapMouseButton(BOOL);
+BOOL SwitchDesktop(HDESK);
+BOOL SystemParametersInfoA(UINT, UINT, PVOID, UINT);
+BOOL SystemParametersInfoW(UINT, UINT, PVOID, UINT);
+LONG TabbedTextOutA(HDC, int, int, LPCSTR, int, int, LPINT, int);
+LONG TabbedTextOutW(HDC, int, int, LPCWSTR, int, int, LPINT, int);
+WORD TileWindows(HWND, UINT, LPCRECT, UINT, HWND* );
+int ToAscii(UINT, UINT, PBYTE, LPWORD, UINT);
+int ToAsciiEx(UINT, UINT, PBYTE, LPWORD, UINT, HKL);
+int ToUnicode(UINT, UINT, PBYTE, LPWSTR, int, UINT);
+int ToUnicodeEx(UINT, UINT, PBYTE, LPWSTR, int, UINT, HKL);
+BOOL TrackMouseEvent(LPTRACKMOUSEEVENT);
+BOOL TrackPopupMenu(HMENU, UINT, int, int, int, HWND, LPCRECT);
+BOOL TrackPopupMenuEx(HMENU, UINT, int, int, HWND, LPTPMPARAMS);
+int TranslateAcceleratorA(HWND, HACCEL, LPMSG);
+int TranslateAcceleratorW(HWND, HACCEL, LPMSG);
+BOOL TranslateMDISysAccel(HWND, LPMSG);
+BOOL TranslateMessage( MSG*);
+BOOL UnhookWindowsHook(int, HOOKPROC);
+BOOL UnhookWindowsHookEx(HHOOK);
+BOOL UnionRect(LPRECT, LPCRECT, LPCRECT);
+BOOL UnloadKeyboardLayout(HKL);
+BOOL UnregisterClassA(LPCSTR, HINSTANCE);
+BOOL UnregisterClassW(LPCWSTR, HINSTANCE);
+BOOL UnregisterHotKey(HWND, int);
+BOOL UpdateWindow(HWND);
+BOOL ValidateRect(HWND, LPCRECT);
+BOOL ValidateRgn(HWND, HRGN);
+SHORT VkKeyScanA(CHAR);
+SHORT VkKeyScanExA(CHAR, HKL);
+SHORT VkKeyScanExW(WCHAR, HKL);
+SHORT VkKeyScanW(WCHAR);
+DWORD WaitForInputIdle(HANDLE, DWORD);
+BOOL WaitMessage();
+HWND WindowFromDC(HDC hDC);
+HWND WindowFromPoint(POINT);
+UINT WinExec(LPCSTR, UINT);
+BOOL WinHelpA(HWND, LPCSTR, UINT, DWORD);
+BOOL WinHelpW(HWND, LPCWSTR, UINT, DWORD);
+
+extern (C) {
+	int wsprintfA(LPSTR, LPCSTR, ...);
+	int wsprintfW(LPWSTR, LPCWSTR, ...);
+}
+
+
+// These shouldn't be necessary for D.
+typedef char* va_list_;
+int wvsprintfA(LPSTR, LPCSTR, va_list_ arglist);
+int wvsprintfW(LPWSTR, LPCWSTR, va_list_ arglist);
+
+
+static if (_WIN32_WINDOWS == 0x400) {
+// On Win95, there's only one version.
+int BroadcastSystemMessage(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
+}
+static if (_WIN32_WINNT >= 0x400) {
+int BroadcastSystemMessageA(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
+int BroadcastSystemMessageW(DWORD, LPDWORD, UINT, WPARAM, LPARAM);
+}
+static if (_WIN32_WINNT >= 0x501) {
+int BroadcastSystemMessageExA(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO);
+int BroadcastSystemMessageExW(DWORD, LPDWORD, UINT, WPARAM, LPARAM, PBSMINFO);
+}
+
+static if (_WIN32_WINNT >= 0x403) {
+UINT SendInput(UINT, LPINPUT, int);
+}
+static if (_WIN32_WINNT >= 0x500) {
+BOOL AnimateWindow(HWND, DWORD, DWORD);
+BOOL EndTask(HWND, BOOL, BOOL);
+DWORD GetGuiResources(HANDLE, DWORD);
+HWND GetShellWindow();
+BOOL GetProcessDefaultLayout(DWORD*);
+BOOL IsHungAppWindow(HWND);
+BOOL LockWorkStation();
+HDEVNOTIFY RegisterDeviceNotificationA(HANDLE, LPVOID, DWORD);
+HDEVNOTIFY RegisterDeviceNotificationW(HANDLE, LPVOID, DWORD);
+BOOL SetProcessDefaultLayout(DWORD);
+void SwitchToThisWindow(HWND, BOOL);
+BOOL SetLayeredWindowAttributes(HWND, COLORREF, BYTE, DWORD);
+BOOL UpdateLayeredWindow(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);
+BOOL UserHandleGrantAccess(HANDLE, HANDLE, BOOL);
+}
+static if (_WIN32_WINNT >= 0x501) {
+UINT GetRawInputBuffer(PRAWINPUT, PUINT, UINT);
+UINT GetRawInputData(HRAWINPUT, UINT, LPVOID, PUINT, UINT);
+UINT GetRawInputDeviceInfoA(HANDLE, UINT, LPVOID, PUINT);
+UINT GetRawInputDeviceInfoW(HANDLE, UINT, LPVOID, PUINT);
+UINT GetRawInputDeviceList(PRAWINPUTDEVICELIST, PUINT, UINT);
+UINT GetRegisteredRawInputDevices(PRAWINPUTDEVICE, PUINT, UINT);
+LRESULT DefRawInputProc(PRAWINPUT*, INT, UINT);
+BOOL RegisterRawInputDevices(PCRAWINPUTDEVICE, UINT, UINT);
+
+BOOL IsGUIThread(BOOL);
+BOOL IsWinEventHookInstalled(DWORD);
+BOOL PrintWindow(HWND, HDC, UINT);
+BOOL GetLayeredWindowAttributes(HWND, COLORREF*, BYTE*, DWORD*);
+}
+static if (WINVER >= 0x410) {
+	BOOL EnumDisplayMonitors(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
+	BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFO);
+	BOOL GetMonitorInfoA(HMONITOR, LPMONITORINFOEXA);
+	BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFO);
+	BOOL GetMonitorInfoW(HMONITOR, LPMONITORINFOEXW);
+	HMONITOR MonitorFromPoint(POINT, DWORD);
+	HMONITOR MonitorFromRect(LPCRECT, DWORD);
+	HMONITOR MonitorFromWindow(HWND, DWORD);
+}
+static if (WINVER >= 0x500) {
+BOOL GetGUIThreadInfo(DWORD, LPGUITHREADINFO);
+void NotifyWinEvent(DWORD, HWND, LONG, LONG);
+HWINEVENTHOOK SetWinEventHook(UINT, UINT, HMODULE, WINEVENTPROC, DWORD, DWORD, UINT);
+BOOL UnhookWinEvent(HWINEVENTHOOK);
+BOOL UnregisterDeviceNotification(HANDLE);
+}
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+BOOL EnumDisplaySettingsExA(LPCSTR, DWORD, LPDEVMODEA, DWORD);
+BOOL EnumDisplaySettingsExW(LPCWSTR, DWORD, LPDEVMODEW, DWORD);
+BOOL FlashWindowEx(PFLASHWINFO);
+DWORD GetClipboardSequenceNumber();
+DWORD InSendMessageEx(LPVOID);
+}
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x490)) {
+BOOL AllowSetForegroundWindow(DWORD);
+BOOL LockSetForegroundWindow(UINT);
+int GetMouseMovePointsEx(UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD);
+}
+
+version (Win64) {
+LONG_PTR GetWindowLongPtrA(HWND, int);
+LONG_PTR GetWindowLongPtrW(HWND, int);
+LONG_PTR SetWindowLongPtrA(HWND, int, LONG_PTR);
+LONG_PTR SetWindowLongPtrW(HWND, int, LONG_PTR);
+} else {
+alias GetWindowLongA GetWindowLongPtrA;
+alias GetWindowLongW GetWindowLongPtrW;
+alias SetWindowLongA SetWindowLongPtrA;
+alias SetWindowLongW SetWindowLongPtrW;
+}
+
+
+// -----
+// Aliases for Unicode or Ansi
+version(Unicode) {
+
+alias EDITWORDBREAKPROCW EDITWORDBREAKPROC;
+alias PROPENUMPROCW PROPENUMPROC;
+alias PROPENUMPROCEXW PROPENUMPROCEX;
+alias DESKTOPENUMPROCW DESKTOPENUMPROC;
+alias WINSTAENUMPROCW WINSTAENUMPROC;
+alias MAKEINTRESOURCEW MAKEINTRESOURCE;
+
+alias WNDCLASSW WNDCLASS;
+alias WNDCLASSEXW WNDCLASSEX;
+alias MENUITEMINFOW MENUITEMINFO;
+alias LPCMENUITEMINFOW LPCMENUITEMINFO;
+alias MSGBOXPARAMSW MSGBOXPARAMS;
+alias HIGHCONTRASTW HIGHCONTRAST;
+alias SERIALKEYSW SERIALKEYS;
+alias SOUNDSENTRYW SOUNDSENTRY;
+alias CREATESTRUCTW CREATESTRUCT;
+alias CBT_CREATEWNDW CBT_CREATEWND;
+alias MDICREATESTRUCTW MDICREATESTRUCT;
+alias MULTIKEYHELPW MULTIKEYHELP;
+alias MONITORINFOEXW MONITORINFOEX;
+alias ICONMETRICSW ICONMETRICS;
+alias NONCLIENTMETRICSW NONCLIENTMETRICS;
+
+alias AppendMenuW AppendMenu;
+alias BroadcastSystemMessageW BroadcastSystemMessage;
+static if (_WIN32_WINNT >= 0x501) {
+alias BroadcastSystemMessageExW BroadcastSystemMessageEx;
+}
+alias CallMsgFilterW CallMsgFilter;
+alias CallWindowProcW CallWindowProc;
+alias ChangeMenuW ChangeMenu;
+alias CharLowerW CharLower;
+alias CharLowerBuffW CharLowerBuff;
+alias CharNextW CharNext;
+alias CharNextExW CharNextEx;
+alias CharPrevW CharPrev;
+alias CharPrevExW CharPrevEx;
+alias CharToOemW CharToOem;
+alias CharToOemBuffW CharToOemBuff;
+alias CharUpperW CharUpper;
+alias CharUpperBuffW CharUpperBuff;
+alias CopyAcceleratorTableW CopyAcceleratorTable;
+alias CreateAcceleratorTableW CreateAcceleratorTable;
+alias CreateDialogW CreateDialog;
+alias CreateDialogIndirectW CreateDialogIndirect;
+alias CreateDialogIndirectParamW CreateDialogIndirectParam;
+alias CreateDialogParamW CreateDialogParam;
+alias CreateMDIWindowW CreateMDIWindow;
+alias CreateWindowW CreateWindow;
+alias CreateWindowExW CreateWindowEx;
+alias CreateWindowStationW CreateWindowStation;
+alias DefDlgProcW DefDlgProc;
+alias DefFrameProcW DefFrameProc;
+alias DefMDIChildProcW DefMDIChildProc;
+alias DefWindowProcW DefWindowProc;
+alias DialogBoxW DialogBox;
+alias DialogBoxIndirectW DialogBoxIndirect;
+alias DialogBoxIndirectParamW DialogBoxIndirectParam;
+alias DialogBoxParamW DialogBoxParam;
+alias DispatchMessageW DispatchMessage;
+alias DlgDirListW DlgDirList;
+alias DlgDirListComboBoxW DlgDirListComboBox;
+alias DlgDirSelectComboBoxExW DlgDirSelectComboBoxEx;
+alias DlgDirSelectExW DlgDirSelectEx;
+alias DrawStateW DrawState;
+alias DrawTextW DrawText;
+alias DrawTextExW DrawTextEx;
+alias EnumDesktopsW EnumDesktops;
+alias EnumPropsW EnumProps;
+alias EnumPropsExW EnumPropsEx;
+alias EnumWindowStationsW EnumWindowStations;
+alias FindWindowW FindWindow;
+alias FindWindowExW FindWindowEx;
+alias GetClassInfoW GetClassInfo;
+alias GetClassInfoExW GetClassInfoEx;
+alias GetClassLongW GetClassLong;
+alias GetClassNameW GetClassName;
+alias GetClipboardFormatNameW GetClipboardFormatName;
+alias GetDlgItemTextW GetDlgItemText;
+alias GetKeyboardLayoutNameW GetKeyboardLayoutName;
+alias GetKeyNameTextW GetKeyNameText;
+alias GetMenuItemInfoW GetMenuItemInfo;
+alias GetMenuStringW GetMenuString;
+alias GetMessageW GetMessage;
+static if (WINVER >=0x410) {
+alias GetMonitorInfoW GetMonitorInfo;
+}
+alias GetPropW GetProp;
+static if (_WIN32_WINNT >= 0x501) {
+alias GetRawInputDeviceInfoW GetRawInputDeviceInfo;
+}
+alias GetTabbedTextExtentW GetTabbedTextExtent;
+alias GetUserObjectInformationW GetUserObjectInformation;
+alias GetWindowLongW GetWindowLong;
+alias GetWindowLongPtrW GetWindowLongPtr;
+alias GetWindowTextW GetWindowText;
+alias GetWindowTextLengthW GetWindowTextLength;
+alias GetAltTabInfoW GetAltTabInfo;
+alias GetWindowModuleFileNameW GetWindowModuleFileName;
+alias GrayStringW GrayString;
+alias InsertMenuW InsertMenu;
+alias InsertMenuItemW InsertMenuItem;
+alias IsCharAlphaW IsCharAlpha;
+alias IsCharAlphaNumericW IsCharAlphaNumeric;
+alias IsCharLowerW IsCharLower;
+alias IsCharUpperW IsCharUpper;
+alias IsDialogMessageW IsDialogMessage;
+alias LoadAcceleratorsW LoadAccelerators;
+alias LoadBitmapW LoadBitmap;
+alias LoadCursorW LoadCursor;
+alias LoadCursorFromFileW LoadCursorFromFile;
+alias LoadIconW LoadIcon;
+alias LoadImageW LoadImage;
+alias LoadKeyboardLayoutW LoadKeyboardLayout;
+alias LoadMenuW LoadMenu;
+alias LoadMenuIndirectW LoadMenuIndirect;
+alias LoadStringW LoadString;
+alias MapVirtualKeyW MapVirtualKey;
+alias MapVirtualKeyExW MapVirtualKeyEx;
+alias MessageBoxW MessageBox;
+alias MessageBoxExW MessageBoxEx;
+alias MessageBoxIndirectW MessageBoxIndirect;
+alias ModifyMenuW ModifyMenu;
+alias OemToCharW OemToChar;
+alias OemToCharBuffW OemToCharBuff;
+alias OpenDesktopW OpenDesktop;
+alias OpenWindowStationW OpenWindowStation;
+alias PeekMessageW PeekMessage;
+alias PostMessageW PostMessage;
+alias PostThreadMessageW PostThreadMessage;
+alias RealGetWindowClassW RealGetWindowClass;
+alias RegisterClassW RegisterClass;
+alias RegisterClassExW RegisterClassEx;
+alias RegisterClipboardFormatW RegisterClipboardFormat;
+static if (WINVER >= 0x500) {
+alias RegisterDeviceNotificationW RegisterDeviceNotification;
+}
+alias RegisterWindowMessageW RegisterWindowMessage;
+alias RemovePropW RemoveProp;
+alias SendDlgItemMessageW SendDlgItemMessage;
+alias SendMessageW SendMessage;
+alias SendMessageCallbackW SendMessageCallback;
+alias SendMessageTimeoutW SendMessageTimeout;
+alias SendNotifyMessageW SendNotifyMessage;
+alias SetClassLongW SetClassLong;
+alias SetDlgItemTextW SetDlgItemText;
+alias SetMenuItemInfoW SetMenuItemInfo;
+alias SetPropW SetProp;
+alias SetUserObjectInformationW SetUserObjectInformation;
+alias SetWindowLongW SetWindowLong;
+alias SetWindowLongPtrW SetWindowLongPtr;
+alias SetWindowsHookW SetWindowsHook;
+alias SetWindowsHookExW SetWindowsHookEx;
+alias SetWindowTextW SetWindowText;
+alias SystemParametersInfoW SystemParametersInfo;
+alias TabbedTextOutW TabbedTextOut;
+alias TranslateAcceleratorW TranslateAccelerator;
+alias UnregisterClassW UnregisterClass;
+alias VkKeyScanW VkKeyScan;
+alias VkKeyScanExW VkKeyScanEx;
+alias WinHelpW WinHelp;
+alias wsprintfW wsprintf;
+alias wvsprintfW wvsprintf;
+
+alias ChangeDisplaySettingsW ChangeDisplaySettings;
+alias ChangeDisplaySettingsExW ChangeDisplaySettingsEx;
+alias CreateDesktopW CreateDesktop;
+alias EnumDisplaySettingsW EnumDisplaySettings;
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+alias EnumDisplaySettingsExW EnumDisplaySettingsEx;
+}
+alias EnumDisplayDevicesW EnumDisplayDevices;
+
+} else { // ANSI
+
+alias EDITWORDBREAKPROCA EDITWORDBREAKPROC;
+alias PROPENUMPROCA PROPENUMPROC;
+alias PROPENUMPROCEXA PROPENUMPROCEX;
+alias DESKTOPENUMPROCA DESKTOPENUMPROC;
+alias WINSTAENUMPROCA WINSTAENUMPROC;
+alias MAKEINTRESOURCEA MAKEINTRESOURCE;
+
+alias WNDCLASSA WNDCLASS;
+alias WNDCLASSEXA WNDCLASSEX;
+alias MENUITEMINFOA MENUITEMINFO;
+alias LPCMENUITEMINFOA LPCMENUITEMINFO;
+alias MSGBOXPARAMSA MSGBOXPARAMS;
+alias HIGHCONTRASTA HIGHCONTRAST;
+alias SERIALKEYSA SERIALKEYS;
+alias SOUNDSENTRYA SOUNDSENTRY;
+alias CREATESTRUCTA CREATESTRUCT;
+alias CBT_CREATEWNDA CBT_CREATEWND;
+alias MDICREATESTRUCTA MDICREATESTRUCT;
+alias MULTIKEYHELPA MULTIKEYHELP;
+alias MONITORINFOEXA MONITORINFOEX;
+alias ICONMETRICSA ICONMETRICS;
+alias NONCLIENTMETRICSA NONCLIENTMETRICS;
+
+alias AppendMenuA AppendMenu;
+alias BroadcastSystemMessageA BroadcastSystemMessage;
+static if (_WIN32_WINNT >= 0x501) {
+alias BroadcastSystemMessageExA BroadcastSystemMessageEx;
+}
+alias CallMsgFilterA CallMsgFilter;
+alias CallWindowProcA CallWindowProc;
+alias ChangeMenuA ChangeMenu;
+alias CharLowerA CharLower;
+alias CharLowerBuffA CharLowerBuff;
+alias CharNextA CharNext;
+alias CharNextExA CharNextEx;
+alias CharPrevA CharPrev;
+alias CharPrevExA CharPrevEx;
+alias CharToOemA CharToOem;
+alias CharToOemBuffA CharToOemBuff;
+alias CharUpperA CharUpper;
+alias CharUpperBuffA CharUpperBuff;
+alias CopyAcceleratorTableA CopyAcceleratorTable;
+alias CreateAcceleratorTableA CreateAcceleratorTable;
+alias CreateDialogA CreateDialog;
+alias CreateDialogIndirectA CreateDialogIndirect;
+alias CreateDialogIndirectParamA CreateDialogIndirectParam;
+alias CreateDialogParamA CreateDialogParam;
+alias CreateMDIWindowA CreateMDIWindow;
+alias CreateWindowA CreateWindow;
+alias CreateWindowExA CreateWindowEx;
+alias CreateWindowStationA CreateWindowStation;
+alias DefDlgProcA DefDlgProc;
+alias DefFrameProcA DefFrameProc;
+alias DefMDIChildProcA DefMDIChildProc;
+alias DefWindowProcA DefWindowProc;
+alias DialogBoxA DialogBox;
+alias DialogBoxIndirectA DialogBoxIndirect;
+alias DialogBoxIndirectParamA DialogBoxIndirectParam;
+alias DialogBoxParamA DialogBoxParam;
+alias DispatchMessageA DispatchMessage;
+alias DlgDirListA DlgDirList;
+alias DlgDirListComboBoxA DlgDirListComboBox;
+alias DlgDirSelectComboBoxExA DlgDirSelectComboBoxEx;
+alias DlgDirSelectExA DlgDirSelectEx;
+alias DrawStateA DrawState;
+alias DrawTextA DrawText;
+alias DrawTextExA DrawTextEx;
+alias EnumDesktopsA EnumDesktops;
+alias EnumPropsA EnumProps;
+alias EnumPropsExA EnumPropsEx;
+alias EnumWindowStationsA EnumWindowStations;
+alias FindWindowA FindWindow;
+alias FindWindowExA FindWindowEx;
+alias GetClassInfoA GetClassInfo;
+alias GetClassInfoExA GetClassInfoEx;
+alias GetClassLongA GetClassLong;
+alias GetClassNameA GetClassName;
+alias GetClipboardFormatNameA GetClipboardFormatName;
+alias GetDlgItemTextA GetDlgItemText;
+alias GetKeyboardLayoutNameA GetKeyboardLayoutName;
+alias GetKeyNameTextA GetKeyNameText;
+alias GetMenuItemInfoA GetMenuItemInfo;
+alias GetMenuStringA GetMenuString;
+alias GetMessageA GetMessage;
+static if (WINVER >=0x410) {
+alias GetMonitorInfoA GetMonitorInfo;
+}
+alias GetPropA GetProp;
+static if (_WIN32_WINNT >= 0x501) {
+alias GetRawInputDeviceInfoA GetRawInputDeviceInfo;
+}
+alias GetTabbedTextExtentA GetTabbedTextExtent;
+alias GetUserObjectInformationA GetUserObjectInformation;
+alias GetWindowLongA GetWindowLong;
+alias GetWindowLongPtrA GetWindowLongPtr;
+alias GetWindowTextA GetWindowText;
+alias GetWindowTextLengthA GetWindowTextLength;
+alias GetAltTabInfoA GetAltTabInfo;
+alias GetWindowModuleFileNameA GetWindowModuleFileName;
+alias GrayStringA GrayString;
+alias InsertMenuA InsertMenu;
+alias InsertMenuItemA InsertMenuItem;
+alias IsCharAlphaA IsCharAlpha;
+alias IsCharAlphaNumericA IsCharAlphaNumeric;
+alias IsCharLowerA IsCharLower;
+alias IsCharUpperA IsCharUpper;
+alias IsDialogMessageA IsDialogMessage;
+alias LoadAcceleratorsA LoadAccelerators;
+alias LoadBitmapA LoadBitmap;
+alias LoadCursorA LoadCursor;
+alias LoadIconA LoadIcon;
+alias LoadCursorFromFileA LoadCursorFromFile;
+alias LoadImageA LoadImage;
+alias LoadKeyboardLayoutA LoadKeyboardLayout;
+alias LoadMenuA LoadMenu;
+alias LoadMenuIndirectA LoadMenuIndirect;
+alias LoadStringA LoadString;
+alias MapVirtualKeyA MapVirtualKey;
+alias MapVirtualKeyExA MapVirtualKeyEx;
+alias MessageBoxA MessageBox;
+alias MessageBoxExA MessageBoxEx;
+alias MessageBoxIndirectA MessageBoxIndirect;
+alias ModifyMenuA ModifyMenu;
+alias OemToCharA OemToChar;
+alias OemToCharBuffA OemToCharBuff;
+alias OpenDesktopA OpenDesktop;
+alias OpenWindowStationA OpenWindowStation;
+alias PeekMessageA PeekMessage;
+alias PostMessageA PostMessage;
+alias PostThreadMessageA PostThreadMessage;
+alias RealGetWindowClassA RealGetWindowClass;
+alias RegisterClassA RegisterClass;
+alias RegisterClassExA RegisterClassEx;
+alias RegisterClipboardFormatA RegisterClipboardFormat;
+static if (WINVER >= 0x500) {
+alias RegisterDeviceNotificationA RegisterDeviceNotification;
+}
+alias RegisterWindowMessageA RegisterWindowMessage;
+alias RemovePropA RemoveProp;
+alias SendDlgItemMessageA SendDlgItemMessage;
+alias SendMessageA SendMessage;
+alias SendMessageCallbackA SendMessageCallback;
+alias SendMessageTimeoutA SendMessageTimeout;
+alias SendNotifyMessageA SendNotifyMessage;
+alias SetClassLongA SetClassLong;
+alias SetDlgItemTextA SetDlgItemText;
+alias SetMenuItemInfoA SetMenuItemInfo;
+alias SetPropA SetProp;
+alias SetUserObjectInformationA SetUserObjectInformation;
+alias SetWindowLongA SetWindowLong;
+alias SetWindowLongPtrA SetWindowLongPtr;
+alias SetWindowsHookA SetWindowsHook;
+alias SetWindowsHookExA SetWindowsHookEx;
+alias SetWindowTextA SetWindowText;
+alias SystemParametersInfoA SystemParametersInfo;
+alias TabbedTextOutA TabbedTextOut;
+alias TranslateAcceleratorA TranslateAccelerator;
+alias UnregisterClassA UnregisterClass;
+alias VkKeyScanA VkKeyScan;
+alias VkKeyScanExA VkKeyScanEx;
+alias WinHelpA WinHelp;
+alias wsprintfA wsprintf;
+alias wvsprintfA wvsprintf;
+
+alias ChangeDisplaySettingsA ChangeDisplaySettings;
+alias ChangeDisplaySettingsExA ChangeDisplaySettingsEx;
+alias CreateDesktopA CreateDesktop;
+alias EnumDisplaySettingsA EnumDisplaySettings;
+static if ((_WIN32_WINNT >= 0x500) || (_WIN32_WINDOWS >= 0x410)) {
+	alias EnumDisplaySettingsExA EnumDisplaySettingsEx;
+}
+	alias EnumDisplayDevicesA EnumDisplayDevices;
+}
+
+
+alias WNDCLASS* LPWNDCLASS, PWNDCLASS;
+alias WNDCLASSEX* LPWNDCLASSEX, PWNDCLASSEX;
+alias MENUITEMINFO* LPMENUITEMINFO;
+alias MSGBOXPARAMS* PMSGBOXPARAMS, LPMSGBOXPARAMS;
+alias HIGHCONTRAST* LPHIGHCONTRAST;
+alias SERIALKEYS* LPSERIALKEYS;
+alias SOUNDSENTRY* LPSOUNDSENTRY;
+alias CREATESTRUCT* LPCREATESTRUCT;
+alias CBT_CREATEWND* LPCBT_CREATEWND;
+alias MDICREATESTRUCT* LPMDICREATESTRUCT;
+alias MULTIKEYHELP* PMULTIKEYHELP, LPMULTIKEYHELP;
+alias MONITORINFOEX* LPMONITORINFOEX;
+alias ICONMETRICS* LPICONMETRICS;
+alias NONCLIENTMETRICS* LPNONCLIENTMETRICS;