changeset 3:20e70c5494d7

make WINAPI, WINTYPES compile
author Frank Benoit <benoit@tionex.de>
date Fri, 25 Jan 2008 13:00:42 +0100
parents 57151e2793a2
children bf9fe45b4422
files dwt/internal/win32/OS.d dwt/internal/win32/WINAPI.d dwt/internal/win32/WINTYPES.d
diffstat 3 files changed, 7797 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/win32/OS.d	Fri Jan 25 13:00:42 2008 +0100
@@ -0,0 +1,3781 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+module dwt.internal.win32.OS;
+
+public import dwt.internal.win32.WINTYPES;
+private import dwt.internal.win32.WINAPI;
+
+import dwt.internal.C;
+import dwt.internal.Library;
+
+public class OS : C {
+    /*
+    * DWT Windows flags
+    */
+    public static BOOL IsWin32s;
+    public static BOOL IsWin95;
+    public static BOOL IsWinNT;
+
+    version(WinCE){
+        public const static BOOL IsWinCE = true;
+    }else{
+        public const static BOOL IsWinCE = false;
+    }
+
+    public static const BOOL IsPPC_;
+    public static const BOOL IsHPC;
+    public static const BOOL IsSP_;
+    public static const BOOL IsDBLocale;
+
+    version(ANSI) {
+        public const BOOL IsUnicode = false;
+    }else{
+        public const BOOL IsUnicode = true;
+    }
+
+    public static const int WIN32_MAJOR, WIN32_MINOR, WIN32_VERSION;
+    public static const int COMCTL32_MAJOR, COMCTL32_MINOR, COMCTL32_VERSION;
+    public static const int SHELL32_MAJOR, SHELL32_MINOR, SHELL32_VERSION;
+
+    public static const char[] NO_MANIFEST = "org.eclipse.swt.internal.win32.OS.NO_MANIFEST";
+
+
+    /*
+    * Flags for Window API GetVersionEx()
+    */
+    public static const int VER_PLATFORM_WIN32s = 0;
+    public static const int VER_PLATFORM_WIN32_WINDOWS = 1;
+    public static const int VER_PLATFORM_WIN32_NT = 2;
+    public static const int VER_PLATFORM_WIN32_CE = 3;
+    
+    /* Forward references */
+    public static const int HEAP_ZERO_MEMORY = 0x8;
+    public static const int ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x00000008;
+    public static const int ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x00000010;
+    public static const int MANIFEST_RESOURCE_ID = 2;
+    public static const int SM_DBCSENABLED = 0x2A;
+    public static const int SM_IMMENABLED = 0x52;
+    public static const int LANG_KOREAN = 0x12;
+    public static const int MAX_PATH = 260;
+/++
+    /* Get the Windows version and the flags */
+    public static this() {
+        /*
+        * Try the UNICODE version of GetVersionEx first
+        * and then the ANSI version.  The UNICODE version
+        * is present on all versions of Windows but is not
+        * implemented on Win95/98/ME.
+        * 
+        * NOTE: The value of OSVERSIONINFO.sizeof cannot
+        * be static final because it relies on the Windows
+        * platform version to be initialized and IsUnicode
+        * has not been calculated.  It must be initialized
+        * here, after the platform is determined in order
+        * for the value to be correct.
+        */
+        OSVERSIONINFO info;
+        info.dwOSVersionInfoSize = OSVERSIONINFO.sizeof;
+        if(!OS.GetVersionEx(&info)){
+                MessageBoxA(null, "DWT Unicode version applications can't run in a non-Unicode platform !", "Error", MB_OK|MB_ICONERROR);
+                exit(-1);
+        }
+        //OSVERSIONINFO info = new OSVERSIONINFOW ();
+        //info.dwOSVersionInfoSize = OSVERSIONINFOW.sizeof;
+        //if (!OS.GetVersionExW ((OSVERSIONINFOW)info)) {
+        //    info = new OSVERSIONINFOA ();
+        //    info.dwOSVersionInfoSize = OSVERSIONINFOA.sizeof;
+        //    OS.GetVersionExA ((OSVERSIONINFOA)info);
+        //}
+        //OSVERSIONINFO.sizeof = info.dwOSVersionInfoSize;
+
+        IsWin32s = (info.dwPlatformId is VER_PLATFORM_WIN32s);
+        IsWin95 = (info.dwPlatformId is VER_PLATFORM_WIN32_WINDOWS);
+        IsWinNT = (info.dwPlatformId is VER_PLATFORM_WIN32_NT);
+        IsWinCE = (info.dwPlatformId is VER_PLATFORM_WIN32_CE);
+        IsSP_ = IsSP();
+        IsPPC_ = IsPPC();
+        IsHPC = IsWinCE && !IsPPC && !IsSP; 
+        WIN32_MAJOR = info.dwMajorVersion;
+        WIN32_MINOR = info.dwMinorVersion;
+        WIN32_VERSION = VERSION (WIN32_MAJOR, WIN32_MINOR);
+        IsUnicode = !IsWin32s && !IsWin95;
+
+        /* Load the manifest to force the XP Theme */
+        if (System.getProperty (NO_MANIFEST) is null) {
+            if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION (5, 1)) {
+                TCHAR buffer = new TCHAR (0, MAX_PATH);
+                int /*long*/ hModule = OS.GetLibraryHandle ();
+                while (OS.GetModuleFileName (hModule, buffer, buffer.length ()) is buffer.length ()) {
+                    buffer = new TCHAR (0, buffer.length () + MAX_PATH);
+                }
+                int /*long*/ hHeap = OS.GetProcessHeap ();
+                int byteCount = buffer.length () * TCHAR.sizeof;
+                int /*long*/ pszText = OS.HeapAlloc (hHeap, HEAP_ZERO_MEMORY, byteCount);
+                OS.MoveMemory (pszText, buffer, byteCount); 
+                ACTCTX pActCtx = new ACTCTX ();
+                pActCtx.cbSize = ACTCTX.sizeof;
+                pActCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_SET_PROCESS_DEFAULT;
+                pActCtx.lpSource = pszText;
+                pActCtx.lpResourceName = MANIFEST_RESOURCE_ID;
+                int /*long*/ hActCtx = OS.CreateActCtx (pActCtx);
+                if (pszText !is 0) OS.HeapFree (hHeap, 0, pszText);
+                int /*long*/ [] lpCookie = new int /*long*/ [1];
+                OS.ActivateActCtx (hActCtx, lpCookie);
+                /*
+                * NOTE:  A single activation context is created and activated
+                * for the entire lifetime of the program.  It is deactivated
+                * and released by Windows when the program exits.
+                */
+            }
+        }
+        
+        /* Make the process DPI aware for Windows Vista */
+        if (OS.WIN32_VERSION >= OS.VERSION (6, 0)) OS.SetProcessDPIAware ();
+
+        /* Get the DBCS flag */
+        BOOL dbcsEnabled = OS.GetSystemMetrics (SM_DBCSENABLED) !is 0;
+        BOOL immEnabled = OS.GetSystemMetrics (SM_IMMENABLED) !is 0;
+        IsDBLocale = dbcsEnabled || immEnabled;
+        
+        /*
+        * Bug in Windows.  On Korean Windows XP when the Text
+        * Services Framework support for legacy applications
+        * is enabled, certain legacy calls segment fault.
+        * For example, when ImmSetCompositionWindow() is used
+        * to move the composition window outside of the client
+        * area, Windows crashes.  The fix is to disable legacy
+        * support.
+        * 
+        * Note: The bug is fixed in Service Pack 2.
+        */
+        if (!OS.IsWinCE && OS.WIN32_VERSION is OS.VERSION (5, 1)) {
+            short langID = OS.GetSystemDefaultUILanguage ();
+            short primaryLang = OS.PRIMARYLANGID (langID);
+            if (primaryLang is LANG_KOREAN) {
+                OSVERSIONINFOEX infoex = IsUnicode ? (OSVERSIONINFOEX)new OSVERSIONINFOEXW () : (OSVERSIONINFOEX)new OSVERSIONINFOEXA ();
+                infoex.dwOSVersionInfoSize = OSVERSIONINFOEX.sizeof;
+                GetVersionEx (infoex);
+                if (infoex.wServicePackMajor < 2) {
+                    OS.ImmDisableTextFrameService (0);
+                }
+            }
+        }
+    }
+    
+    /* Get the COMCTL32.DLL version */
+    static this() {
+        DLLVERSIONINFO dvi = new DLLVERSIONINFO ();
+        dvi.cbSize = DLLVERSIONINFO.sizeof;
+        dvi.dwMajorVersion = 4;
+        dvi.dwMinorVersion = 0;
+        TCHAR lpLibFileName = new TCHAR (0, "comctl32.dll", true); //$NON-NLS-1$
+        int /*long*/ hModule = OS.LoadLibrary (lpLibFileName);
+        if (hModule !is 0) {
+            char[] name = "DllGetVersion\0"; //$NON-NLS-1$
+            byte [] lpProcName = new byte [name.length ()];
+            for (int i=0; i<lpProcName.length; i++) {
+                lpProcName [i] = (byte) name.charAt (i);
+            }
+            int /*long*/ DllGetVersion = OS.GetProcAddress (hModule, lpProcName);
+            if (DllGetVersion !is 0) OS.Call (DllGetVersion, dvi);
+            OS.FreeLibrary (hModule);
+        }
+        COMCTL32_MAJOR = dvi.dwMajorVersion;
+        COMCTL32_MINOR = dvi.dwMinorVersion;
+        COMCTL32_VERSION = VERSION (COMCTL32_MAJOR, COMCTL32_MINOR);
+    }
+    
+    /* Get the Shell32.DLL version */
+    static {
+        DLLVERSIONINFO dvi = new DLLVERSIONINFO ();
+        dvi.cbSize = DLLVERSIONINFO.sizeof;
+        dvi.dwMajorVersion = 4;
+        TCHAR lpLibFileName = new TCHAR (0, "Shell32.dll", true); //$NON-NLS-1$
+        int /*long*/ hModule = OS.LoadLibrary (lpLibFileName);
+        if (hModule !is 0) {
+            char[] name = "DllGetVersion\0"; //$NON-NLS-1$
+            byte [] lpProcName = new byte [name.length ()];
+            for (int i=0; i<lpProcName.length; i++) {
+                lpProcName [i] = (byte) name.charAt (i);
+            }
+            int /*long*/ DllGetVersion = OS.GetProcAddress (hModule, lpProcName);
+            if (DllGetVersion !is 0) OS.Call (DllGetVersion, dvi);
+            OS.FreeLibrary (hModule);
+        }
+        SHELL32_MAJOR = dvi.dwMajorVersion;
+        SHELL32_MINOR = dvi.dwMinorVersion;
+        SHELL32_VERSION = VERSION (SHELL32_MAJOR, SHELL32_MINOR);
+    }
+
+    /* Flag used on WinCE */
+    static const int SYS_COLOR_INDEX_FLAG = OS.IsWinCE ? 0x40000000 : 0x0;
+
+    /*
+    * NOTE:  There is a bug in JVM 1.2 where loading 
+    * a class with a large number of constants causes
+    * a segment fault to occur sometime later after
+    * the class is loaded.  The fix is to break the
+    * class up into a hierarchy of classes that each
+    * contain a smaller number of constants.  This
+    * fix is not necessary at this time but is required
+    * when all constants are uncommented.  We have not
+    * done the research to determine the limit.
+    */
+
+    /* Constants */
+    public static const int ABS_DOWNDISABLED = 8;
+    public static const int ABS_DOWNHOT = 6;
+    public static const int ABS_DOWNNORMAL = 5;
+    public static const int ABS_DOWNPRESSED = 7;
+    public static const int ABS_LEFTDISABLED = 12;
+    public static const int ABS_LEFTHOT = 10;
+    public static const int ABS_LEFTNORMAL = 9;
+    public static const int ABS_LEFTPRESSED = 11;
+    public static const int ABS_RIGHTDISABLED = 16;
+    public static const int ABS_RIGHTHOT = 14;
+    public static const int ABS_RIGHTNORMAL = 13;
+    public static const int ABS_RIGHTPRESSED = 15;
+    public static const int ABS_UPDISABLED = 4;
+    public static const int ABS_UPHOT = 2;
+    public static const int ABS_UPNORMAL = 1;
+    public static const int ABS_UPPRESSED = 3;
+    public static const int AC_SRC_OVER = 0;
+    public static const int AC_SRC_ALPHA = 1;
+//  public static const int ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x00000008;
+//  public static const int ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x00000010;
+    public static const int ALTERNATE = 1;
+    public static const int ASSOCF_NOTRUNCATE = 0x00000020;
+    public static const int ASSOCSTR_COMMAND = 1;
+    public static const int ASSOCSTR_DEFAULTICON = 15;
+    public static const int ASSOCSTR_FRIENDLYAPPNAME = 4;
+    public static const int ASSOCSTR_FRIENDLYDOCNAME = 3;
+    public static const int AW_SLIDE = 0x00040000;
+    public static const int AW_ACTIVATE = 0x00020000;
+    public static const int AW_BLEND = 0x00080000;
+    public static const int AW_HIDE = 0x00010000;
+    public static const int AW_CENTER = 0x00000010;
+    public static const int AW_HOR_POSITIVE = 0x00000001;
+    public static const int AW_HOR_NEGATIVE = 0x00000002;
+    public static const int AW_VER_POSITIVE = 0x00000004;
+    public static const int AW_VER_NEGATIVE = 0x00000008;
+    public static const int BCM_FIRST = 0x1600;
+    public static const int BCM_GETIDEALSIZE = BCM_FIRST + 0x1;
+    public static const int BCM_GETIMAGELIST = BCM_FIRST + 0x3;
+    public static const int BCM_GETNOTE = BCM_FIRST + 0xa;
+    public static const int BCM_GETNOTELENGTH = BCM_FIRST + 0xb;
+    public static const int BCM_SETIMAGELIST = BCM_FIRST + 0x2;
+    public static const int BCM_SETNOTE = BCM_FIRST + 0x9;
+    public static const int BDR_RAISEDOUTER = 0x0001;
+    public static const int BDR_SUNKENOUTER = 0x0002;
+    public static const int BDR_RAISEDINNER = 0x0004;
+    public static const int BDR_SUNKENINNER = 0x0008;
+    public static const int BDR_OUTER = 0x0003;
+    public static const int BDR_INNER = 0x000c;
+    public static const int BDR_RAISED = 0x0005;
+    public static const int BDR_SUNKEN = 0x000a;
+    public static const int BFFM_INITIALIZED = 0x1;
+    public static const int BFFM_SETSELECTION = IsUnicode ? 0x467 : 0x466;
+    public static const int BFFM_VALIDATEFAILED = IsUnicode ? 0x4 : 0x3;
+    public static const int BFFM_VALIDATEFAILEDW = 0x4;
+    public static const int BFFM_VALIDATEFAILEDA = 0x3;
+    public static const int BF_ADJUST = 0x2000; 
+    public static const int BF_LEFT = 0x0001;
+    public static const int BF_TOP = 0x0002;
+    public static const int BF_RIGHT = 0x0004;
+    public static const int BF_BOTTOM = 0x0008;
+    public static const int BF_RECT = (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM);
+    public static const int BIF_EDITBOX = 0x10;
+    public static const int BIF_NEWDIALOGSTYLE = 0x40;
+    public static const int BIF_RETURNONLYFSDIRS = 0x1;
+    public static const int BIF_VALIDATE = 0x20;
+    public static const int BITSPIXEL = 0xc;
+    public static const int BI_BITFIELDS = 3;
+    public static const int BI_RGB = 0;
+    public static const int BLACKNESS = 0x42;
+    public static const int BLACK_BRUSH = 4;
+    public static const int BUTTON_IMAGELIST_ALIGN_LEFT = 0;
+    public static const int BUTTON_IMAGELIST_ALIGN_RIGHT = 1;
+    public static const int BUTTON_IMAGELIST_ALIGN_CENTER = 4;
+    public static const int BM_CLICK = 0xf5;
+    public static const int BM_GETCHECK = 0xf0;
+    public static const int BM_SETCHECK = 0xf1;
+    public static const int BM_SETIMAGE = 0xf7;
+    public static const int BM_SETSTYLE = 0xf4;
+    public static const int BN_CLICKED = 0x0;
+    public static const int BN_DOUBLECLICKED = 0x5;
+    public static const int BPBF_COMPATIBLEBITMAP = 0;
+    public static const int BPBF_DIB = 1;
+    public static const int BPBF_TOPDOWNDIB = 2;
+    public static const int BPBF_TOPDOWNMONODIB = 3;
+    public static const int BPPF_ERASE = 0x0001;
+    public static const int BPPF_NOCLIP = 0x0002;
+    public static const int BPPF_NONCLIENT = 0x0004;
+    public static const int BP_PUSHBUTTON = 1;
+    public static const int BP_RADIOBUTTON = 2;
+    public static const int BP_CHECKBOX = 3;
+    public static const int BP_GROUPBOX = 4;
+    public static const int BST_CHECKED = 0x1;
+    public static const int BST_UNCHECKED = 0x0;
+    public static const int BS_BITMAP = 0x80;
+    public static const int BS_CENTER = 0x300;
+    public static const int BS_CHECKBOX = 0x2;
+    public static const int BS_COMMANDLINK =  0xe;
+    public static const int BS_DEFPUSHBUTTON = 0x1;
+    public static const int BS_FLAT = 0x8000;
+    public static const int BS_GROUPBOX = 0x7;
+    public static const int BS_ICON = 0x40;
+    public static const int BS_LEFT = 0x100;
+    public static const int BS_NOTIFY = 0x4000;
+    public static const int BS_OWNERDRAW = 0xb;
+    public static const int BS_PATTERN = 0x3;
+    public static const int BS_PUSHBUTTON = 0x0;
+    public static const int BS_PUSHLIKE = 0x1000;
+    public static const int BS_RADIOBUTTON = 0x4;
+    public static const int BS_RIGHT = 0x200;
+    public static const int BS_SOLID = 0x0;
+    public static const int BTNS_AUTOSIZE = 0x10;
+    public static const int BTNS_BUTTON = 0x0;
+    public static const int BTNS_CHECK = 0x2;
+    public static const int BTNS_CHECKGROUP = 0x6;
+    public static const int BTNS_DROPDOWN = 0x8;
+    public static const int BTNS_GROUP = 0x4;
+    public static const int BTNS_SEP = 0x1;
+    public static const int BTNS_SHOWTEXT = 0x40;
+    public static const int CBN_EDITCHANGE = 0x5;
+    public static const int CBN_KILLFOCUS = 0x4;
+    public static const int CBN_SELCHANGE = 0x1;
+    public static const int CBN_SETFOCUS = 0x3;
+    public static const int CBS_AUTOHSCROLL = 0x40;
+    public static const int CBS_DROPDOWN = 0x2;
+    public static const int CBS_DROPDOWNLIST = 0x3;
+    public static const int CBS_CHECKEDNORMAL = 5;
+    public static const int CBS_MIXEDNORMAL = 9;
+    public static const int CBS_NOINTEGRALHEIGHT = 0x400;
+    public static const int CBS_SIMPLE = 0x1;
+    public static const int CBS_UNCHECKEDNORMAL = 1;
+    public static const int CBS_CHECKEDDISABLED = 8;
+    public static const int CBS_CHECKEDHOT = 6;
+    public static const int CBS_CHECKEDPRESSED = 7;
+    public static const int CBS_MIXEDDISABLED = 0;
+    public static const int CBS_MIXEDHOT = 0;
+    public static const int CBS_MIXEDPRESSED = 0;
+    public static const int CBS_UNCHECKEDDISABLED = 4;
+    public static const int CBS_UNCHECKEDHOT = 2;
+    public static const int CBS_UNCHECKEDPRESSED = 3;
+    public static const int CB_ADDSTRING = 0x143;
+    public static const int CB_DELETESTRING = 0x144;
+    public static const int CB_ERR = 0xffffffff;
+    public static const int CB_ERRSPACE = 0xfffffffe;
+    public static const int CB_FINDSTRINGEXACT = 0x158;
+    public static const int CB_GETCOUNT = 0x146;
+    public static const int CB_GETCURSEL = 0x147;
+    public static const int CB_GETDROPPEDCONTROLRECT = 0x152;
+    public static const int CB_GETDROPPEDSTATE = 0x157;
+    public static const int CB_GETDROPPEDWIDTH = 0x015f;
+    public static const int CB_GETEDITSEL = 0x140;
+    public static const int CB_GETHORIZONTALEXTENT = 0x015d;
+    public static const int CB_GETITEMHEIGHT = 0x154;
+    public static const int CB_GETLBTEXT = 0x148;
+    public static const int CB_GETLBTEXTLEN = 0x149;
+    public static const int CB_INSERTSTRING = 0x14a;
+    public static const int CB_LIMITTEXT = 0x141;
+    public static const int CB_RESETCONTENT = 0x14b;
+    public static const int CB_SELECTSTRING = 0x14d;
+    public static const int CB_SETCURSEL = 0x14e;
+    public static const int CB_SETDROPPEDWIDTH= 0x0160;
+    public static const int CB_SETEDITSEL = 0x142;
+    public static const int CB_SETHORIZONTALEXTENT = 0x015e;
+    public static const int CB_SETITEMHEIGHT = 0x0153;
+    public static const int CB_SHOWDROPDOWN = 0x14f;
+    public static const int CBXS_NORMAL = 1;
+    public static const int CBXS_HOT = 2;
+    public static const int CBXS_PRESSED = 3;
+    public static const int CBXS_DISABLED = 4;
+    public static const int CCM_FIRST = 0x2000;
+    public static const int CCM_SETBKCOLOR = 0x2001;
+    public static const int CCM_SETVERSION = 0x2007;
+    public static const int CCS_NODIVIDER = 0x40;
+    public static const int CCS_NORESIZE = 0x4;
+    public static const int CCS_VERT = 0x80;
+    public static const int CC_ANYCOLOR = 0x100;
+    public static const int CC_ENABLEHOOK = 0x10;
+    public static const int CC_FULLOPEN = 0x2;
+    public static const int CC_RGBINIT = 0x1;
+    public static const int CDDS_POSTERASE = 0x00000004;
+    public static const int CDDS_POSTPAINT = 0x00000002;
+    public static const int CDDS_PREERASE = 0x00000003;
+    public static const int CDDS_PREPAINT = 0x00000001;
+    public static const int CDDS_ITEM = 0x00010000;
+    public static const int CDDS_ITEMPOSTPAINT = CDDS_ITEM | CDDS_POSTPAINT;
+    public static const int CDDS_ITEMPREPAINT = CDDS_ITEM | CDDS_PREPAINT;
+    public static const int CDDS_SUBITEM = 0x00020000;
+    public static const int CDDS_SUBITEMPOSTPAINT = CDDS_ITEMPOSTPAINT | CDDS_SUBITEM;
+    public static const int CDDS_SUBITEMPREPAINT = CDDS_ITEMPREPAINT | CDDS_SUBITEM;
+    public static const int CDIS_SELECTED = 0x0001;
+    public static const int CDIS_GRAYED = 0x0002;
+    public static const int CDIS_DISABLED = 0x0004;
+    public static const int CDIS_CHECKED = 0x0008;
+    public static const int CDIS_FOCUS = 0x0010;
+    public static const int CDIS_DEFAULT = 0x0020;
+    public static const int CDIS_HOT = 0x0040;
+    public static const int CDIS_MARKED = 0x0080;
+    public static const int CDIS_INDETERMINATE = 0x0100;
+    public static const int CDM_FIRST = 0x0400 + 100;
+    public static const int CDM_GETSPEC = CDM_FIRST;
+    public static const int CDN_FIRST = -601;
+    public static const int CDN_SELCHANGE = CDN_FIRST - 1;
+    public static const int CDRF_DODEFAULT = 0x00000000;
+    public static const int CDRF_DOERASE = 0x00000008;
+    public static const int CDRF_NEWFONT = 0x00000002;
+    public static const int CDRF_NOTIFYITEMDRAW = 0x00000020;
+    public static const int CDRF_NOTIFYPOSTERASE = 0x00000040;
+    public static const int CDRF_NOTIFYPOSTPAINT = 0x00000010;
+    public static const int CDRF_NOTIFYSUBITEMDRAW = 0x00000020;
+    public static const int CDRF_SKIPDEFAULT = 0x04;
+    public static const int CDRF_SKIPPOSTPAINT = 0x00000100;
+    public static const int CFE_AUTOCOLOR = 0x40000000;
+    public static const int CFE_ITALIC = 0x2;
+    public static const int CFE_STRIKEOUT = 0x8;
+    public static const int CFE_UNDERLINE = 0x4;
+    public static const int CFM_BOLD = 0x1;
+    public static const int CFM_CHARSET = 0x8000000;
+    public static const int CFM_COLOR = 0x40000000;
+    public static const int CFM_FACE = 0x20000000;
+    public static const int CFM_ITALIC = 0x2;
+    public static const int CFM_SIZE = 0x80000000;
+    public static const int CFM_STRIKEOUT = 0x8;
+    public static const int CFM_UNDERLINE = 0x4;
+    public static const int CFM_WEIGHT = 0x400000;
+    public static const int CFS_POINT = 0x2;
+    public static const int CFS_RECT = 0x1;
+    public static const int CF_EFFECTS = 0x100;
+    public static const int CF_INITTOLOGFONTSTRUCT = 0x40;
+    public static const int CF_SCREENFONTS = 0x1;
+    public static const int CF_TEXT = 0x1;
+    public static const int CF_UNICODETEXT = 13;
+    public static const int CF_USESTYLE = 0x80;
+    public static const int CLR_DEFAULT = 0xff000000;
+    public static const int CLR_INVALID = 0xffffffff;
+    public static const int CLR_NONE = 0xffffffff;
+    public static const int CLSCTX_INPROC_SERVER = 1;
+    public static const int COLORONCOLOR = 0x3;
+    public static const int COLOR_3DDKSHADOW = 0x15 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_3DFACE = 0xf | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_3DHIGHLIGHT = 0x14 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_3DHILIGHT = 0x14 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_3DLIGHT = 0x16 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_3DSHADOW = 0x10 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_ACTIVECAPTION = 0x2 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_BTNFACE = 0xf | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_BTNHIGHLIGHT = 0x14 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_BTNSHADOW = 0x10 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_BTNTEXT = 0x12 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_CAPTIONTEXT = 0x9 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_GRADIENTACTIVECAPTION = 0x1b | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_GRADIENTINACTIVECAPTION = 0x1c | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_GRAYTEXT = 0x11 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_HIGHLIGHT = 0xd | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_HIGHLIGHTTEXT = 0xe | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_HOTLIGHT = 26 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_INACTIVECAPTION = 0x3 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_INACTIVECAPTIONTEXT = 0x13 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_INFOBK = 0x18 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_INFOTEXT = 0x17 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_MENU = 0x4 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_MENUTEXT = 0x7 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_SCROLLBAR = 0x0 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_WINDOW = 0x5 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_WINDOWFRAME = 0x6 | SYS_COLOR_INDEX_FLAG;
+    public static const int COLOR_WINDOWTEXT = 0x8 | SYS_COLOR_INDEX_FLAG;
+    public static const int COMPLEXREGION = 0x3;
+    public static const int CP_ACP = 0x0;
+    public static const int CP_UTF8 = 65001;
+    public static const int CP_DROPDOWNBUTTON = 1;
+    public static const int CP_INSTALLED = 0x1;
+    public static const int CS_BYTEALIGNWINDOW = 0x2000;
+    public static const int CS_DBLCLKS = 0x8;
+    public static const int CS_DROPSHADOW = 0x20000;
+    public static const int CS_GLOBALCLASS = 0x4000;
+    public static const int CS_HREDRAW = 0x2;
+    public static const int CS_VREDRAW = 0x1;
+    public static const int CW_USEDEFAULT = 0x80000000;
+    public static const char[] DATETIMEPICK_CLASS = "SysDateTimePick32"; //$NON-NLS-1$
+    public static const int DATE_LONGDATE = 0x00000002;
+    public static const int DATE_SHORTDATE = 0x00000001;
+    public static const int DATE_YEARMONTH = 0x00000008; //#if(WINVER >= 0x0500)
+    public static const int DCX_CACHE = 0x2;
+    public static const int DCX_CLIPCHILDREN = 0x8;
+    public static const int DCX_CLIPSIBLINGS = 0x10;
+    public static const int DEFAULT_CHARSET = 0x1;
+    public static const int DEFAULT_GUI_FONT = 0x11;
+    public static const int DFCS_BUTTONCHECK = 0x0;
+    public static const int DFCS_CHECKED = 0x400;
+    public static const int DFCS_FLAT = 0x4000;
+    public static const int DFCS_INACTIVE = 0x100;
+    public static const int DFCS_PUSHED = 0x200;
+    public static const int DFCS_SCROLLDOWN = 0x1;
+    public static const int DFCS_SCROLLLEFT = 0x2;
+    public static const int DFCS_SCROLLRIGHT = 0x3;
+    public static const int DFCS_SCROLLUP = 0x0;
+    public static const int DFC_BUTTON = 0x4;
+    public static const int DFC_SCROLL = 0x3;
+    public static const int DIB_RGB_COLORS = 0x0;
+    public static const int DISP_E_EXCEPTION = 0x80020009;
+    public static const int DI_NORMAL = 0x3;
+    public static const int DI_NOMIRROR = 0x10;
+    public static const int DLGC_BUTTON = 0x2000;
+    public static const int DLGC_HASSETSEL = 0x8;
+    public static const int DLGC_STATIC = 0x100;
+    public static const int DLGC_WANTALLKEYS = 0x4;
+    public static const int DLGC_WANTARROWS = 0x1;
+    public static const int DLGC_WANTCHARS = 0x80;
+    public static const int DLGC_WANTTAB = 0x2;
+    public static const int DM_SETDEFID = 0x401;
+    public static const int DSS_DISABLED = 0x20;
+    public static const int DSTINVERT = 0x550009;
+    public static const int DST_BITMAP = 0x4;
+    public static const int DST_ICON = 0x3;
+    public static const int DT_BOTTOM = 0x8;
+    public static const int DT_CALCRECT = 0x400;
+    public static const int DT_CENTER = 0x1;
+    public static const int DT_EDITCONTROL = 0x2000;
+    public static const int DT_EXPANDTABS = 0x40;
+    public static const int DT_ENDELLIPSIS = 32768;
+    public static const int DT_HIDEPREFIX = 0x100000;
+    public static const int DT_LEFT = 0x0;
+    public static const int DT_NOPREFIX = 0x800;
+    public static const int DT_RASPRINTER = 0x2;
+    public static const int DT_RIGHT = 0x2;
+    public static const int DT_SINGLELINE = 0x20;
+    public static const int DT_TOP = 0;
+    public static const int DT_VCENTER = 4;
+    public static const int DT_WORDBREAK = 0x10;
+    public static const int DTM_FIRST = 0x1000;
+    public static const int DTM_GETSYSTEMTIME = DTM_FIRST + 1; 
+    public static const int DTM_SETFORMAT = IsUnicode ? DTM_FIRST + 50 : DTM_FIRST + 5;
+    public static const int DTM_SETSYSTEMTIME = DTM_FIRST + 2;
+    public static const int DTN_FIRST = 0xFFFFFD08;
+    public static const int DTN_DATETIMECHANGE = DTN_FIRST + 1;
+    public static const int DTS_LONGDATEFORMAT = 0x0004;
+    public static const int DTS_SHORTDATECENTURYFORMAT = 0x000C;
+    public static const int DTS_SHORTDATEFORMAT = 0x0000;
+    public static const int DTS_TIMEFORMAT = 0x0009;
+    public static const int DTS_UPDOWN = 0x0001;
+    public static const int E_POINTER = 0x80004003;
+    public static const int EBP_NORMALGROUPBACKGROUND = 5;
+    public static const int EBP_NORMALGROUPCOLLAPSE = 6;
+    public static const int EBP_NORMALGROUPEXPAND = 7;
+    public static const int EBP_NORMALGROUPHEAD = 8;
+    public static const int EBNGC_NORMAL = 1;
+    public static const int EBNGC_HOT = 2;
+    public static const int EBNGC_PRESSED = 3;
+    public static const int EBP_HEADERBACKGROUND = 1;
+    public static const int EC_LEFTMARGIN = 0x1;
+    public static const int EC_RIGHTMARGIN = 0x2;
+    public static const int ECOOP_AND = 0x3;
+    public static const int ECOOP_OR = 0x2;
+    public static const int ECO_AUTOHSCROLL = 0x80;
+    public static const int EDGE_RAISED = (BDR_RAISEDOUTER | BDR_RAISEDINNER);
+    public static const int EDGE_SUNKEN = (BDR_SUNKENOUTER | BDR_SUNKENINNER);
+    public static const int EDGE_ETCHED = (BDR_SUNKENOUTER | BDR_RAISEDINNER);
+    public static const int EDGE_BUMP = (BDR_RAISEDOUTER | BDR_SUNKENINNER);
+    public static const int EM_CANUNDO = 0xc6;
+    public static const int EM_CHARFROMPOS = 0xd7;
+    public static const int EM_DISPLAYBAND = 0x433;
+    public static const int EM_GETFIRSTVISIBLELINE = 0xce;
+    public static const int EM_GETLIMITTEXT = 0xd5;
+    public static const int EM_GETLINE = 0xc4;
+    public static const int EM_GETLINECOUNT = 0xba;
+    public static const int EM_GETMARGINS = 0xd4;
+    public static const int EM_GETPASSWORDCHAR = 0xd2;
+    public static const int EM_GETSCROLLPOS = 0x4dd;
+    public static const int EM_GETSEL = 0xb0;
+    public static const int EM_LIMITTEXT = 0xc5;
+    public static const int EM_LINEFROMCHAR = 0xc9;
+    public static const int EM_LINEINDEX = 0xbb;
+    public static const int EM_LINELENGTH = 0xc1;
+    public static const int EM_LINESCROLL = 0xb6;
+    public static const int EM_POSFROMCHAR = 0xd6;
+    public static const int EM_REPLACESEL = 0xc2;
+    public static const int EM_SCROLLCARET = 0xb7;
+    public static const int EM_SETBKGNDCOLOR = 0x443;
+    public static const int EM_SETLIMITTEXT = 0xc5;
+    public static const int EM_SETMARGINS = 211;
+    public static const int EM_SETOPTIONS = 0x44d;
+    public static const int EM_SETPARAFORMAT = 0x447;
+    public static const int EM_SETPASSWORDCHAR = 0xcc;
+    public static const int EM_SETCUEBANNER = 0x1500 + 1;
+    public static const int EM_SETREADONLY = 0xcf;
+    public static const int EM_SETSEL = 0xb1;
+    public static const int EM_SETTABSTOPS = 0xcb;
+    public static const int EM_UNDO = 199;
+    public static const int EN_ALIGN_LTR_EC = 0x0700;
+    public static const int EN_ALIGN_RTL_EC = 0x0701;
+    public static const int EN_CHANGE = 0x300;
+    public static const int EP_EDITTEXT = 1;
+    public static const int ERROR_NO_MORE_ITEMS = 0x103;
+    public static const int ESB_DISABLE_BOTH = 0x3;
+    public static const int ESB_ENABLE_BOTH = 0x0;
+    public static const int ES_AUTOHSCROLL = 0x80;
+    public static const int ES_AUTOVSCROLL = 0x40;
+    public static const int ES_CENTER = 0x1;
+    public static const int ES_MULTILINE = 0x4;
+    public static const int ES_NOHIDESEL = 0x100;
+    public static const int ES_PASSWORD = 0x20;
+    public static const int ES_READONLY = 0x800;
+    public static const int ES_RIGHT = 0x2;
+    public static const int ETO_CLIPPED = 0x4;
+    public static const int ETS_NORMAL = 1;
+    public static const int ETS_HOT = 2;
+    public static const int ETS_SELECTED = 3;
+    public static const int ETS_DISABLED = 4;
+    public static const int ETS_FOCUSED = 5;
+    public static const int ETS_READONLY = 6;
+    public static const int EVENT_OBJECT_FOCUS = 0x8005;
+    public static const int EVENT_OBJECT_LOCATIONCHANGE = 0x800B;
+//  public static const int EVENT_OBJECT_SELECTION = 0x8006;
+    public static const int EVENT_OBJECT_SELECTIONWITHIN = 0x8009;
+    public static const int EVENT_OBJECT_VALUECHANGE = 0x800E;
+    public static const int FALT = 0x10;
+    public static const int FCONTROL = 0x8;
+    public static const int FE_FONTSMOOTHINGCLEARTYPE = 0x0002;
+    public static const int FEATURE_DISABLE_NAVIGATION_SOUNDS = 21;
+    public static const int FILE_ATTRIBUTE_NORMAL = 0x00000080; 
+    public static const int FNERR_INVALIDFILENAME = 0x3002;
+    public static const int FNERR_BUFFERTOOSMALL = 0x3003;
+    public static const int FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100;
+    public static const int FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000;
+    public static const int FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200;
+    public static const int FR_PRIVATE = 0x10;
+    public static const int FSHIFT = 0x4;
+    public static const int FVIRTKEY = 0x1;
+    public static const int GBS_NORMAL = 1;
+    public static const int GBS_DISABLED = 2;
+    public static const int GCS_COMPSTR = 0x8;
+    public static const int GCS_RESULTSTR = 0x800;
+    public static const int GDT_VALID = 0;
+    public static const int GET_FEATURE_FROM_PROCESS = 0x2;
+    public static const int GLPS_CLOSED = 1;
+    public static const int GLPS_OPENED = 2;
+    public static const int GM_ADVANCED = 2;
+    public static const int GMDI_USEDISABLED = 0x1;
+    public static const int GMEM_FIXED = 0x0;
+    public static const int GMEM_ZEROINIT = 0x40;
+    public static const int GN_CONTEXTMENU = 1000;
+    public static const int GPTR = 0x40;
+    public static const int GRADIENT_FILL_RECT_H = 0x0;
+    public static const int GRADIENT_FILL_RECT_V = 0x1;
+    public static const int GTL_NUMBYTES = 0x10;
+    public static const int GTL_NUMCHARS = 0x8;
+    public static const int GTL_PRECISE = 0x2;
+    public static const int GT_DEFAULT = 0x0;
+    public static const int GUI_16BITTASK = 0x20;
+    public static const int GUI_CARETBLINKING = 0x1;
+    public static const int GUI_INMENUMODE = 0x4;
+    public static const int GUI_INMOVESIZE = 0x2;
+    public static const int GUI_POPUPMENUMODE = 0x10;
+    public static const int GUI_SYSTEMMENUMODE = 0x8;
+    public static const int GWL_EXSTYLE = 0xffffffec;
+    public static const int GWL_ID = -12;
+    public static const int GWL_HWNDPARENT = -8;
+    public static const int GWL_STYLE = 0xfffffff0;
+    public static const int GWL_USERDATA = 0xffffffeb;
+    public static const int GWL_WNDPROC = 0xfffffffc;
+    public static const int GWLP_ID = -12;
+    public static const int GWLP_HWNDPARENT = -8;
+    public static const int GWLP_USERDATA = 0xffffffeb;
+    public static const int GWLP_WNDPROC = 0xfffffffc;
+    public static const int GW_CHILD = 0x5;
+    public static const int GW_HWNDFIRST = 0x0;
+    public static const int GW_HWNDLAST = 0x1;
+    public static const int GW_HWNDNEXT = 0x2;
+    public static const int GW_HWNDPREV = 0x3;
+    public static const int GW_OWNER = 0x4;
+    public static const int HBMMENU_CALLBACK = 0xffffffff;
+    public static const int HCBT_CREATEWND = 3;
+    public static const int HCF_HIGHCONTRASTON = 0x1;
+    public static const int HDF_BITMAP = 0x2000;
+    public static const int HDF_BITMAP_ON_RIGHT = 0x1000;
+    public static const int HDF_CENTER = 2;
+    public static const int HDF_JUSTIFYMASK = 0x3;
+    public static const int HDF_IMAGE = 0x0800;
+    public static const int HDF_LEFT = 0;
+    public static const int HDF_RIGHT = 1;
+    public static const int HDF_SORTUP = 0x0400;
+    public static const int HDF_SORTDOWN = 0x0200;
+    public static const int HDI_BITMAP = 0x0010;
+    public static const int HDI_IMAGE = 32;
+    public static const int HDI_ORDER = 0x80;
+    public static const int HDI_TEXT = 0x2;
+    public static const int HDI_WIDTH = 0x1;
+    public static const int HDI_FORMAT = 0x4;
+    public static const int HDM_FIRST = 0x1200;
+    public static const int HDM_DELETEITEM = HDM_FIRST + 2;
+    public static const int HDM_GETBITMAPMARGIN = HDM_FIRST + 21;
+    public static const int HDM_GETITEMCOUNT = 0x1200;
+    public static const int HDM_GETITEMA = HDM_FIRST + 3;
+    public static const int HDM_GETITEMW = HDM_FIRST + 11;
+    public static const int HDM_GETITEM = IsUnicode ? HDM_GETITEMW : HDM_GETITEMA;
+    public static const int HDM_GETITEMRECT = HDM_FIRST + 7;
+    public static const int HDM_GETORDERARRAY = HDM_FIRST + 17;
+    public static const int HDM_HITTEST = HDM_FIRST + 6;
+    public static const int HDM_INSERTITEMA = HDM_FIRST + 1;
+    public static const int HDM_INSERTITEMW = HDM_FIRST + 10;
+    public static const int HDM_INSERTITEM = IsUnicode ? HDM_INSERTITEMW : HDM_INSERTITEMA;
+    public static const int HDM_LAYOUT = HDM_FIRST + 5;
+    public static const int HDM_ORDERTOINDEX = HDM_FIRST + 15;
+    public static const int HDM_SETIMAGELIST = HDM_FIRST + 8;
+    public static const int HDM_SETITEMA = HDM_FIRST + 4;
+    public static const int HDM_SETITEMW = HDM_FIRST + 12;
+    public static const int HDM_SETITEM = IsUnicode ? HDM_SETITEMW : HDM_SETITEMA;
+    public static const int HDM_SETORDERARRAY = HDM_FIRST + 18;
+    public static const int HDN_FIRST = 0xfffffed4;
+    public static const int HDN_BEGINDRAG = HDN_FIRST - 10;
+    public static const int HDN_BEGINTRACK = IsUnicode ? 0xfffffeba : 0xfffffece;
+    public static const int HDN_BEGINTRACKW = 0xfffffeba;
+    public static const int HDN_BEGINTRACKA = 0xfffffece;
+    public static const int HDN_DIVIDERDBLCLICKA = HDN_FIRST - 5;
+    public static const int HDN_DIVIDERDBLCLICKW = HDN_FIRST - 25;
+    public static const int HDN_DIVIDERDBLCLICK = IsUnicode ? HDN_DIVIDERDBLCLICKW : HDN_DIVIDERDBLCLICKA;
+    public static const int HDN_ENDDRAG = HDN_FIRST - 11;
+    public static const int HDN_ITEMCHANGED = IsUnicode ? 0xfffffebf : 0xfffffed3;
+    public static const int HDN_ITEMCHANGEDW = 0xfffffebf;
+    public static const int HDN_ITEMCHANGEDA = 0xfffffed3;
+    public static const int HDN_ITEMCHANGINGW = HDN_FIRST - 20;
+    public static const int HDN_ITEMCHANGINGA = HDN_FIRST;
+    public static const int HDN_ITEMCLICKW = HDN_FIRST - 22;
+    public static const int HDN_ITEMCLICKA = HDN_FIRST - 2;
+    public static const int HDN_ITEMDBLCLICKW = HDN_FIRST - 23;
+    public static const int HDN_ITEMDBLCLICKA = HDN_FIRST - 3;
+    public static const int HDN_ITEMDBLCLICK = IsUnicode ? HDN_ITEMDBLCLICKW : HDN_ITEMDBLCLICKA;
+    public static const int HDS_BUTTONS = 0x2;
+    public static const int HDS_DRAGDROP = 0x0040;
+    public static const int HDS_FULLDRAG = 0x80;
+    public static const int HDS_HIDDEN = 0x8;
+//  public static const int HEAP_ZERO_MEMORY = 0x8;
+    public static const int HELPINFO_MENUITEM = 0x2;
+    public static const int HHT_ONDIVIDER = 0x4;
+    public static const int HHT_ONDIVOPEN = 0x8;
+    public static const int HICF_ARROWKEYS = 0x2;
+    public static const int HINST_COMMCTRL = 0xffffffff;
+    public static const int HKEY_CLASSES_ROOT = 0x80000000;
+    public static const int HKEY_CURRENT_USER = 0x80000001;
+    public static const int HKEY_LOCAL_MACHINE = 0x80000002;
+    public static const int HORZRES = 0x8;
+    public static const int HTBORDER = 0x12;
+    public static const int HTCAPTION = 0x2;
+    public static const int HTCLIENT = 0x1;
+    public static const int HTERROR = -2;
+    public static const int HTHSCROLL = 0x6;
+    public static const int HTMENU = 0x5;
+    public static const int HTNOWHERE = 0x0;
+    public static const int HTSYSMENU = 0x3;
+    public static const int HTTRANSPARENT = 0xffffffff;
+    public static const int HTVSCROLL = 0x7;
+    public static const int HWND_BOTTOM = 0x1;
+    public static const int HWND_TOP = 0x0;
+    public static const int HWND_TOPMOST = 0xffffffff;
+    public static const int HWND_NOTOPMOST = -2;
+    public static const int ICC_COOL_CLASSES = 0x400;
+    public static const int ICC_DATE_CLASSES = 0x100;
+    public static const int ICM_NOTOPEN = 0x0;
+    public static const int ICON_BIG = 0x1;
+    public static const int ICON_SMALL = 0x0;
+    public static const int I_IMAGECALLBACK = -1;
+    public static const int I_IMAGENONE = -2;
+    public static const int IDABORT = 0x3;
+    public static const int IDANI_CAPTION = 3;
+    public static const int IDB_STD_SMALL_COLOR = 0x0;
+    public static const int IDC_APPSTARTING = 0x7f8a;
+    public static const int IDC_ARROW = 0x7f00;
+    public static const int IDC_CROSS = 0x7f03;
+    public static const int IDC_HAND = 0x7f89;
+    public static const int IDC_HELP = 0x7f8b;
+    public static const int IDC_IBEAM = 0x7f01;
+    public static const int IDC_NO = 0x7f88;
+    public static const int IDC_SIZE = 0x7f80;
+    public static const int IDC_SIZEALL = 0x7f86;
+    public static const int IDC_SIZENESW = 0x7f83;
+    public static const int IDC_SIZENS = 0x7f85;
+    public static const int IDC_SIZENWSE = 0x7f82;
+    public static const int IDC_SIZEWE = 0x7f84;
+    public static const int IDC_UPARROW = 0x7f04;
+    public static const int IDC_WAIT = 0x7f02;
+    public static const int IDI_APPLICATION = 32512;
+    public static const int IDNO = 0x7;
+    public static const int IDOK = 0x1;
+    public static const int IDRETRY = 0x4;
+    public static const int IDYES = 0x6;
+    public static const int ILC_COLOR = 0x0;
+    public static const int ILC_COLOR16 = 0x10;
+    public static const int ILC_COLOR24 = 0x18;
+    public static const int ILC_COLOR32 = 0x20;
+    public static const int ILC_COLOR4 = 0x4;
+    public static const int ILC_COLOR8 = 0x8;
+    public static const int ILC_MASK = 0x1;
+    public static const int ILC_MIRROR = 0x2000;
+    public static const int ILD_NORMAL = 0x0;
+    public static const int ILD_SELECTED = 0x4;
+    public static const int IMAGE_BITMAP = 0x0;
+    public static const int IMAGE_CURSOR = 0x2;
+    public static const int IMAGE_ICON = 0x1;
+    public static const int IME_CMODE_FULLSHAPE = 0x8;
+    public static const int IME_CMODE_KATAKANA = 0x2;
+    public static const int IME_CMODE_NATIVE = 0x1;
+    public static const int IME_CMODE_ROMAN = 0x10;
+    public static const int INFINITE = 0xffffffff;
+    public static const int INPUT_KEYBOARD = 1;
+    public static const int INPUT_MOUSE = 0;
+    public static const int INTERNET_OPTION_END_BROWSER_SESSION = 42;
+    public static const int KEY_ENUMERATE_SUB_KEYS = 0x8;
+    public static const int KEY_NOTIFY = 0x10;
+    public static const int KEY_QUERY_VALUE = 0x1;
+    public static const int KEY_READ = 0x20019;
+    public static const int KEYEVENTF_KEYUP = 0x0002;
+    public static const int L_MAX_URL_LENGTH = 2084;
+//  public static const int LANG_KOREAN = 0x12;
+    public static const int LANG_NEUTRAL = 0x0;
+    public static const int LANG_USER_DEFAULT = 1 << 10;
+    public static const int LAYOUT_RTL = 0x1;
+    public static const int LBN_DBLCLK = 0x2;
+    public static const int LBN_SELCHANGE = 0x1;
+    public static const int LBS_EXTENDEDSEL = 0x800;
+    public static const int LBS_MULTIPLESEL = 0x8;
+    public static const int LBS_NOINTEGRALHEIGHT = 0x100;
+    public static const int LBS_NOTIFY = 0x1;
+    public static const int LB_ADDSTRING = 0x180;
+    public static const int LB_DELETESTRING = 0x182;
+    public static const int LB_ERR = 0xffffffff;
+    public static const int LB_ERRSPACE = 0xfffffffe;
+    public static const int LB_FINDSTRINGEXACT = 0x1a2;
+    public static const int LB_GETCARETINDEX = 0x19f;
+    public static const int LB_GETCOUNT = 0x18b;
+    public static const int LB_GETCURSEL = 0x188;
+    public static const int LB_GETHORIZONTALEXTENT = 0x193;
+    public static const int LB_GETITEMHEIGHT = 0x1a1;
+    public static const int LB_GETITEMRECT = 0x198;
+    public static const int LB_GETSEL = 0x187;
+    public static const int LB_GETSELCOUNT = 0x190;
+    public static const int LB_GETSELITEMS = 0x191;
+    public static const int LB_GETTEXT = 0x189;
+    public static const int LB_GETTEXTLEN = 0x18a;
+    public static const int LB_GETTOPINDEX = 0x18e;
+    public static const int LB_INITSTORAGE = 0x1a8;
+    public static const int LB_INSERTSTRING = 0x181;
+    public static const int LB_RESETCONTENT = 0x184;
+    public static const int LB_SELITEMRANGE = 0x19b;
+    public static const int LB_SELITEMRANGEEX = 0x183;
+    public static const int LB_SETCARETINDEX = 0x19e;
+    public static const int LB_SETCURSEL = 0x186;
+    public static const int LB_SETHORIZONTALEXTENT = 0x194;
+    public static const int LB_SETSEL = 0x185;
+    public static const int LB_SETTOPINDEX = 0x197;
+    public static const int LF_FACESIZE = 32;
+    public static const int LGRPID_ARABIC = 0xd;
+    public static const int LGRPID_HEBREW = 0xc;
+    public static const int LGRPID_INSTALLED = 1;
+    public static const int LIF_ITEMINDEX = 0x1;
+    public static const int LIF_STATE = 0x2;
+    public static const int LIS_FOCUSED = 0x1;
+    public static const int LIS_ENABLED = 0x2;
+    public static const int LISS_HOT = 0x2;
+    public static const int LISS_SELECTED = 0x3;
+    public static const int LISS_SELECTEDNOTFOCUS = 0x5;
+    public static const int LM_GETIDEALHEIGHT = 0x701;
+    public static const int LM_SETITEM = 0x702;
+    public static const int LM_GETITEM = 0x703;
+    public static const int LCID_SUPPORTED = 0x2;
+    public static const int LOCALE_IDEFAULTANSICODEPAGE = 0x1004;
+    public static const int LOCALE_IDATE = 0x00000021;
+    public static const int LOCALE_ITIME = 0x00000023;
+    public static const int LOCALE_RETURN_NUMBER = 0x20000000; // #if(WINVER >= 0x0400)
+    public static const int LOCALE_S1159 = 0x00000028;  
+    public static const int LOCALE_S2359 = 0x00000029;  
+    public static const int LOCALE_SDECIMAL = 14;   
+    public static const int LOCALE_SISO3166CTRYNAME = 0x5a;
+    public static const int LOCALE_SISO639LANGNAME = 0x59;
+    public static const int LOCALE_SLONGDATE = 0x00000020;
+    public static const int LOCALE_SSHORTDATE = 0x0000001F;
+    public static const int LOCALE_STIMEFORMAT = 0x00001003;
+    public static const int LOCALE_SYEARMONTH = 0x00001006;  // #if(WINVER >= 0x0500)
+    public static const int LOCALE_SDAYNAME1    = 0x0000002A;   // long name for Monday
+    public static const int LOCALE_SDAYNAME2    = 0x0000002B;   // long name for Tuesday
+    public static const int LOCALE_SDAYNAME3    = 0x0000002C;   // long name for Wednesday
+    public static const int LOCALE_SDAYNAME4    = 0x0000002D;   // long name for Thursday
+    public static const int LOCALE_SDAYNAME5    = 0x0000002E;   // long name for Friday
+    public static const int LOCALE_SDAYNAME6    = 0x0000002F;   // long name for Saturday
+    public static const int LOCALE_SDAYNAME7    = 0x00000030;   // long name for Sunday
+    public static const int LOCALE_SMONTHNAME1  = 0x00000038;   // long name for January
+    public static const int LOCALE_SMONTHNAME2  = 0x00000039;   // long name for February
+    public static const int LOCALE_SMONTHNAME3  = 0x0000003A;   // long name for March
+    public static const int LOCALE_SMONTHNAME4  = 0x0000003B;   // long name for April
+    public static const int LOCALE_SMONTHNAME5  = 0x0000003C;   // long name for May
+    public static const int LOCALE_SMONTHNAME6  = 0x0000003D;   // long name for June
+    public static const int LOCALE_SMONTHNAME7  = 0x0000003E;   // long name for July
+    public static const int LOCALE_SMONTHNAME8  = 0x0000003F;   // long name for August
+    public static const int LOCALE_SMONTHNAME9  = 0x00000040;   // long name for September
+    public static const int LOCALE_SMONTHNAME10 = 0x00000041;   // long name for October
+    public static const int LOCALE_SMONTHNAME11 = 0x00000042;   // long name for November
+    public static const int LOCALE_SMONTHNAME12 = 0x00000043;   // long name for December
+    public static const int LOCALE_USER_DEFAULT = 1024;
+    public static const int LOGPIXELSX = 0x58;
+    public static const int LOGPIXELSY = 0x5a;
+    public static const int LPSTR_TEXTCALLBACK = 0xffffffff;
+    public static const int LR_DEFAULTCOLOR = 0x0;
+    public static const int LR_SHARED = 0x8000;
+    public static const int LVCFMT_BITMAP_ON_RIGHT = 0x1000;
+    public static const int LVCFMT_CENTER = 0x2;
+    public static const int LVCFMT_IMAGE = 0x800;
+    public static const int LVCFMT_LEFT = 0x0;
+    public static const int LVCFMT_RIGHT = 0x1;
+    public static const int LVCF_FMT = 0x1;
+    public static const int LVCF_IMAGE = 0x10;
+    public static const int LVCFMT_JUSTIFYMASK = 0x3;
+    public static const int LVCF_TEXT = 0x4;
+    public static const int LVCF_WIDTH = 0x2;
+    public static const int LVHT_ONITEM = 0xe;
+    public static const int LVHT_ONITEMICON = 0x2;
+    public static const int LVHT_ONITEMLABEL = 0x4;
+    public static const int LVHT_ONITEMSTATEICON = 0x8;
+    public static const int LVIF_IMAGE = 0x2;
+    public static const int LVIF_INDENT = 0x10;
+    public static const int LVIF_STATE = 0x8;
+    public static const int LVIF_TEXT = 0x1;
+    public static const int LVIR_BOUNDS = 0x0;
+    public static const int LVIR_ICON = 0x1;
+    public static const int LVIR_LABEL = 0x2;
+    public static const int LVIR_SELECTBOUNDS = 0x3;
+    public static const int LVIS_DROPHILITED = 0x8;
+    public static const int LVIS_FOCUSED = 0x1;
+    public static const int LVIS_SELECTED = 0x2;
+    public static const int LVIS_STATEIMAGEMASK = 0xf000;
+    public static const int LVM_FIRST = 0x1000;
+    public static const int LVM_APPROXIMATEVIEWRECT = 0x1040;
+    public static const int LVM_CREATEDRAGIMAGE = LVM_FIRST + 33;
+    public static const int LVM_DELETEALLITEMS = 0x1009;
+    public static const int LVM_DELETECOLUMN = 0x101c;
+    public static const int LVM_DELETEITEM = 0x1008;
+    public static const int LVM_ENSUREVISIBLE = 0x1013;
+    public static const int LVM_GETBKCOLOR = 0x1000;
+    public static const int LVM_GETCOLUMN = IsUnicode ? 0x105f : 0x1019;
+    public static const int LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59;
+    public static const int LVM_GETCOLUMNWIDTH = 0x101d;
+    public static const int LVM_GETCOUNTPERPAGE = 0x1028;
+    public static const int LVM_GETEXTENDEDLISTVIEWSTYLE = 0x1037;
+    public static const int LVM_GETHEADER = 0x101f;
+    public static const int LVM_GETIMAGELIST = 0x1002;
+    public static const int LVM_GETITEM = IsUnicode ? 0x104b : 0x1005;
+    public static const int LVM_GETITEMW = 0x104b;
+    public static const int LVM_GETITEMA = 0x1005;
+    public static const int LVM_GETITEMCOUNT = 0x1004;
+    public static const int LVM_GETITEMRECT = 0x100e;
+    public static const int LVM_GETITEMSTATE = 0x102c;
+    public static const int LVM_GETNEXTITEM = 0x100c;
+    public static const int LVM_GETSELECTEDCOLUMN = LVM_FIRST + 174;
+    public static const int LVM_GETSELECTEDCOUNT = 0x1032;
+    public static const int LVM_GETSTRINGWIDTH = IsUnicode ? 0x1057 : 0x1011;
+    public static const int LVM_GETSUBITEMRECT = 0x1038;
+    public static const int LVM_GETTEXTCOLOR = 0x1023;
+    public static const int LVM_GETTOOLTIPS = 0x104e;
+    public static const int LVM_GETTOPINDEX = 0x1027;
+    public static const int LVM_HITTEST = 0x1012;
+    public static const int LVM_INSERTCOLUMN = IsUnicode ? 0x1061 : 0x101b;
+    public static const int LVM_INSERTITEM = IsUnicode ? 0x104d : 0x1007;
+    public static const int LVM_REDRAWITEMS = LVM_FIRST + 21;
+    public static const int LVM_SCROLL = 0x1014;
+    public static const int LVM_SETBKCOLOR = 0x1001;
+    public static const int LVM_SETCALLBACKMASK = LVM_FIRST + 11;
+    public static const int LVM_SETCOLUMN = IsUnicode ? 0x1060 : 0x101a;
+    public static const int LVM_SETCOLUMNORDERARRAY = LVM_FIRST + 58;
+    public static const int LVM_SETCOLUMNWIDTH = 0x101e;
+    public static const int LVM_SETEXTENDEDLISTVIEWSTYLE = 0x1036;
+    public static const int LVM_SETIMAGELIST = 0x1003;
+    public static const int LVM_SETITEM = IsUnicode ? 0x104c : 0x1006;
+    public static const int LVM_SETITEMCOUNT = LVM_FIRST + 47;
+    public static const int LVM_SETITEMSTATE = 0x102b;
+    public static const int LVM_SETSELECTIONMARK = LVM_FIRST + 67;
+    public static const int LVM_SETSELECTEDCOLUMN = LVM_FIRST + 140;
+    public static const int LVM_SETTEXTBKCOLOR = 0x1026;
+    public static const int LVM_SETTEXTCOLOR = 0x1024;
+    public static const int LVNI_FOCUSED = 0x1;
+    public static const int LVNI_SELECTED = 0x2;
+    public static const int LVN_BEGINDRAG = 0xffffff93;
+    public static const int LVN_BEGINRDRAG = 0xffffff91;
+    public static const int LVN_COLUMNCLICK = 0xffffff94;
+    public static const int LVN_FIRST = 0xffffff9c;
+    public static const int LVN_GETDISPINFOA = LVN_FIRST - 50;
+    public static const int LVN_GETDISPINFOW = LVN_FIRST - 77;
+    public static const int LVN_ITEMACTIVATE = 0xffffff8e;
+    public static const int LVN_ITEMCHANGED = 0xffffff9b;
+    public static const int LVN_MARQUEEBEGIN = 0xffffff64;
+    public static const int LVN_ODFINDITEMA = LVN_FIRST - 52;
+    public static const int LVN_ODFINDITEMW = LVN_FIRST - 79;
+    public static const int LVN_ODSTATECHANGED = LVN_FIRST - 15;
+    public static const int LVP_LISTITEM = 1;
+    public static const int LVSCW_AUTOSIZE = 0xffffffff;
+    public static const int LVSCW_AUTOSIZE_USEHEADER = 0xfffffffe;
+    public static const int LVSICF_NOINVALIDATEALL = 0x1;
+    public static const int LVSICF_NOSCROLL = 0x2;
+    public static const int LVSIL_SMALL = 0x1;
+    public static const int LVSIL_STATE = 0x2;
+    public static const int LVS_EX_DOUBLEBUFFER = 0x10000;
+    public static const int LVS_EX_FULLROWSELECT = 0x20;
+    public static const int LVS_EX_GRIDLINES = 0x1;
+    public static const int LVS_EX_HEADERDRAGDROP = 0x10;
+    public static const int LVS_EX_LABELTIP = 0x4000;
+    public static const int LVS_EX_ONECLICKACTIVATE = 0x40;
+    public static const int LVS_EX_SUBITEMIMAGES = 0x2;
+    public static const int LVS_EX_TRACKSELECT = 0x8;
+    public static const int LVS_EX_TRANSPARENTBKGND = 0x800000;
+    public static const int LVS_EX_TWOCLICKACTIVATE = 0x80;
+    public static const int LVS_LIST = 0x3;
+    public static const int LVS_NOCOLUMNHEADER = 0x4000;
+    public static const int LVS_NOSCROLL = 0x2000;
+    public static const int LVS_OWNERDATA = 0x1000;
+    public static const int LVS_OWNERDRAWFIXED = 0x400;
+    public static const int LVS_REPORT = 0x1;
+    public static const int LVS_SHAREIMAGELISTS = 0x40;
+    public static const int LVS_SHOWSELALWAYS = 0x8;
+    public static const int LVS_SINGLESEL = 0x4;
+    public static const int LWA_COLORKEY = 0x00000001;
+    public static const int LWA_ALPHA = 0x00000002;
+    public static const int MAX_LINKID_TEXT = 48;
+//  public static const int MAX_PATH = 260;
+    public static const int MA_NOACTIVATE = 0x3;
+//  public static const int MANIFEST_RESOURCE_ID = 2;
+    public static const int MB_ABORTRETRYIGNORE = 0x2;
+    public static const int MB_APPLMODAL = 0x0;
+    public static const int MB_ICONERROR = 0x10;
+    public static const int MB_ICONINFORMATION = 0x40;
+    public static const int MB_ICONQUESTION = 0x20;
+    public static const int MB_ICONWARNING = 0x30;
+    public static const int MB_OK = 0x0;
+    public static const int MB_OKCANCEL = 0x1;
+    public static const int MB_PRECOMPOSED = 0x1;
+    public static const int MB_RETRYCANCEL = 0x5;
+    public static const int MB_RTLREADING = 0x100000;
+    public static const int MB_SYSTEMMODAL = 0x1000;
+    public static const int MB_TASKMODAL = 0x2000;
+    public static const int MB_TOPMOST = 0x00040000;
+    public static const int MB_YESNO = 0x4;
+    public static const int MB_YESNOCANCEL = 0x3;
+    public static const int MCM_FIRST = 0x1000;
+    public static const int MCM_GETCURSEL = MCM_FIRST + 1;
+    public static const int MCM_SETCURSEL = MCM_FIRST + 2;
+    public static const int MCN_FIRST = 0xFFFFFD12;
+    public static const int MCN_SELCHANGE = MCN_FIRST + 1; 
+    public static const int MCM_GETMINREQRECT = MCM_FIRST + 9;
+    public static const int MCS_NOTODAY = 0x0010;
+    public static const int MDIS_ALLCHILDSTYLES = 0x0001;
+    public static const int MFS_CHECKED = 0x8;
+    public static const int MFS_DISABLED = 0x3;
+    public static const int MFS_GRAYED = 0x3;
+    public static const int MFT_RADIOCHECK = 0x200;
+    public static const int MFT_RIGHTJUSTIFY = 0x4000;
+    public static const int MFT_RIGHTORDER = 0x2000; 
+    public static const int MFT_SEPARATOR = 0x800;
+    public static const int MFT_STRING = 0x0;
+    public static const int MF_BYCOMMAND = 0x0;
+    public static const int MF_BYPOSITION = 0x400;
+    public static const int MF_CHECKED = 0x8;
+    public static const int MF_DISABLED = 0x2;
+    public static const int MF_ENABLED = 0x0;
+    public static const int MF_GRAYED = 0x1;
+    public static const int MF_HILITE = 0x80;
+    public static const int MF_POPUP = 0x10;
+    public static const int MF_SEPARATOR = 0x800;
+    public static const int MF_SYSMENU = 0x2000;
+    public static const int MF_UNCHECKED = 0x0;
+    public static const int MIIM_BITMAP = 0x80;
+    public static const int MIIM_DATA = 0x20;
+    public static const int MIIM_ID = 0x2;
+    public static const int MIIM_STATE = 0x1;
+    public static const int MIIM_SUBMENU = 0x4;
+    public static const int MIIM_TYPE = 0x10;
+    public static const int MIM_BACKGROUND = 0x2;
+    public static const int MIM_STYLE = 0x10;
+    public static const int MK_ALT = 0x20;
+    public static const int MK_CONTROL = 0x8;
+    public static const int MK_LBUTTON = 0x1;
+    public static const int MK_MBUTTON = 0x10;
+    public static const int MK_RBUTTON = 0x2;
+    public static const int MK_SHIFT = 0x4;
+    public static const int MK_XBUTTON1 = 0x20;
+    public static const int MK_XBUTTON2 = 0x40;
+    public static const int MM_TEXT = 0x1;
+    public static const int MNC_CLOSE = 0x1;
+    public static const int MNS_CHECKORBMP = 0x4000000;
+    public static const int MONITOR_DEFAULTTONEAREST = 0x2;
+    public static const int MONITORINFOF_PRIMARY = 0x1;
+    public static const char[] MONTHCAL_CLASS = "SysMonthCal32"; //$NON-NLS-1$
+    public static const int MOUSEEVENTF_ABSOLUTE = 0x8000;
+    public static const int MOUSEEVENTF_LEFTDOWN = 0x0002; 
+    public static const int MOUSEEVENTF_LEFTUP = 0x0004; 
+    public static const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; 
+    public static const int MOUSEEVENTF_MIDDLEUP = 0x0040; 
+    public static const int MOUSEEVENTF_MOVE = 0x0001;
+    public static const int MOUSEEVENTF_RIGHTDOWN = 0x0008; 
+    public static const int MOUSEEVENTF_RIGHTUP = 0x0010;
+    public static const int MOUSEEVENTF_VIRTUALDESK = 0x4000;
+    public static const int MOUSEEVENTF_WHEEL = 0x0800;
+    public static const int MOUSEEVENTF_XDOWN = 0x0080;
+    public static const int MOUSEEVENTF_XUP = 0x0100;
+    public static const int MSGF_DIALOGBOX = 0;
+    public static const int MSGF_COMMCTRL_BEGINDRAG = 0x4200;
+    public static const int MSGF_COMMCTRL_SIZEHEADER = 0x4201;
+    public static const int MSGF_COMMCTRL_DRAGSELECT = 0x4202;
+    public static const int MSGF_COMMCTRL_TOOLBARCUST = 0x4203;
+    public static const int MSGF_MAINLOOP = 8;
+    public static const int MSGF_MENU = 2;
+    public static const int MSGF_MOVE = 3;
+    public static const int MSGF_MESSAGEBOX = 1;
+    public static const int MSGF_NEXTWINDOW = 6;
+    public static const int MSGF_SCROLLBAR = 5;
+    public static const int MSGF_SIZE = 4;
+    public static const int MSGF_USER = 4096;
+    public static const int MWMO_INPUTAVAILABLE = 0x4;
+    public static const int NIF_ICON = 0x00000002;
+    public static const int NIF_INFO = 0x00000010;
+    public static const int NIF_MESSAGE = 0x00000001;
+    public static const int NIF_STATE = 0x00000008;
+    public static const int NIF_TIP = 0x00000004;
+    public static const int NIIF_ERROR = 0x00000003;
+    public static const int NIIF_INFO = 0x00000001;
+    public static const int NIIF_NONE = 0x00000000;
+    public static const int NIIF_WARNING = 0x00000002;
+    public static const int NIM_ADD = 0x00000000;
+    public static const int NIM_DELETE = 0x00000002;
+    public static const int NIM_MODIFY = 0x00000001;
+    public static const int NIN_SELECT = 0x400 + 0;
+    public static const int NINF_KEY = 0x1;
+    public static const int NIN_KEYSELECT = NIN_SELECT | NINF_KEY;
+    public static const int NIN_BALLOONSHOW = 0x400 + 2;
+    public static const int NIN_BALLOONHIDE = 0x400 + 3;
+    public static const int NIN_BALLOONTIMEOUT = 0x400 + 4;
+    public static const int NIN_BALLOONUSERCLICK = 0x400 + 5;
+    public static const int NIS_HIDDEN = 0x00000001;
+    public static const int NM_FIRST = 0x0;
+    public static const int NM_CLICK = 0xfffffffe;
+    public static const int NM_CUSTOMDRAW = NM_FIRST - 12;
+    public static const int NM_DBLCLK = 0xfffffffd;
+    public static const int NM_RECOGNIZEGESTURE = NM_FIRST - 16;
+    public static const int NM_RELEASEDCAPTURE = NM_FIRST - 16;
+    public static const int NM_RETURN = 0xfffffffc;
+    public static const int NOTIFYICONDATAA_V2_SIZE = NOTIFYICONDATAA_V2_SIZE ();
+    public static const int NOTIFYICONDATAW_V2_SIZE = NOTIFYICONDATAW_V2_SIZE ();
+    public static const int NOTIFYICONDATA_V2_SIZE = IsUnicode ? NOTIFYICONDATAW_V2_SIZE : NOTIFYICONDATAA_V2_SIZE;
+    public static const int NOTSRCCOPY = 0x330008;
+    public static const int NULLREGION = 0x1;
+    public static const int NULL_BRUSH = 0x5;
+    public static const int NULL_PEN = 0x8;
+    public static const int NUMRESERVED = 106;
+    public static const int OBJID_CARET = 0xFFFFFFF8;
+    public static const int OBJID_CLIENT = 0xFFFFFFFC;
+    public static const int OBJID_MENU = 0xFFFFFFFD;
+    public static const int OBJID_WINDOW = 0x00000000;
+    public static const int OBJ_BITMAP = 0x7;
+    public static const int OBJ_FONT = 0x6;
+    public static const int OBJ_PEN = 0x1;
+    public static const int OBM_CHECKBOXES = 0x7ff7;
+    public static const int ODS_SELECTED = 0x1;
+    public static const int ODT_MENU = 0x1;
+    public static const int OFN_ALLOWMULTISELECT = 0x200;
+    public static const int OFN_EXPLORER = 0x80000;
+    public static const int OFN_ENABLEHOOK = 0x20;
+    public static const int OFN_HIDEREADONLY = 0x4;
+    public static const int OFN_NOCHANGEDIR = 0x8;
+    public static const int OIC_BANG = 0x7F03;
+    public static const int OIC_HAND = 0x7F01;
+    public static const int OIC_INFORMATION = 0x7F04;
+    public static const int OIC_QUES = 0x7F02;
+    public static const int OIC_WINLOGO = 0x7F05;
+    public static const int OPAQUE = 0x2;
+    public static const int PATCOPY = 0xf00021;
+    public static const int PATINVERT = 0x5a0049;
+    public static const int PBM_GETPOS = 0x408;
+    public static const int PBM_GETRANGE = 0x407;
+    public static const int PBM_GETSTATE = 0x400 + 17;
+    public static const int PBM_SETBARCOLOR = 0x409;
+    public static const int PBM_SETBKCOLOR = 0x2001;
+    public static const int PBM_SETMARQUEE = 0x400 + 10;
+    public static const int PBM_SETPOS = 0x402;
+    public static const int PBM_SETRANGE32 = 0x406;
+    public static const int PBM_SETSTATE = 0x400 + 16;
+    public static const int PBM_STEPIT = 0x405;
+    public static const int PBS_MARQUEE = 0x08;
+    public static const int PBS_SMOOTH = 0x1;
+    public static const int PBS_VERTICAL = 0x4;
+    public static const int PBS_NORMAL = 1;
+    public static const int PBS_HOT = 2;
+    public static const int PBS_PRESSED = 3; 
+    public static const int PBS_DISABLED = 4;
+    public static const int PBS_DEFAULTED = 5;
+    public static const int PBST_NORMAL = 0x0001;
+    public static const int PBST_ERROR = 0x0002;
+    public static const int PBST_PAUSED = 0x0003;
+    public static const int PD_ALLPAGES = 0x0;
+    public static const int PD_COLLATE = 0x10;
+    public static const int PD_PAGENUMS = 0x2;
+    public static const int PD_PRINTTOFILE = 0x20;
+    public static const int PD_RETURNDC = 0x100;
+    public static const int PD_SELECTION = 0x1;
+    public static const int PD_USEDEVMODECOPIESANDCOLLATE = 0x40000;
+    public static const int PT_CLOSEFIGURE = 1;
+    public static const int PT_LINETO = 2;
+    public static const int PT_BEZIERTO = 4;
+    public static const int PT_MOVETO = 6;
+    public static const int PFM_TABSTOPS = 0x10;
+    public static const int PHYSICALHEIGHT = 0x6f;
+    public static const int PHYSICALOFFSETX = 0x70;
+    public static const int PHYSICALOFFSETY = 0x71;
+    public static const int PHYSICALWIDTH = 0x6e;
+    public static const int PLANES = 0xe;
+    public static const int PM_NOREMOVE = 0x0;
+    public static const int PM_NOYIELD = 0x2;
+    public static const int QS_HOTKEY = 0x0080;
+    public static const int QS_KEY = 0x0001;
+    public static const int QS_MOUSEMOVE = 0x0002;
+    public static const int QS_MOUSEBUTTON = 0x0004;
+    public static const int QS_MOUSE = QS_MOUSEMOVE | QS_MOUSEBUTTON;
+    public static const int QS_INPUT = QS_KEY | QS_MOUSE;
+    public static const int QS_POSTMESSAGE = 0x0008;
+    public static const int QS_TIMER = 0x0010;
+    public static const int QS_PAINT = 0x0020;
+    public static const int QS_SENDMESSAGE = 0x0040;
+    public static const int QS_ALLINPUT = QS_MOUSEMOVE | QS_MOUSEBUTTON | QS_KEY | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_SENDMESSAGE;
+    public static const int PM_QS_INPUT = QS_INPUT << 16;
+    public static const int PM_QS_POSTMESSAGE = (QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16;
+    public static const int PM_QS_PAINT = QS_PAINT << 16;
+    public static const int PM_QS_SENDMESSAGE = QS_SENDMESSAGE << 16;
+    public static const int PM_REMOVE = 0x1;
+    public static const char[] PROGRESS_CLASS = "msctls_progress32"; //$NON-NLS-1$
+    public static const int PP_BAR = 1;
+    public static const int PP_BARVERT = 2;
+    public static const int PP_CHUNK = 3;
+    public static const int PP_CHUNKVERT = 4;
+    public static const int PRF_CHILDREN = 16;
+    public static const int PRF_CLIENT = 0x4;
+    public static const int PRF_ERASEBKGND = 0x8;
+    public static const int PRF_NONCLIENT = 0x2;
+    public static const int PROGRESSCHUNKSIZE = 2411;
+    public static const int PROGRESSSPACESIZE = 2412;
+    public static const int PS_DASH = 0x1;
+    public static const int PS_DASHDOT = 0x3;
+    public static const int PS_DASHDOTDOT = 0x4;
+    public static const int PS_DOT = 0x2;
+    public static const int PS_ENDCAP_FLAT = 0x200;
+    public static const int PS_ENDCAP_SQUARE = 0x100;
+    public static const int PS_ENDCAP_ROUND = 0x000;
+    public static const int PS_ENDCAP_MASK = 0xF00;
+    public static const int PS_GEOMETRIC = 0x10000;
+    public static const int PS_JOIN_BEVEL = 0x1000;
+    public static const int PS_JOIN_MASK = 0xF000;
+    public static const int PS_JOIN_MITER = 0x2000;
+    public static const int PS_JOIN_ROUND = 0x0000;
+    public static const int PS_SOLID = 0x0;
+    public static const int PS_STYLE_MASK = 0xf;
+    public static const int PS_TYPE_MASK = 0x000f0000;
+    public static const int PS_USERSTYLE = 0x7;
+    public static const int R2_COPYPEN = 0xd;
+    public static const int R2_XORPEN = 0x7;
+    public static const int RASTERCAPS = 0x26;
+    public static const int RASTER_FONTTYPE = 0x1;
+    public static const int RBBIM_CHILD = 0x10;
+    public static const int RBBIM_CHILDSIZE = 0x20;
+    public static const int RBBIM_COLORS = 0x2;
+    public static const int RBBIM_HEADERSIZE = 0x800;
+    public static const int RBBIM_ID = 0x100;
+    public static const int RBBIM_IDEALSIZE = 0x200;
+    public static const int RBBIM_SIZE = 0x40;
+    public static const int RBBIM_STYLE = 0x1;
+    public static const int RBBIM_TEXT = 0x4;
+    public static const int RBBS_BREAK = 0x1;
+    public static const int RBBS_GRIPPERALWAYS = 0x80;
+    public static const int RBBS_NOGRIPPER = 0x00000100;
+    public static const int RBBS_USECHEVRON = 0x00000200;
+    public static const int RBBS_VARIABLEHEIGHT = 0x40;
+    public static const int RBN_FIRST = 0xfffffcc1;
+    public static const int RBN_BEGINDRAG = RBN_FIRST - 4;
+    public static const int RBN_CHILDSIZE = RBN_FIRST - 8;
+    public static const int RBN_CHEVRONPUSHED = RBN_FIRST - 10;
+    public static const int RBN_HEIGHTCHANGE = 0xfffffcc1;
+    public static const int RBS_DBLCLKTOGGLE = 0x8000;
+    public static const int RBS_BANDBORDERS = 0x400;
+    public static const int RBS_VARHEIGHT = 0x200;
+    public static const int RB_DELETEBAND = 0x402;
+    public static const int RB_GETBANDBORDERS = 0x422;
+    public static const int RB_GETBANDCOUNT = 0x40c;
+    public static const int RB_GETBANDINFO = IsUnicode ? 0x41c : 0x41d;
+    public static const int RB_GETBANDMARGINS = 0x428;
+    public static const int RB_GETBARHEIGHT = 0x41b;
+    public static const int RB_GETBKCOLOR = 0x414;
+    public static const int RB_GETRECT = 0x409;
+    public static const int RB_GETTEXTCOLOR = 0x416;
+    public static const int RB_IDTOINDEX = 0x410;
+    public static const int RB_INSERTBAND = IsUnicode ? 0x40a : 0x401;
+    public static const int RB_MOVEBAND = 0x427;
+    public static const int RB_SETBANDINFO = IsUnicode ? 0x40b : 0x406;
+    public static const int RB_SETBKCOLOR = 0x413;
+    public static const int RB_SETTEXTCOLOR = 0x415;
+    public static const int RC_BITBLT = 0x1;
+    public static const int RC_PALETTE = 0x100;
+    public static const int RDW_ALLCHILDREN = 0x80;
+    public static const int RDW_ERASE = 0x4;
+    public static const int RDW_FRAME = 0x400;
+    public static const int RDW_INVALIDATE = 0x1;
+    public static const int RDW_UPDATENOW = 0x100;
+    public static const int READ_CONTROL = 0x20000;
+    public static const char[] REBARCLASSNAME = "ReBarWindow32"; //$NON-NLS-1$
+    public static const int RGN_AND = 0x1;
+    public static const int RGN_COPY = 5;
+    public static const int RGN_DIFF = 0x4;
+    public static const int RGN_ERROR = 0;
+    public static const int RGN_OR = 0x2;
+    public static const int RP_BAND = 3;
+    public static const int SBP_ARROWBTN = 0x1;
+    public static const int SBP_THUMBBTNHORZ = 2;
+    public static const int SBP_THUMBBTNVERT = 3;
+    public static const int SBP_LOWERTRACKHORZ = 4;
+    public static const int SBP_UPPERTRACKHORZ = 5;
+    public static const int SBP_LOWERTRACKVERT = 6;
+    public static const int SBP_UPPERTRACKVERT = 7;
+    public static const int SBP_GRIPPERHORZ = 8;
+    public static const int SBP_GRIPPERVERT = 9;
+    public static const int SBP_SIZEBOX = 10;
+    public static const int SBS_HORZ = 0x0;
+    public static const int SBS_VERT = 0x1;
+    public static const int SB_BOTH = 0x3;
+    public static const int SB_BOTTOM = 0x7;
+    public static const int SB_CTL = 0x2;
+    public static const int SB_ENDSCROLL = 0x8;
+    public static const int SB_HORZ = 0x0;
+    public static const int SB_LINEDOWN = 0x1;
+    public static const int SB_LINEUP = 0x0;
+    public static const int SB_PAGEDOWN = 0x3;
+    public static const int SB_PAGEUP = 0x2;
+    public static const int SB_THUMBPOSITION = 0x4;
+    public static const int SB_THUMBTRACK = 0x5;
+    public static const int SB_TOP = 0x6;
+    public static const int SB_VERT = 0x1;
+    public static const int SCF_ALL = 0x4;
+    public static const int SCF_DEFAULT = 0x0;
+    public static const int SCF_SELECTION = 0x1;
+    public static const int SC_CLOSE = 0xf060;
+    public static const int SC_HSCROLL = 0xf080;
+    public static const int SC_KEYMENU = 0xf100;
+    public static const int SC_MAXIMIZE = 0xf030;
+    public static const int SC_MINIMIZE = 0xf020;
+    public static const int SC_NEXTWINDOW = 0xF040;
+    public static const int SC_RESTORE = 0xf120;
+    public static const int SC_SIZE = 0xf000;
+    public static const int SC_TASKLIST = 0xf130;
+    public static const int SC_VSCROLL = 0xf070;
+    public static const int SCRBS_NORMAL = 1;
+    public static const int SCRBS_HOT = 2;
+    public static const int SCRBS_PRESSED = 3;
+    public static const int SCRBS_DISABLED = 4;
+    public static const int SEM_FAILCRITICALERRORS = 0x1;
+    public static const int SET_FEATURE_ON_PROCESS = 0x2;
+    public static const int SF_RTF = 0x2;
+    public static const int SHCMBF_HIDDEN = 0x2;
+    public static const int SHCMBM_OVERRIDEKEY = 0x400 + 403;
+    public static const int SHCMBM_SETSUBMENU = 0x590;
+    public static const int SHCMBM_GETSUBMENU = 0x591;
+    public static const int SHGFI_ICON = 0x000000100;
+    public static const int SHGFI_SMALLICON= 0x1;
+    public static const int SHGFI_USEFILEATTRIBUTES = 0x000000010;
+    public static const int SHMBOF_NODEFAULT = 0x1;
+    public static const int SHMBOF_NOTIFY = 0x2;
+    public static const int SHRG_RETURNCMD = 0x1;
+    public static const int SIF_ALL = 0x17;
+    public static const int SIF_DISABLENOSCROLL = 0x8;
+    public static const int SIF_PAGE = 0x2;
+    public static const int SIF_POS = 0x4;
+    public static const int SIF_RANGE = 0x1;
+    public static const int SIF_TRACKPOS = 0x10;
+    public static const int SIP_DOWN = 1;
+    public static const int SIP_UP = 0;
+    public static const int SIPF_ON = 0x1;
+    public static const int SIZE_RESTORED = 0;
+    public static const int SIZE_MINIMIZED = 1;
+    public static const int SIZE_MAXIMIZED = 2;
+    public static const int SIZEPALETTE = 104;
+    public static const int SM_CMONITORS = 80;
+    public static const int SM_CXBORDER = 0x5;
+    public static const int SM_CXCURSOR = 0xd;
+    public static const int SM_CXDOUBLECLK = 36;
+    public static const int SM_CYDOUBLECLK = 37;
+    public static const int SM_CXEDGE = 0x2d;
+    public static const int SM_CXHSCROLL = 0x15;
+    public static const int SM_CXICON = 0x0b;
+    public static const int SM_CYICON = 0x0c;
+    public static const int SM_CXVIRTUALSCREEN = 78;
+    public static const int SM_CYVIRTUALSCREEN = 79;
+    public static const int SM_CXSMICON = 49;
+    public static const int SM_CYSMICON = 50;
+    public static const int SM_CXSCREEN = 0x0;
+    public static const int SM_XVIRTUALSCREEN = 76;
+    public static const int SM_YVIRTUALSCREEN = 77;
+    public static const int SM_CXVSCROLL = 0x2;
+    public static const int SM_CYBORDER = 0x6;
+    public static const int SM_CYCURSOR = 0xe;
+    public static const int SM_CYHSCROLL = 0x3;
+    public static const int SM_CYMENU = 0xf;
+    public static const int SM_CXMINTRACK = 34;
+    public static const int SM_CYMINTRACK = 35;
+    public static const int SM_CMOUSEBUTTONS = 43;
+    public static const int SM_CYSCREEN = 0x1;
+    public static const int SM_CYVSCROLL = 0x14;
+//  public static const int SM_DBCSENABLED = 0x2A;
+//  public static const int SM_IMMENABLED = 0x52;
+    public static const int SPI_GETFONTSMOOTHINGTYPE = 0x200A;
+    public static const int SPI_GETHIGHCONTRAST = 66;
+    public static const int SPI_GETWORKAREA = 0x30;
+    public static const int SPI_GETNONCLIENTMETRICS = 41;
+    public static const int SPI_GETWHEELSCROLLLINES = 104;
+    public static const int SPI_SETSIPINFO = 224;
+    public static const int SPI_SETHIGHCONTRAST = 67;
+    public static const int SRCAND = 0x8800c6;
+    public static const int SRCCOPY = 0xcc0020;
+    public static const int SRCINVERT = 0x660046;
+    public static const int SRCPAINT = 0xee0086;
+    public static const int SS_BITMAP = 0xe;
+    public static const int SS_CENTER = 0x1;
+    public static const int SS_CENTERIMAGE = 0x200;
+    public static const int SS_EDITCONTROL = 0x2000;
+    public static const int SS_ICON = 0x3;
+    public static const int SS_LEFT = 0x0;
+    public static const int SS_LEFTNOWORDWRAP = 0xc;
+    public static const int SS_NOTIFY = 0x100;
+    public static const int SS_OWNERDRAW = 0xd;
+    public static const int SS_REALSIZEIMAGE = 0x800;
+    public static const int SS_RIGHT = 0x2;
+    public static const int STANDARD_RIGHTS_READ = 0x20000;
+    public static const int STARTF_USESHOWWINDOW = 0x1;
+    public static const int STD_COPY = 0x1;
+    public static const int STD_CUT = 0x0;
+    public static const int STD_FILENEW = 0x6;
+    public static const int STD_FILEOPEN = 0x7;
+    public static const int STD_FILESAVE = 0x8;
+    public static const int STD_PASTE = 0x2;
+    public static const int STM_GETIMAGE = 0x173;
+    public static const int STM_SETIMAGE = 0x172;
+    public static const int SWP_ASYNCWINDOWPOS = 0x4000;
+    public static const int SWP_DRAWFRAME = 0x20;
+    public static const int SWP_NOACTIVATE = 0x10;
+    public static const int SWP_NOCOPYBITS = 0x100;
+    public static const int SWP_NOMOVE = 0x2;
+    public static const int SWP_NOREDRAW = 0x8;
+    public static const int SWP_NOSIZE = 0x1;
+    public static const int SWP_NOZORDER = 0x4;
+    public static const int SW_ERASE = 0x4;
+    public static const int SW_HIDE = 0x0;
+    public static const int SW_INVALIDATE = 0x2;
+    public static const int SW_MINIMIZE = 0x6;
+    public static const int SW_PARENTOPENING = 0x3;
+    public static const int SW_RESTORE = IsWinCE ? 0xd : 0x9;
+    public static const int SW_SCROLLCHILDREN = 0x1;
+    public static const int SW_SHOW = 0x5;
+    public static const int SW_SHOWMAXIMIZED = IsWinCE ? 0xb : 0x3;
+    public static const int SW_SHOWMINIMIZED = 0x2;
+    public static const int SW_SHOWMINNOACTIVE = 0x7;
+    public static const int SW_SHOWNA = 0x8;
+    public static const int SW_SHOWNOACTIVATE = 0x4;
+    public static const int SYNCHRONIZE = 0x100000;
+    public static const int SYSRGN = 0x4;
+    public static const int SYSTEM_FONT = 0xd;
+    public static const int S_OK = 0x0;
+    public static const int TABP_TABITEM = 1;
+    public static const int TABP_TABITEMLEFTEDGE = 2;
+    public static const int TABP_TABITEMRIGHTEDGE = 3;
+    public static const int TABP_TABITEMBOTHEDGE = 4;
+    public static const int TABP_TOPTABITEM = 5;
+    public static const int TABP_TOPTABITEMLEFTEDGE = 6;
+    public static const int TABP_TOPTABITEMRIGHTEDGE = 7;
+    public static const int TABP_TOPTABITEMBOTHEDGE = 8;
+    public static const int TABP_PANE = 9;
+    public static const int TABP_BODY = 10;
+    public static const int TBIF_COMMAND = 0x20;
+    public static const int TBIF_STATE = 0x4;
+    public static const int TBIF_IMAGE = 0x1;
+    public static const int TBIF_LPARAM = 0x10;
+    public static const int TBIF_SIZE = 0x40;
+    public static const int TBIF_STYLE = 0x8;
+    public static const int TBIF_TEXT = 0x2;
+    public static const int TB_GETEXTENDEDSTYLE = 0x400 + 85;
+    public static const int TBM_GETLINESIZE = 0x418;
+    public static const int TBM_GETPAGESIZE = 0x416;
+    public static const int TBM_GETPOS = 0x400;
+    public static const int TBM_GETRANGEMAX = 0x402;
+    public static const int TBM_GETRANGEMIN = 0x401;
+    public static const int TBM_GETTHUMBRECT = 0x419;
+    public static const int TBM_SETLINESIZE = 0x417;
+    public static const int TBM_SETPAGESIZE = 0x415;
+    public static const int TBM_SETPOS = 0x405;
+    public static const int TBM_SETRANGEMAX = 0x408;
+    public static const int TBM_SETRANGEMIN = 0x407;
+    public static const int TBM_SETTICFREQ = 0x414;
+    public static const int TBN_DROPDOWN = 0xfffffd3a;
+    public static const int TBN_FIRST = 0xfffffd44;
+    public static const int TBN_HOTITEMCHANGE = 0xFFFFFD37;
+    public static const int TBSTATE_CHECKED = 0x1;
+    public static const int TBSTATE_PRESSED = 0x02;
+    public static const int TBSTYLE_CUSTOMERASE = 0x2000;
+    public static const int TBSTYLE_DROPDOWN = 0x8;
+    public static const int TBSTATE_ENABLED = 0x4;
+    public static const int TBSTYLE_AUTOSIZE = 0x10;
+    public static const int TBSTYLE_EX_DOUBLEBUFFER = 0x80; 
+    public static const int TBSTYLE_EX_DRAWDDARROWS = 0x1;
+    public static const int TBSTYLE_EX_HIDECLIPPEDBUTTONS = 0x10;
+    public static const int TBSTYLE_EX_MIXEDBUTTONS = 0x8;
+    public static const int TBSTYLE_FLAT = 0x800;
+    public static const int TBSTYLE_LIST = 0x1000;
+    public static const int TBSTYLE_TOOLTIPS = 0x100;
+    public static const int TBSTYLE_TRANSPARENT = 0x8000;
+    public static const int TBSTYLE_WRAPABLE = 0x200;
+    public static const int TBS_AUTOTICKS = 0x1;
+    public static const int TBS_BOTH = 0x8;
+    public static const int TBS_DOWNISLEFT = 0x0400;
+    public static const int TBS_HORZ = 0x0;
+    public static const int TBS_VERT = 0x2;
+    public static const int TB_ADDSTRING = IsUnicode ? 0x44d : 0x41c;
+    public static const int TB_AUTOSIZE = 0x421;
+    public static const int TB_BUTTONCOUNT = 0x418;
+    public static const int TB_BUTTONSTRUCTSIZE = 0x41e;
+    public static const int TB_COMMANDTOINDEX = 0x419;
+    public static const int TB_DELETEBUTTON = 0x416;
+    public static const int TB_ENDTRACK = 0x8;
+    public static const int TB_GETBUTTON = 0x417;
+    public static const int TB_GETBUTTONINFO = IsUnicode ? 0x43f : 0x441;
+    public static const int TB_GETBUTTONSIZE = 0x43a;
+    public static const int TB_GETBUTTONTEXT = IsUnicode ? 0x44b : 0x42d;
+    public static const int TB_GETDISABLEDIMAGELIST = 0x437;
+    public static const int TB_GETHOTIMAGELIST = 0x435;
+    public static const int TB_GETHOTITEM = 0x0400 + 71;
+    public static const int TB_GETIMAGELIST = 0x431;
+    public static const int TB_GETITEMRECT = 0x41d;
+    public static const int TB_GETPADDING = 0x0400 + 86;
+    public static const int TB_GETROWS = 0x428;
+    public static const int TB_GETSTATE = 0x412;
+    public static const int TB_GETTOOLTIPS = 0x423;
+    public static const int TB_INSERTBUTTON = IsUnicode ? 0x443 : 0x415;
+    public static const int TB_LOADIMAGES = 0x432;
+    public static const int TB_MAPACCELERATOR = 0x0400 + (IsUnicode ? 90 : 78);
+    public static const int TB_SETBITMAPSIZE = 0x420;
+    public static const int TB_SETBUTTONINFO = IsUnicode ? 0x440 : 0x442;
+    public static const int TB_SETBUTTONSIZE = 0x41f;
+    public static const int TB_SETDISABLEDIMAGELIST = 0x436;
+    public static const int TB_SETEXTENDEDSTYLE = 0x454;
+    public static const int TB_SETHOTIMAGELIST = 0x434;
+    public static const int TB_SETHOTITEM =  0x0400 + 72;
+    public static const int TB_SETIMAGELIST = 0x430;
+    public static const int TB_SETPARENT = 0x400 + 37;
+    public static const int TB_SETROWS = 0x427;
+    public static const int TB_SETSTATE = 0x411;
+    public static const int TB_THUMBPOSITION = 0x4;
+    public static const int TCIF_IMAGE = 0x2;
+    public static const int TCIF_TEXT = 0x1;
+    public static const int TCI_SRCCHARSET = 0x1;
+    public static const int TCI_SRCCODEPAGE = 0x2;
+    public static const int TCM_ADJUSTRECT = 0x1328;
+    public static const int TCM_DELETEITEM = 0x1308;
+    public static const int TCM_GETCURSEL = 0x130b;
+    public static const int TCM_GETITEMCOUNT = 0x1304;
+    public static const int TCM_GETITEMRECT = 0x130a;
+    public static const int TCM_GETTOOLTIPS = 0x132d;
+    public static const int TCM_INSERTITEM = IsUnicode ? 0x133e : 0x1307;
+    public static const int TCM_SETCURSEL = 0x130c;
+    public static const int TCM_SETIMAGELIST = 0x1303;
+    public static const int TCM_SETITEM = IsUnicode ? 0x133d : 0x1306;
+    public static const int TCN_SELCHANGE = 0xfffffdd9;
+    public static const int TCN_SELCHANGING = 0xfffffdd8;
+    public static const int TCS_BOTTOM = 0x0002;
+    public static const int TCS_FOCUSNEVER = 0x8000;
+    public static const int TCS_MULTILINE = 0x200;
+    public static const int TCS_TABS = 0x0;
+    public static const int TCS_TOOLTIPS = 0x4000;
+    public static const int TECHNOLOGY = 0x2;
+    public static const int TIME_NOSECONDS = 0x2;
+    public static const int TIS_NORMAL = 1;
+    public static const int TIS_HOT = 2;
+    public static const int TIS_SELECTED = 3;
+    public static const int TIS_DISABLED = 4;
+    public static const int TIS_FOCUSED = 5;
+    public static const int TKP_TRACK = 1;
+    public static const int TKP_TRACKVERT = 2;
+    public static const int TKP_THUMB = 3;
+    public static const int TKP_THUMBBOTTOM = 4;
+    public static const int TKP_THUMBTOP = 5;
+    public static const int TKP_THUMBVERT = 6;
+    public static const int TKP_THUMBLEFT = 7;
+    public static const int TKP_THUMBRIGHT = 8;
+    public static const int TKP_TICS = 9;
+    public static const int TKP_TICSVERT = 10;
+    public static const int TME_HOVER = 0x1;
+    public static const int TME_LEAVE = 0x2;
+    public static const int TME_QUERY = 0x40000000;
+    public static const int TMPF_VECTOR = 0x2;
+    public static const int TMT_CONTENTMARGINS = 3602;
+    public static const char[] TOOLBARCLASSNAME = "ToolbarWindow32"; //$NON-NLS-1$
+    public static const char[] TOOLTIPS_CLASS = "tooltips_class32"; //$NON-NLS-1$
+    public static const int TP_BUTTON = 1;
+    public static const int TP_DROPDOWNBUTTON = 2;
+    public static const int TP_SPLITBUTTON = 3;
+    public static const int TP_SPLITBUTTONDROPDOWN = 4;
+    public static const int TP_SEPARATOR = 5;
+    public static const int TP_SEPARATORVERT = 6;
+    public static const int TPM_LEFTALIGN = 0x0;
+    public static const int TPM_LEFTBUTTON = 0x0;
+    public static const int TPM_RIGHTBUTTON = 0x2;
+    public static const int TPM_RIGHTALIGN = 0x8;
+    public static const char[] TRACKBAR_CLASS = "msctls_trackbar32"; //$NON-NLS-1$
+    public static const int TRANSPARENT = 0x1;
+    public static const int TREIS_DISABLED = 4;
+    public static const int TREIS_HOT = 2;
+    public static const int TREIS_NORMAL = 1;
+    public static const int TREIS_SELECTED = 3;
+    public static const int TREIS_SELECTEDNOTFOCUS = 5;
+    public static const int TS_MIN = 0;
+    public static const int TS_TRUE = 1;
+    public static const int TS_DRAW = 2;
+    public static const int TS_NORMAL = 1;
+    public static const int TS_HOT = 2;
+    public static const int TS_PRESSED = 3;
+    public static const int TS_DISABLED = 4;
+    public static const int TS_CHECKED = 5;
+    public static const int TS_HOTCHECKED = 6;
+    public static const int TTDT_AUTOMATIC = 0;
+    public static const int TTDT_RESHOW = 1;
+    public static const int TTDT_AUTOPOP = 2;
+    public static const int TTDT_INITIAL = 3;
+    public static const int TTF_ABSOLUTE = 0x80;
+    public static const int TTF_IDISHWND = 0x1;
+    public static const int TTF_SUBCLASS = 0x10;
+    public static const int TTF_RTLREADING = 0x4;
+    public static const int TTF_TRACK = 0x20;
+    public static const int TTF_TRANSPARENT = 0x100;
+    public static const int TTI_NONE = 0;
+    public static const int TTI_INFO = 1;
+    public static const int TTI_WARNING = 2;
+    public static const int TTI_ERROR= 3;
+    public static const int TTM_ACTIVATE = 0x400 + 1;
+    public static const int TTM_ADDTOOL = IsUnicode ? 0x432 : 0x404;
+    public static const int TTM_GETCURRENTTOOLA = 0x400 + 15;
+    public static const int TTM_GETCURRENTTOOLW = 0x400 + 59;
+    public static const int TTM_GETCURRENTTOOL = 0x400 + (IsUnicode ? 59 : 15);
+    public static const int TTM_GETDELAYTIME = 0x400 + 21;
+    public static const int TTM_DELTOOL = IsUnicode ? 0x433 : 0x405;
+    public static const int TTM_GETTOOLINFO = 0x400 + (IsUnicode ? 53 : 8);
+    public static const int TTM_NEWTOOLRECT = 0x400 + (IsUnicode ? 52 : 6);
+    public static const int TTM_POP = 0x400 + 28; 
+    public static const int TTM_SETDELAYTIME = 0x400 + 3;
+    public static const int TTM_SETMAXTIPWIDTH = 0x418;
+    public static const int TTM_SETTITLEA = 0x400 + 32;
+    public static const int TTM_SETTITLEW = 0x400 + 33;
+    public static const int TTM_SETTITLE = 0x400 + (IsUnicode ? 33 : 32);
+    public static const int TTM_TRACKPOSITION = 1042;
+    public static const int TTM_TRACKACTIVATE = 1041;
+    public static const int TTM_UPDATE = 0x41D;
+    public static const int TTN_FIRST = 0xfffffdf8;
+    public static const int TTN_GETDISPINFO = IsUnicode ? 0xfffffdee : 0xfffffdf8;
+    public static const int TTN_GETDISPINFOW = 0xfffffdee;
+    public static const int TTN_GETDISPINFOA = 0xfffffdf8;
+    public static const int TTN_POP = TTN_FIRST - 2;
+    public static const int TTN_SHOW = TTN_FIRST - 1;
+    public static const int TTS_ALWAYSTIP = 0x1;
+    public static const int TTS_BALLOON = 0x40;
+    public static const int TV_FIRST = 0x1100;
+    public static const int TVE_COLLAPSE = 0x1;
+    public static const int TVE_COLLAPSERESET = 0x8000;
+    public static const int TVE_EXPAND = 0x2;
+    public static const int TVGN_CARET = 0x9;
+    public static const int TVGN_CHILD = 0x4;
+    public static const int TVGN_DROPHILITED = 0x8;
+    public static const int TVGN_FIRSTVISIBLE = 0x5;
+    public static const int TVGN_LASTVISIBLE = 0xa;
+    public static const int TVGN_NEXT = 0x1;
+    public static const int TVGN_NEXTVISIBLE = 0x6;
+    public static const int TVGN_PARENT = 0x3;
+    public static const int TVGN_PREVIOUS = 0x2;
+    public static const int TVGN_PREVIOUSVISIBLE = 0x7;
+    public static const int TVGN_ROOT = 0x0;
+    public static const int TVHT_ONITEM = 0x46;
+    public static const int TVHT_ONITEMBUTTON = 16;
+    public static const int TVHT_ONITEMICON = 0x2;
+    public static const int TVHT_ONITEMLABEL = 0x4;
+    public static const int TVHT_ONITEMSTATEICON = 0x40;
+    public static const int TVIF_HANDLE = 0x10;
+    public static const int TVIF_IMAGE = 0x2;
+    public static const int TVIF_INTEGRAL = 0x0080;
+    public static const int TVIF_PARAM = 0x4;
+    public static const int TVIF_SELECTEDIMAGE = 0x20;
+    public static const int TVIF_STATE = 0x8;
+    public static const int TVIF_TEXT = 0x1;
+    public static const int TVIS_DROPHILITED = 0x8;
+    public static const int TVIS_EXPANDED = 0x20;
+    public static const int TVIS_SELECTED = 0x2;
+    public static const int TVIS_STATEIMAGEMASK = 0xf000;
+    public static const int TVI_FIRST = 0xffff0001;
+    public static const int TVI_LAST = 0xffff0002;
+    public static const int TVI_ROOT = 0xffff0000;
+    public static const int TVI_SORT = 0xFFFF0003;
+    public static const int TVM_CREATEDRAGIMAGE = TV_FIRST + 18;
+    public static const int TVM_DELETEITEM = 0x1101;
+    public static const int TVM_ENSUREVISIBLE = 0x1114;
+    public static const int TVM_EXPAND = 0x1102;
+    public static const int TVM_GETBKCOLOR = 0x111f;
+    public static const int TVM_GETCOUNT = 0x1105;
+    public static const int TVM_GETEXTENDEDSTYLE = TV_FIRST + 45;
+    public static const int TVM_GETIMAGELIST = 0x1108;
+    public static const int TVM_GETITEM = IsUnicode ? 0x113e : 0x110c;
+    public static const int TVM_GETITEMHEIGHT = 0x111c;
+    public static const int TVM_GETITEMRECT = 0x1104;
+    public static const int TVM_GETITEMSTATE = TV_FIRST + 39;
+    public static const int TVM_GETNEXTITEM = 0x110a;
+    public static const int TVM_GETTEXTCOLOR = 0x1120;
+    public static const int TVM_GETTOOLTIPS = TV_FIRST + 25;
+    public static const int TVM_GETVISIBLECOUNT = TV_FIRST + 16;
+    public static const int TVM_HITTEST = 0x1111;
+    public static const int TVM_INSERTITEM = IsUnicode ? 0x1132 : 0x1100;
+    public static const int TVM_MAPACCIDTOHTREEITEM = TV_FIRST + 42;
+    public static const int TVM_MAPHTREEITEMTOACCID = TV_FIRST + 43;
+    public static const int TVM_SELECTITEM = 0x110b;
+    public static const int TVM_SETBKCOLOR = 0x111d;
+    public static const int TVM_SETEXTENDEDSTYLE = TV_FIRST + 44;
+    public static const int TVM_SETIMAGELIST = 0x1109;
+    public static const int TVM_SETINSERTMARK = 0x111a;
+    public static const int TVM_SETITEM = IsUnicode ? 0x113f : 0x110d;
+    public static const int TVM_SETITEMHEIGHT = TV_FIRST + 27;
+    public static const int TVM_SETSCROLLTIME = TV_FIRST + 33;
+    public static const int TVM_SETTEXTCOLOR = 0x111e;
+    public static const int TVM_SORTCHILDREN = TV_FIRST + 19;
+    public static const int TVM_SORTCHILDRENCB = TV_FIRST + 21;
+    public static const int TVN_BEGINDRAGW = 0xfffffe38;
+    public static const int TVN_BEGINDRAGA = 0xfffffe69;
+    public static const int TVN_BEGINRDRAGW = 0xfffffe37;
+    public static const int TVN_BEGINRDRAGA = 0xfffffe68;
+    public static const int TVN_FIRST = 0xfffffe70;
+    public static const int TVN_GETDISPINFOA = TVN_FIRST - 3;
+    public static const int TVN_GETDISPINFOW = TVN_FIRST - 52;
+    public static const int TVN_ITEMCHANGINGW = TVN_FIRST - 17;
+    public static const int TVN_ITEMCHANGINGA = TVN_FIRST - 16;
+    public static const int TVN_ITEMEXPANDEDA = TVN_FIRST -6;
+    public static const int TVN_ITEMEXPANDEDW = TVN_FIRST - 55;
+    public static const int TVN_ITEMEXPANDINGW = 0xfffffe3a;
+    public static const int TVN_ITEMEXPANDINGA = 0xfffffe6b;
+    public static const int TVN_SELCHANGEDW = 0xfffffe3d;
+    public static const int TVN_SELCHANGEDA = 0xfffffe6e;
+    public static const int TVN_SELCHANGINGW = 0xfffffe3e;
+    public static const int TVN_SELCHANGINGA = 0xfffffe6f;
+    public static const int TVP_GLYPH = 2;
+    public static const int TVP_TREEITEM = 1;
+    public static const int TVSIL_NORMAL = 0x0;
+    public static const int TVSIL_STATE = 0x2;
+    public static const int TVS_DISABLEDRAGDROP = 0x10;
+    public static const int TVS_EX_AUTOHSCROLL = 0x0020;
+    public static const int TVS_EX_DOUBLEBUFFER = 0x0004;
+    public static const int TVS_EX_DIMMEDCHECKBOXES = 0x0200;
+    public static const int TVS_EX_DRAWIMAGEASYNC = 0x0400;
+    public static const int TVS_EX_EXCLUSIONCHECKBOXES = 0x0100;
+    public static const int TVS_EX_FADEINOUTEXPANDOS = 0x0040;
+    public static const int TVS_EX_MULTISELECT = 0x0002;
+    public static const int TVS_EX_NOINDENTSTATE = 0x0008;
+    public static const int TVS_EX_PARTIALCHECKBOXES = 0x0080;
+    public static const int TVS_EX_RICHTOOLTIP = 0x0010;
+    public static const int TVS_FULLROWSELECT = 0x1000;
+    public static const int TVS_HASBUTTONS = 0x1;
+    public static const int TVS_HASLINES = 0x2;
+    public static const int TVS_LINESATROOT = 0x4;
+    public static const int TVS_NOHSCROLL = 0x8000;
+    public static const int TVS_NONEVENHEIGHT = 0x4000;
+    public static const int TVS_NOTOOLTIPS = 0x80;
+    public static const int TVS_SHOWSELALWAYS = 0x20;
+    public static const int TVS_TRACKSELECT = 0x200;
+    public static const int UDM_GETACCEL = 0x046C;
+    public static const int UDM_GETRANGE32 = 0x0470;
+    public static const int UDM_GETPOS = 0x468;
+    public static const int UDM_GETPOS32 = 0x0472;
+    public static const int UDM_SETACCEL = 0x046B;
+    public static const int UDM_SETRANGE32 = 0x046f;
+    public static const int UDM_SETPOS = 0x467;
+    public static const int UDM_SETPOS32 = 0x0471;
+    public static const int UDN_DELTAPOS = -722;
+    public static const int UDS_ALIGNLEFT = 0x008;
+    public static const int UDS_ALIGNRIGHT = 0x004;
+    public static const int UDS_AUTOBUDDY = 0x0010;
+    public static const int UDS_WRAP = 0x0001;
+    public static const int UIS_INITIALIZE = 3;
+    public static const int UISF_HIDEACCEL = 0x2;
+    public static const int UISF_HIDEFOCUS = 0x1;
+    public static const char[] UPDOWN_CLASS = "msctls_updown32"; //$NON-NLS-1$
+    public static const int USP_E_SCRIPT_NOT_IN_FONT = 0x80040200;
+    public static const int VERTRES = 0xa;
+    public static const int VK_BACK = 0x8;
+    public static const int VK_CANCEL = 0x3;
+    public static const int VK_CAPITAL = 0x14;
+    public static const int VK_CONTROL = 0x11;
+    public static const int VK_DECIMAL = 0x6E;
+    public static const int VK_DELETE = 0x2e;
+    public static const int VK_DIVIDE = 0x6f;
+    public static const int VK_DOWN = 0x28;
+    public static const int VK_END = 0x23;
+    public static const int VK_ESCAPE = 0x1b;
+    public static const int VK_F1 = 0x70;
+    public static const int VK_F10 = 0x79;
+    public static const int VK_F11 = 0x7a;
+    public static const int VK_F12 = 0x7b;
+    public static const int VK_F13 = 0x7c;
+    public static const int VK_F14 = 0x7d;
+    public static const int VK_F15 = 0x7e;
+    public static const int VK_F2 = 0x71;
+    public static const int VK_F3 = 0x72;
+    public static const int VK_F4 = 0x73;
+    public static const int VK_F5 = 0x74;
+    public static const int VK_F6 = 0x75;
+    public static const int VK_F7 = 0x76;
+    public static const int VK_F8 = 0x77;
+    public static const int VK_F9 = 0x78;
+    public static const int VK_HOME = 0x24;
+    public static const int VK_INSERT = 0x2d;
+    public static const int VK_LBUTTON = 0x1;
+    public static const int VK_LEFT = 0x25;
+    public static const int VK_MBUTTON = 0x4;
+    public static const int VK_MENU = 0x12;
+    public static const int VK_MULTIPLY = 0x6A;
+    public static const int VK_N = 0x4e;
+    public static const int VK_O = 0x4f;
+    public static const int VK_NEXT = 0x22;
+    public static const int VK_NUMLOCK = 0x90;
+    public static const int VK_NUMPAD0 = 0x60;
+    public static const int VK_NUMPAD1 = 0x61;
+    public static const int VK_NUMPAD2 = 0x62;
+    public static const int VK_NUMPAD3 = 0x63;
+    public static const int VK_NUMPAD4 = 0x64;
+    public static const int VK_NUMPAD5 = 0x65;
+    public static const int VK_NUMPAD6 = 0x66;
+    public static const int VK_NUMPAD7 = 0x67;
+    public static const int VK_NUMPAD8 = 0x68;
+    public static const int VK_NUMPAD9 = 0x69;
+    public static const int VK_PAUSE = 0x13;
+    public static const int VK_PRIOR = 0x21;
+    public static const int VK_RBUTTON = 0x2;
+    public static const int VK_RETURN = 0xd;
+    public static const int VK_RIGHT = 0x27;
+    public static const int VK_SCROLL = 0x91;
+    public static const int VK_SEPARATOR = 0x6C;
+    public static const int VK_SHIFT = 0x10;
+    public static const int VK_SNAPSHOT = 0x2C;
+    public static const int VK_SPACE = 0x20;
+    public static const int VK_SUBTRACT = 0x6D;
+    public static const int VK_TAB = 0x9;
+    public static const int VK_UP = 0x26;
+    public static const int VK_XBUTTON1 = 0x05;
+    public static const int VK_XBUTTON2 = 0x06;
+    public static const int VK_ADD = 0x6B;
+    public static const int VK_APP1 = 0xc1;
+    public static const int VK_APP2 = 0xc2;
+    public static const int VK_APP3 = 0xc3;
+    public static const int VK_APP4 = 0xc4;
+    public static const int VK_APP5 = 0xc5;
+    public static const int VK_APP6 = 0xc6;
+    public static const char[] WC_HEADER = "SysHeader32"; //$NON-NLS-1$
+    public static const char[] WC_LINK = "SysLink"; //$NON-NLS-1$
+    public static const char[] WC_LISTVIEW = "SysListView32"; //$NON-NLS-1$
+    public static const char[] WC_TABCONTROL = "SysTabControl32"; //$NON-NLS-1$
+    public static const char[] WC_TREEVIEW = "SysTreeView32"; //$NON-NLS-1$
+    public static const int WINDING = 2;
+    public static const int WH_CBT = 5;
+    public static const int WH_GETMESSAGE = 0x3;
+    public static const int WH_MSGFILTER = 0xFFFFFFFF;
+    public static const int WH_FOREGROUNDIDLE = 11;
+    public static const int WHEEL_DELTA = 120;
+    public static const int WHEEL_PAGESCROLL = 0xFFFFFFFF;
+    public static const int WHITE_BRUSH = 0;
+    public static const int WM_ACTIVATE = 0x6;
+    public static const int WM_ACTIVATEAPP = 0x1c;
+    public static const int WM_APP = 0x8000;
+    public static const int WM_CANCELMODE = 0x1f;
+    public static const int WM_CAPTURECHANGED = 0x0215;
+    public static const int WM_CHANGEUISTATE = 0x0127;
+    public static const int WM_CHAR = 0x102;
+    public static const int WM_CLEAR = 0x303;
+    public static const int WM_CLOSE = 0x10;
+    public static const int WM_COMMAND = 0x111;
+    public static const int WM_CONTEXTMENU = 0x7b;
+    public static const int WM_COPY = 0x301;
+    public static const int WM_CREATE = 0x0001; 
+    public static const int WM_CTLCOLORBTN = 0x135;
+    public static const int WM_CTLCOLORDLG = 0x136;
+    public static const int WM_CTLCOLOREDIT = 0x133;
+    public static const int WM_CTLCOLORLISTBOX = 0x134;
+    public static const int WM_CTLCOLORMSGBOX = 0x132;
+    public static const int WM_CTLCOLORSCROLLBAR = 0x137;
+    public static const int WM_CTLCOLORSTATIC = 0x138;
+    public static const int WM_CUT = 0x300;
+    public static const int WM_DEADCHAR = 0x103;
+    public static const int WM_DESTROY = 0x2;
+    public static const int WM_DRAWITEM = 0x2b;
+    public static const int WM_ENDSESSION = 0x16;
+    public static const int WM_ENTERIDLE = 0x121;
+    public static const int WM_ERASEBKGND = 0x14;
+    public static const int WM_GETDLGCODE = 0x87;
+    public static const int WM_GETFONT = 0x31;
+//  public static const int WM_GETICON = 0x7f;
+    public static const int WM_GETOBJECT = 0x003D;
+    public static const int WM_GETMINMAXINFO = 0x0024;
+    public static const int WM_HELP = 0x53;
+    public static const int WM_HOTKEY = 0x0312;
+    public static const int WM_HSCROLL = 0x114;
+    public static const int WM_IME_CHAR = 0x286;
+    public static const int WM_IME_COMPOSITION = 0x10f;
+    public static const int WM_INITDIALOG = 0x110;
+    public static const int WM_INITMENUPOPUP = 0x117;
+    public static const int WM_INPUTLANGCHANGE = 0x51;
+    public static const int WM_KEYDOWN = 0x100;
+    public static const int WM_KEYFIRST = 0x100;
+    public static const int WM_KEYLAST = 0x108;
+    public static const int WM_KEYUP = 0x101;
+    public static const int WM_KILLFOCUS = 0x8;
+    public static const int WM_LBUTTONDBLCLK = 0x203;
+    public static const int WM_LBUTTONDOWN = 0x201;
+    public static const int WM_LBUTTONUP = 0x202;
+    public static const int WM_MBUTTONDBLCLK = 0x209;
+    public static const int WM_MBUTTONDOWN = 0x207;
+    public static const int WM_MBUTTONUP = 0x208;
+    public static const int WM_MEASUREITEM = 0x2c;
+    public static const int WM_MENUCHAR = 0x120;
+    public static const int WM_MENUSELECT = 0x11f;
+    public static const int WM_MOUSEACTIVATE = 0x21;
+    public static const int WM_MOUSEFIRST = 0x200;
+    public static const int WM_MOUSEHOVER = 0x2a1;
+    public static const int WM_MOUSELEAVE = 0x2a3;
+    public static const int WM_MOUSEMOVE = 0x200;
+    public static const int WM_MOUSEWHEEL = 0x20a;
+    public static const int WM_MOUSELAST = 0x20d;
+    public static const int WM_MOVE = 0x3;
+    public static const int WM_NCACTIVATE = 0x86;
+    public static const int WM_NCCALCSIZE = 0x83;
+    public static const int WM_NCHITTEST = 0x84;
+    public static const int WM_NCLBUTTONDOWN = 0x00A1;
+    public static const int WM_NCPAINT = 0x85;
+    public static const int WM_NOTIFY = 0x4e;
+    public static const int WM_NULL = 0x0;
+    public static const int WM_PAINT = 0xf;
+    public static const int WM_PALETTECHANGED = 0x311;
+    public static const int WM_PARENTNOTIFY = 0x0210;
+    public static const int WM_PASTE = 0x302;
+    public static const int WM_PRINT = 0x0317;
+    public static const int WM_PRINTCLIENT = 0x0318;
+    public static const int WM_QUERYENDSESSION = 0x11;
+    public static const int WM_QUERYNEWPALETTE = 0x30f;
+    public static const int WM_QUERYOPEN = 0x13;
+    public static const int WM_QUERYUISTATE = 0x129;
+    public static const int WM_RBUTTONDBLCLK = 0x206;
+    public static const int WM_RBUTTONDOWN = 0x204;
+    public static const int WM_RBUTTONUP = 0x205;
+    public static const int WM_SETCURSOR = 0x20;
+    public static const int WM_SETFOCUS = 0x7;
+    public static const int WM_SETFONT = 0x30;
+    public static const int WM_SETICON = 0x80;
+    public static const int WM_SETREDRAW = 0xb;
+    public static const int WM_SETTEXT = 12;
+    public static const int WM_SETTINGCHANGE = 0x1A;
+    public static const int WM_SHOWWINDOW = 0x18;
+    public static const int WM_SIZE = 0x5;
+    public static const int WM_SYSCHAR = 0x106;
+    public static const int WM_SYSCOLORCHANGE = 0x15;
+    public static const int WM_SYSCOMMAND = 0x112;
+    public static const int WM_SYSKEYDOWN = 0x104;
+    public static const int WM_SYSKEYUP = 0x105;
+    public static const int WM_TIMER = 0x113;
+    public static const int WM_THEMECHANGED = 0x031a;
+    public static const int WM_UNDO = 0x304;
+    public static const int WM_UPDATEUISTATE = 0x0128;
+    public static const int WM_USER = 0x400;
+    public static const int WM_VSCROLL = 0x115;
+    public static const int WM_WINDOWPOSCHANGED = 0x47;
+    public static const int WM_WINDOWPOSCHANGING = 0x46;
+    public static const int WS_BORDER = 0x800000;
+    public static const int WS_CAPTION = 0xc00000;
+    public static const int WS_CHILD = 0x40000000;
+    public static const int WS_CLIPCHILDREN = 0x2000000;
+    public static const int WS_CLIPSIBLINGS = 0x4000000;
+    public static const int WS_DISABLED = 0x4000000;
+    public static const int WS_EX_CAPTIONOKBTN = 0x80000000;
+    public static const int WS_EX_CLIENTEDGE = 0x200;
+    public static const int WS_EX_DLGMODALFRAME = 0x1;
+    public static const int WS_EX_LAYERED = 0x00080000;
+    public static const int WS_EX_LAYOUTRTL = 0x00400000;
+    public static const int WS_EX_LEFTSCROLLBAR = 0x00004000;
+    public static const int WS_EX_MDICHILD = 0x00000040;
+    public static const int WS_EX_NOINHERITLAYOUT = 0x00100000;
+    public static const int WS_EX_NOACTIVATE = 0x08000000;
+    public static const int WS_EX_RIGHT = 0x00001000;
+    public static const int WS_EX_RTLREADING = 0x00002000;
+    public static const int WS_EX_STATICEDGE = 0x20000;
+    public static const int WS_EX_TOOLWINDOW = 0x80;
+    public static const int WS_EX_TOPMOST = 0x8;
+    public static const int WS_EX_TRANSPARENT = 0x20;
+    public static const int WS_HSCROLL = 0x100000;
+    public static const int WS_MAXIMIZEBOX = IsWinCE ? 0x20000 : 0x10000;
+    public static const int WS_MINIMIZEBOX = IsWinCE ? 0x10000 : 0x20000;
+    public static const int WS_OVERLAPPED = IsWinCE ? WS_BORDER | WS_CAPTION : 0x0;
+    public static const int WS_OVERLAPPEDWINDOW = 0xcf0000;
+    public static const int WS_POPUP = 0x80000000;
+    public static const int WS_SYSMENU = 0x80000;
+    public static const int WS_TABSTOP = 0x10000;
+    public static const int WS_THICKFRAME = 0x40000;
+    public static const int WS_VISIBLE = 0x10000000;
+    public static const int WS_VSCROLL = 0x200000;
+    public static const int WM_XBUTTONDOWN = 0x020B;
+    public static const int WM_XBUTTONUP = 0x020C;
+    public static const int WM_XBUTTONDBLCLK = 0x020D;
+    public static const int XBUTTON1 = 0x1;
+    public static const int XBUTTON2 = 0x2;
+    
+public static int VERSION (int major, int minor) {
+    return major << 16 | minor;
+}
+
+
+/** Ansi/Unicode wrappers */
+
+public static final int /*long*/ AddFontResourceEx (TCHAR lpszFilename, int fl, int /*long*/ pdv) {
+    if (IsUnicode) {
+        char [] lpszFilename1 = lpszFilename is null ? null : lpszFilename.chars;
+        return AddFontResourceExW (lpszFilename1, fl, pdv);
+    }
+    byte [] lpszFilename1 = lpszFilename is null ? null : lpszFilename.bytes;
+    return AddFontResourceExA (lpszFilename1, fl, pdv);
+}
+
+public static final int /*long*/ AssocQueryString(int flags, int str, TCHAR pszAssoc, TCHAR pszExtra, TCHAR pszOut, int[] pcchOut) {
+    if (IsUnicode) {
+        char [] pszAssoc1 = pszAssoc is null ? null : pszAssoc.chars;
+        char [] pszExtra1 = pszExtra is null ? null : pszExtra.chars;
+        char [] pszOut1 = pszOut is null ? null : pszOut.chars;
+        return AssocQueryStringW (flags, str, pszAssoc1, pszExtra1, pszOut1, pcchOut);
+    }
+    byte [] pszAssoc1 = pszAssoc is null ? null : pszAssoc.bytes;
+    byte [] pszExtra1 = pszExtra is null ? null : pszExtra.bytes;
+    byte [] pszOut1 = pszOut is null ? null : pszOut.bytes;
+    return AssocQueryStringA (flags, str, pszAssoc1, pszExtra1, pszOut1, pcchOut);
+}
+
+public static final int /*long*/ CallWindowProc (int /*long*/ lpPrevWndFunc, int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return CallWindowProcW (lpPrevWndFunc, hWnd, Msg, wParam, lParam);
+    return CallWindowProcA (lpPrevWndFunc, hWnd, Msg, wParam, lParam);
+}
+
+public static final short CharUpper (short ch) {
+    if (IsUnicode) return CharUpperW (ch);
+    return CharUpperA (ch);
+}
+
+public static final short CharLower (short ch) {
+    if (IsUnicode) return CharLowerW (ch);
+    return CharLowerA (ch);
+}
+
+public static final BOOL ChooseColor (CHOOSECOLOR lpcc) {
+    if (IsUnicode) return ChooseColorW (lpcc);
+    return ChooseColorA (lpcc);
+}
+
+public static final BOOL ChooseFont (CHOOSEFONT chooseFont) {
+    if (IsUnicode) return ChooseFontW (chooseFont);
+    return ChooseFontA (chooseFont);
+}
+
+public static final int /*long*/ CreateActCtx (ACTCTX pActCtx) {
+    if (IsUnicode) return CreateActCtxW (pActCtx);
+    return CreateActCtxA (pActCtx);
+}
+
+public static final int /*long*/ CreateAcceleratorTable (byte [] lpaccl, int cEntries) {
+    if (IsUnicode) return CreateAcceleratorTableW (lpaccl, cEntries);
+    return CreateAcceleratorTableA (lpaccl, cEntries);
+}
+
+public static final int /*long*/ CreateDC (TCHAR lpszDriver, TCHAR lpszDevice, int /*long*/ lpszOutput, int /*long*/ lpInitData) {
+    if (IsUnicode) {
+        char [] lpszDriver1 = lpszDriver is null ? null : lpszDriver.chars;
+        char [] lpszDevice1 = lpszDevice is null ? null : lpszDevice.chars;
+        return CreateDCW (lpszDriver1, lpszDevice1, lpszOutput, lpInitData);
+    }
+    byte [] lpszDriver1 = lpszDriver is null ? null : lpszDriver.bytes;
+    byte [] lpszDevice1 = lpszDevice is null ? null : lpszDevice.bytes;
+    return CreateDCA (lpszDriver1, lpszDevice1, lpszOutput, lpInitData);
+}
+
+public static final int /*long*/ CreateFontIndirect (int /*long*/ lplf) {
+    if (IsUnicode) return CreateFontIndirectW (lplf);
+    return CreateFontIndirectA (lplf);
+}
+
+public static final int /*long*/ CreateFontIndirect (LOGFONT lplf) {
+    if (IsUnicode) return CreateFontIndirectW ((LOGFONTW)lplf);
+    return CreateFontIndirectA ((LOGFONTA)lplf);
+}
+
+public static final BOOL CreateProcess (int /*long*/ lpApplicationName, int /*long*/ lpCommandLine, int /*long*/ lpProcessAttributes, int /*long*/ lpThreadAttributes, BOOL bInheritHandles, int dwCreationFlags, int /*long*/ lpEnvironment, int /*long*/ lpCurrentDirectory, STARTUPINFO lpStartupInfo, PROCESS_INFORMATION lpProcessInformation) {
+    if (IsUnicode) return CreateProcessW (lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
+    return CreateProcessA (lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
+}
+
+public static final int /*long*/ CreateWindowEx (int dwExStyle, TCHAR lpClassName, TCHAR lpWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int /*long*/ hWndParent, int /*long*/ hMenu, int /*long*/ hInstance, CREATESTRUCT lpParam) {
+    if (IsUnicode) {
+        char [] lpClassName1 = lpClassName is null ? null : lpClassName.chars;
+        char [] lpWindowName1 = lpWindowName is null ? null : lpWindowName.chars;
+        return CreateWindowExW (dwExStyle, lpClassName1, lpWindowName1, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
+    }
+    byte [] lpClassName1 = lpClassName is null ? null : lpClassName.bytes;
+    byte [] lpWindowName1 = lpWindowName is null ? null : lpWindowName.bytes;
+    return CreateWindowExA (dwExStyle, lpClassName1, lpWindowName1, dwStyle, X, Y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
+}
+
+public static final int /*long*/ DefMDIChildProc (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return DefMDIChildProcW (hWnd, Msg, wParam, lParam);
+    return DefMDIChildProcA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ DefFrameProc (int /*long*/ hWnd, int /*long*/ hWndMDIClient, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return DefFrameProcW (hWnd, hWndMDIClient, Msg, wParam, lParam);
+    return DefFrameProcA (hWnd, hWndMDIClient, Msg, wParam, lParam);
+}
+public static final int /*long*/ DefWindowProc (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return DefWindowProcW (hWnd, Msg, wParam, lParam);
+    return DefWindowProcA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ DispatchMessage (MSG lpmsg) {
+    if (IsUnicode) return DispatchMessageW (lpmsg);
+    return DispatchMessageA (lpmsg);
+}
+
+public static final int DragQueryFile (int /*long*/ hDrop, int iFile, TCHAR lpszFile, int cch) {
+    if (IsUnicode) {
+        char [] lpszFile1 = lpszFile is null ? null : lpszFile.chars;
+        return DragQueryFileW (hDrop, iFile, lpszFile1, cch);
+    }
+    byte [] lpszFile1 = lpszFile is null ? null : lpszFile.bytes;
+    return DragQueryFileA (hDrop, iFile, lpszFile1, cch);
+}
+
+public static final BOOL DrawState (int /*long*/ hdc, int /*long*/ hbr, int /*long*/ lpOutputFunc, int /*long*/ lData, int /*long*/ wData, int x, int y, int cx, int cy, int fuFlags) {
+    if (IsUnicode) return DrawStateW (hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy, fuFlags);
+    return DrawStateA (hdc, hbr, lpOutputFunc, lData, wData, x, y, cx, cy, fuFlags);
+}
+
+public static final int DrawText (int /*long*/ hDC, TCHAR lpString, int nCount, RECT lpRect, int uFormat) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return DrawTextW (hDC, lpString1, nCount, lpRect, uFormat);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return DrawTextA (hDC, lpString1, nCount, lpRect, uFormat);
+}
+
+public static final int EnumFontFamilies (int /*long*/ hdc, TCHAR lpszFamily, int /*long*/ lpEnumFontFamProc, int /*long*/ lParam) {
+    if (IsUnicode) {
+        char [] lpszFamily1 = lpszFamily is null ? null : lpszFamily.chars;
+        return EnumFontFamiliesW (hdc, lpszFamily1, lpEnumFontFamProc, lParam);
+    }
+    byte [] lpszFamily1 = lpszFamily is null ? null : lpszFamily.bytes;
+    return EnumFontFamiliesA (hdc, lpszFamily1, lpEnumFontFamProc, lParam);
+}
+
+public static final int EnumFontFamiliesEx (int /*long*/ hdc, LOGFONT lpLogfont, int /*long*/ lpEnumFontFamExProc, int /*long*/ lParam, int dwFlags) {
+    if (IsUnicode) return EnumFontFamiliesExW (hdc, (LOGFONTW)lpLogfont, lpEnumFontFamExProc, lParam, dwFlags);
+    return EnumFontFamiliesExA (hdc, (LOGFONTA)lpLogfont, lpEnumFontFamExProc, lParam, dwFlags);
+}
+
+public static final BOOL EnumSystemLocales (int /*long*/ lpLocaleEnumProc, int dwFlags) {
+    if (IsUnicode) return EnumSystemLocalesW (lpLocaleEnumProc, dwFlags);
+    return EnumSystemLocalesA (lpLocaleEnumProc, dwFlags);
+}
+
+public static final BOOL EnumSystemLanguageGroups (int /*long*/ pLangGroupEnumProc, int dwFlags, int /*long*/ lParam) {
+    if (IsUnicode) return EnumSystemLanguageGroupsW (pLangGroupEnumProc, dwFlags, lParam);
+    return EnumSystemLanguageGroupsA (pLangGroupEnumProc, dwFlags, lParam);
+}
+
+public static final int ExpandEnvironmentStrings (TCHAR lpSrc, TCHAR lpDst, int nSize) {
+    if (IsUnicode) {
+        char [] lpSrc1 = lpSrc is null ? null : lpSrc.chars;
+        char [] lpDst1 = lpDst is null ? null : lpDst.chars;
+        return ExpandEnvironmentStringsW (lpSrc1, lpDst1, nSize);
+    }
+    byte [] lpSrc1 = lpSrc is null ? null : lpSrc.bytes;
+    byte [] lpDst1 = lpDst is null ? null : lpDst.bytes;
+    return ExpandEnvironmentStringsA (lpSrc1, lpDst1, nSize);
+}
+
+public static final int ExtractIconEx (TCHAR lpszFile, int nIconIndex, int /*long*/ [] phiconLarge, int /*long*/ [] phiconSmall, int nIcons) {
+    if (IsUnicode) {
+        char [] lpszFile1 = lpszFile is null ? null : lpszFile.chars;
+        return ExtractIconExW (lpszFile1, nIconIndex, phiconLarge, phiconSmall, nIcons);
+    }
+    byte [] lpszFile1 = lpszFile is null ? null : lpszFile.bytes;
+    return ExtractIconExA (lpszFile1, nIconIndex, phiconLarge, phiconSmall, nIcons);
+}
+
+public static final BOOL ExtTextOut(int /*long*/ hdc, int X, int Y, int fuOptions, RECT lprc, TCHAR lpString, int cbCount, int[] lpDx) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return ExtTextOutW (hdc, X, Y, fuOptions, lprc, lpString1, cbCount, lpDx);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return ExtTextOutA (hdc, X, Y, fuOptions, lprc, lpString1, cbCount, lpDx);
+}
+
+public static final int /*long*/ FindWindow (TCHAR lpClassName, TCHAR lpWindowName) {
+    if (IsUnicode) {
+        char [] lpClassName1 = lpClassName is null ? null : lpClassName.chars;
+        char [] lpWindowName1 = lpWindowName is null ? null : lpWindowName.chars;
+        return FindWindowW (lpClassName1, lpWindowName1); 
+    }
+    byte [] lpClassName1 = lpClassName is null ? null : lpClassName.bytes;
+    byte [] lpWindowName1 = lpWindowName is null ? null : lpWindowName.bytes;
+    return FindWindowA (lpClassName1, lpWindowName1);
+}
+
+public static final int FormatMessage (int dwFlags, int /*long*/ lpSource, int dwMessageId, int dwLanguageId, int[] lpBuffer, int nSize, int /*long*/ Arguments) {
+    if (IsUnicode) {
+        return FormatMessageW (dwFlags, lpSource, dwMessageId, dwLanguageId, lpBuffer, nSize, Arguments); 
+    }
+    return FormatMessageA (dwFlags, lpSource, dwMessageId, dwLanguageId, lpBuffer, nSize, Arguments);
+}
+
+public static final BOOL GetCharABCWidths (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpabc) {
+    if (IsUnicode) return GetCharABCWidthsW (hdc,iFirstChar, iLastChar, lpabc);
+    return GetCharABCWidthsA (hdc,iFirstChar, iLastChar, lpabc);
+}
+
+public static final int GetCharacterPlacement (int /*long*/ hdc, TCHAR lpString, int nCount, int nMaxExtent, GCP_RESULTS lpResults, int dwFlags) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return GetCharacterPlacementW (hdc, lpString1, nCount, nMaxExtent, lpResults, dwFlags);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return GetCharacterPlacementA (hdc, lpString1, nCount, nMaxExtent, lpResults, dwFlags); 
+}
+
+public static final BOOL GetCharWidth (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpabc) {
+    if (IsUnicode) return GetCharWidthW (hdc,iFirstChar, iLastChar, lpabc);
+    return GetCharWidthA (hdc,iFirstChar, iLastChar, lpabc);
+}
+
+public static final BOOL GetClassInfo (int /*long*/ hInstance, TCHAR lpClassName, WNDCLASS lpWndClass) {
+    if (IsUnicode) {
+        char [] lpClassName1 = lpClassName is null ? null : lpClassName.chars;
+        return GetClassInfoW (hInstance, lpClassName1, lpWndClass);
+    }
+    byte [] lpClassName1 = lpClassName is null ? null : lpClassName.bytes;
+    return GetClassInfoA (hInstance, lpClassName1, lpWndClass);
+}
+
+public static final int GetClassName (int /*long*/ hWnd, TCHAR lpClassName, int nMaxCount) {
+    if (IsUnicode) {
+        char [] lpClassName1 = lpClassName is null ? null : lpClassName.chars;
+        return GetClassNameW (hWnd, lpClassName1, nMaxCount);
+    }
+    byte [] lpClassName1 = lpClassName is null ? null : lpClassName.bytes;
+    return GetClassNameA (hWnd, lpClassName1, nMaxCount);
+}
+
+public static final int GetClipboardFormatName (int format, TCHAR lpszFormatName, int cchMaxCount) {
+    if (IsUnicode) {
+        char [] lpszFormatName1 = lpszFormatName is null ? null : lpszFormatName.chars;
+        return GetClipboardFormatNameW (format, lpszFormatName1, cchMaxCount);
+    }
+    byte [] lpszFormatName1 = lpszFormatName is null ? null : lpszFormatName.bytes;
+    return GetClipboardFormatNameA (format, lpszFormatName1, cchMaxCount);
+}
+
+public static final int GetDateFormat (int Locale, int dwFlags, SYSTEMTIME lpDate, TCHAR lpFormat, TCHAR lpDateStr, int cchDate) {
+    if (IsUnicode) {
+        char [] lpString1 = lpFormat is null ? null : lpFormat.chars;
+        char [] lpString2 = lpDateStr is null ? null : lpDateStr.chars;
+        return GetDateFormatW (Locale, dwFlags, lpDate, lpString1, lpString2, cchDate);
+    }
+    byte [] lpString1 = lpFormat is null ? null : lpFormat.bytes;
+    byte [] lpString2 = lpDateStr is null ? null : lpDateStr.bytes;
+    return GetDateFormatA (Locale, dwFlags, lpDate, lpString1, lpString2, cchDate);
+}
+
+public static final int GetKeyNameText (int lParam, TCHAR lpString, int nSize) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return GetKeyNameTextW (lParam, lpString1, nSize);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return GetKeyNameTextA (lParam, lpString1, nSize);
+}
+
+public static final int GetLocaleInfo (int Locale, int LCType, TCHAR lpLCData, int cchData) {
+    if (IsUnicode) {
+        char [] lpLCData1 = lpLCData is null ? null : lpLCData.chars;
+        return GetLocaleInfoW (Locale, LCType, lpLCData1, cchData);
+    }
+    byte [] lpLCData1 = lpLCData is null ? null : lpLCData.bytes;
+    return GetLocaleInfoA (Locale, LCType, lpLCData1, cchData);
+}
+
+public static final BOOL GetMenuItemInfo (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii) {
+    if (IsUnicode) return GetMenuItemInfoW (hMenu, uItem, fByPosition, lpmii);
+    return GetMenuItemInfoA (hMenu, uItem, fByPosition, lpmii);
+}
+
+public static final BOOL GetMessage (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax) {
+    if (IsUnicode) return GetMessageW (lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax);
+    return GetMessageA (lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax);
+}
+
+public static final int GetModuleFileName (int /*long*/ hModule, TCHAR lpFilename, int inSize) {
+    if (IsUnicode) {
+        char [] lpFilename1 = lpFilename is null ? null : lpFilename.chars;
+        return GetModuleFileNameW (hModule, lpFilename1, inSize);
+    }
+    byte [] lpFilename1 = lpFilename is null ? null : lpFilename.bytes;
+    return GetModuleFileNameA (hModule, lpFilename1, inSize);
+}
+
+public static final int /*long*/ GetModuleHandle (TCHAR lpModuleName) {
+    if (IsUnicode) {
+        char [] lpModuleName1 = lpModuleName is null ? null : lpModuleName.chars;
+        return GetModuleHandleW (lpModuleName1);
+    }
+    byte [] lpModuleName1 = lpModuleName is null ? null : lpModuleName.bytes;
+    return GetModuleHandleA (lpModuleName1);
+}
+
+public static final BOOL GetMonitorInfo (int /*long*/ hmonitor, MONITORINFO lpmi) {
+    if (IsUnicode) return GetMonitorInfoW (hmonitor, lpmi);
+    return GetMonitorInfoA (hmonitor, lpmi);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, BITMAP lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, DIBSECTION lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, EXTLOGPEN lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, LOGBRUSH lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, LOGFONT lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, (LOGFONTW)lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, (LOGFONTA)lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, LOGPEN lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final int GetObject (int /*long*/ hgdiobj, int cbBuffer, int /*long*/ lpvObject) {
+    if (IsUnicode) return GetObjectW (hgdiobj, cbBuffer, lpvObject);
+    return GetObjectA (hgdiobj, cbBuffer, lpvObject);
+}
+
+public static final BOOL GetOpenFileName (OPENFILENAME lpofn) {
+    if (IsUnicode) return GetOpenFileNameW (lpofn);
+    return GetOpenFileNameA (lpofn);
+}
+
+public static final int GetProfileString (TCHAR lpAppName, TCHAR lpKeyName, TCHAR lpDefault, TCHAR lpReturnedString, int nSize) {
+    if (IsUnicode) {
+        char [] lpAppName1 = lpAppName is null ? null : lpAppName.chars;
+        char [] lpKeyName1 = lpKeyName is null ? null : lpKeyName.chars;
+        char [] lpDefault1 = lpDefault is null ? null : lpDefault.chars;
+        char [] lpReturnedString1 = lpReturnedString is null ? null : lpReturnedString.chars;
+        return GetProfileStringW (lpAppName1, lpKeyName1, lpDefault1, lpReturnedString1, nSize);
+    }
+    byte [] lpAppName1 = lpAppName is null ? null : lpAppName.bytes;
+    byte [] lpKeyName1 = lpKeyName is null ? null : lpKeyName.bytes;
+    byte [] lpDefault1 = lpDefault is null ? null : lpDefault.bytes;
+    byte [] lpReturnedString1 = lpReturnedString is null ? null : lpReturnedString.bytes;
+    return GetProfileStringA (lpAppName1, lpKeyName1, lpDefault1, lpReturnedString1, nSize);
+}
+
+public static int /*long*/ GetProp (int /*long*/ hWnd, int /*long*/ lpString) {
+    if (IsUnicode) return GetPropW (hWnd, lpString);
+    return GetPropA (hWnd, lpString);
+}
+
+public static final BOOL GetSaveFileName (OPENFILENAME lpofn) {
+    if (IsUnicode) return GetSaveFileNameW (lpofn);
+    return GetSaveFileNameA (lpofn);
+}
+
+public static final void GetStartupInfo (STARTUPINFO lpStartupInfo) {
+    if (IsUnicode) {
+        GetStartupInfoW (lpStartupInfo);
+    } else {
+        GetStartupInfoA (lpStartupInfo);
+    }
+}
+
+public static final BOOL GetTextExtentPoint32 (int /*long*/ hdc, TCHAR lpString, int cbString, SIZE lpSize) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return GetTextExtentPoint32W (hdc, lpString1, cbString, lpSize);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return GetTextExtentPoint32A (hdc, lpString1, cbString, lpSize);    
+}
+
+public static final BOOL GetTextMetrics (int /*long*/ hdc, TEXTMETRIC lptm) {
+    if (IsUnicode) return GetTextMetricsW (hdc, (TEXTMETRICW)lptm);
+    return GetTextMetricsA (hdc, (TEXTMETRICA)lptm);
+}
+
+public static final int GetTimeFormat (int Locale, int dwFlags, SYSTEMTIME lpTime, TCHAR lpFormat, TCHAR lpTimeStr, int cchTime) {
+    if (IsUnicode) {
+        char [] lpString1 = lpFormat is null ? null : lpFormat.chars;
+        char [] lpString2 = lpTimeStr is null ? null : lpTimeStr.chars;
+        return GetTimeFormatW (Locale, dwFlags, lpTime, lpString1, lpString2, cchTime);
+    }
+    byte [] lpString1 = lpFormat is null ? null : lpFormat.bytes;
+    byte [] lpString2 = lpTimeStr is null ? null : lpTimeStr.bytes;
+    return GetTimeFormatA (Locale, dwFlags, lpTime, lpString1, lpString2, cchTime);
+}
+
+public static final BOOL GetVersionEx (OSVERSIONINFO lpVersionInfo) {
+    if (IsUnicode) return GetVersionExW ((OSVERSIONINFOW)lpVersionInfo);
+    return GetVersionExA ((OSVERSIONINFOA)lpVersionInfo);
+}
+
+public static final BOOL GetVersionEx (OSVERSIONINFOEX lpVersionInfo) {
+    if (IsUnicode) return GetVersionExW ((OSVERSIONINFOEXW)lpVersionInfo);
+    return GetVersionExA ((OSVERSIONINFOEXA)lpVersionInfo);
+}
+
+public static final int GetWindowLong (int /*long*/ hWnd, int nIndex) {
+    if (IsUnicode) return GetWindowLongW (hWnd, nIndex);
+    return GetWindowLongA (hWnd, nIndex);
+}
+
+public static final int /*long*/ GetWindowLongPtr (int /*long*/ hWnd, int nIndex) {
+    if (IsUnicode) return GetWindowLongPtrW (hWnd, nIndex);
+    return GetWindowLongPtrA (hWnd, nIndex);
+}
+
+public static final int GetWindowText (int /*long*/ hWnd, TCHAR lpString, int nMaxCount) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return GetWindowTextW (hWnd, lpString1, nMaxCount);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return GetWindowTextA (hWnd, lpString1, nMaxCount);
+}
+
+public static final int GetWindowTextLength (int /*long*/ hWnd) {
+    if (IsUnicode) return GetWindowTextLengthW (hWnd);
+    return GetWindowTextLengthA (hWnd);
+}
+
+public static final int GlobalAddAtom (TCHAR lpString) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return GlobalAddAtomW (lpString1);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return GlobalAddAtomA (lpString1);
+}
+
+public static final BOOL ImmGetCompositionFont (int /*long*/ hIMC, LOGFONT lplf) {
+    if (IsUnicode) return ImmGetCompositionFontW (hIMC, (LOGFONTW)lplf);
+    return ImmGetCompositionFontA (hIMC, (LOGFONTA)lplf);
+}
+
+public static final BOOL ImmSetCompositionFont (int /*long*/ hIMC, LOGFONT lplf) {
+    if (IsUnicode) return ImmSetCompositionFontW (hIMC, (LOGFONTW)lplf);
+    return ImmSetCompositionFontA (hIMC, (LOGFONTA)lplf);
+}
+
+public static final int ImmGetCompositionString (int /*long*/ hIMC, int dwIndex, TCHAR lpBuf, int dwBufLen) {
+    if (IsUnicode) {
+        char [] lpBuf1 = lpBuf is null ? null : lpBuf.chars;
+        return ImmGetCompositionStringW (hIMC, dwIndex, lpBuf1, dwBufLen);
+    }
+    byte [] lpBuf1 = lpBuf is null ? null : lpBuf.bytes;
+    return ImmGetCompositionStringA (hIMC, dwIndex, lpBuf1, dwBufLen);
+}
+
+public static final BOOL InsertMenu (int /*long*/ hMenu, int uPosition, int uFlags, int /*long*/ uIDNewItem, TCHAR lpNewItem) {
+    if (IsUnicode) {
+        char [] lpNewItem1 = lpNewItem is null ? null : lpNewItem.chars;
+        return InsertMenuW (hMenu, uPosition, uFlags, uIDNewItem, lpNewItem1);
+    }
+    byte [] lpNewItem1 = lpNewItem is null ? null : lpNewItem.bytes;
+    return InsertMenuA (hMenu, uPosition, uFlags, uIDNewItem, lpNewItem1);  
+}
+
+public static final BOOL InsertMenuItem (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii) {
+    if (IsUnicode) return InsertMenuItemW (hMenu, uItem, fByPosition, lpmii);
+    return InsertMenuItemA (hMenu, uItem, fByPosition, lpmii);
+}
+
+public static final int /*long*/ LoadBitmap (int /*long*/ hInstance, int /*long*/ lpBitmapName) {
+    if (IsUnicode) return LoadBitmapW (hInstance, lpBitmapName);
+    return LoadBitmapA (hInstance, lpBitmapName);
+}
+
+public static final int /*long*/ LoadCursor (int /*long*/ hInstance, int /*long*/ lpCursorName) {
+    if (IsUnicode) return LoadCursorW (hInstance, lpCursorName);
+    return LoadCursorA (hInstance, lpCursorName);
+}
+
+public static final int /*long*/ LoadIcon (int /*long*/ hInstance, int /*long*/ lpIconName) {
+    if (IsUnicode) return LoadIconW (hInstance, lpIconName);
+    return LoadIconA (hInstance, lpIconName);
+}
+
+public static final int /*long*/ LoadImage (int /*long*/ hinst, TCHAR lpszName, int uType, int cxDesired, int cyDesired, int fuLoad) {
+    if (IsUnicode) {
+        char [] lpszName1 = lpszName is null ? null : lpszName.chars;
+        return LoadImageW (hinst, lpszName1, uType, cxDesired, cyDesired, fuLoad);
+    }
+    byte [] lpszName1 = lpszName is null ? null : lpszName.bytes;
+    return LoadImageA (hinst, lpszName1, uType, cxDesired, cyDesired, fuLoad);
+}
+
+public static final int /*long*/ LoadImage (int /*long*/ hinst, int /*long*/ lpszName, int uType, int cxDesired, int cyDesired, int fuLoad) {
+    if (IsUnicode) return LoadImageW (hinst, lpszName, uType, cxDesired, cyDesired, fuLoad);
+    return LoadImageA (hinst, lpszName, uType, cxDesired, cyDesired, fuLoad);
+}
+
+public static final int /*long*/ LoadLibrary (TCHAR lpLibFileName) {
+    if (IsUnicode) {
+        char [] lpLibFileName1 = lpLibFileName is null ? null : lpLibFileName.chars;
+        return LoadLibraryW (lpLibFileName1);
+    }
+    byte [] lpLibFileName1 = lpLibFileName is null ? null : lpLibFileName.bytes;
+    return LoadLibraryA (lpLibFileName1);
+}
+
+public static final int LoadString (int /*long*/ hinst, int uID, TCHAR lpBuffer, int nBufferMax) {
+    if (IsUnicode) {
+        char [] lpBuffer1 = lpBuffer is null ? null : lpBuffer.chars;
+        return LoadStringW (hinst, uID, lpBuffer1, nBufferMax);
+    }
+    byte [] lpBuffer1 = lpBuffer is null ? null : lpBuffer.bytes;
+    return LoadStringA (hinst, uID, lpBuffer1, nBufferMax);
+}
+
+public static final int MapVirtualKey (int uCode, int uMapType) {
+    if (IsUnicode) return MapVirtualKeyW (uCode, uMapType);
+    return MapVirtualKeyA (uCode, uMapType);
+}
+
+public static final int MessageBox (int /*long*/ hWnd, TCHAR lpText, TCHAR lpCaption, int uType) {
+    if (IsUnicode) {
+        char [] lpText1 = lpText is null ? null : lpText.chars;
+        char [] lpCaption1 = lpCaption is null ? null : lpCaption.chars;
+        return MessageBoxW (hWnd, lpText1, lpCaption1, uType);
+    }
+    byte [] lpText1 = lpText is null ? null : lpText.bytes;
+    byte [] lpCaption1 = lpCaption is null ? null : lpCaption.bytes;
+    return MessageBoxA (hWnd, lpText1, lpCaption1, uType);
+}
+
+public static final void MoveMemory (int /*long*/ Destination, TCHAR Source, int Length) {
+    if (IsUnicode) {
+        char [] Source1 = Source is null ? null : Source.chars;
+        MoveMemory (Destination, Source1, Length);
+    } else {
+        byte [] Source1 = Source is null ? null : Source.bytes;
+        MoveMemory (Destination, Source1, Length);
+    }
+}
+
+public static final void MoveMemory (TCHAR Destination, int /*long*/ Source, int Length) {
+    if (IsUnicode) {
+        char [] Destination1 = Destination is null ? null : Destination.chars;
+        MoveMemory (Destination1, Source, Length);
+    } else {
+        byte [] Destination1 = Destination is null ? null : Destination.bytes;
+        MoveMemory (Destination1, Source, Length);
+    }
+}
+
+public static final void MoveMemory (int /*long*/ Destination, LOGFONT Source, int Length) {
+    if (IsUnicode) {
+        MoveMemory (Destination, (LOGFONTW)Source, Length);
+    } else {
+        MoveMemory (Destination, (LOGFONTA)Source, Length);
+    }
+}
+
+public static final void MoveMemory (LOGFONT Destination, int /*long*/ Source, int Length) {
+    if (IsUnicode) {
+        MoveMemory ((LOGFONTW)Destination, Source, Length);
+    } else {
+        MoveMemory ((LOGFONTA)Destination, Source, Length);
+    }
+}
+
+public static final void MoveMemory (int /*long*/ Destination, NMTTDISPINFO Source, int Length) {
+    if (IsUnicode) {
+        MoveMemory (Destination, (NMTTDISPINFOW)Source, Length);
+    } else {
+        MoveMemory (Destination, (NMTTDISPINFOA)Source, Length);
+    }
+}
+
+public static final void MoveMemory (NMTTDISPINFO Destination, int /*long*/ Source, int Length) {
+    if (IsUnicode) {
+        MoveMemory ((NMTTDISPINFOW)Destination, Source, Length);
+    } else {
+        MoveMemory ((NMTTDISPINFOA)Destination, Source, Length);
+    }
+}
+
+public static final void MoveMemory (TEXTMETRIC Destination, int /*long*/ Source, int Length) {
+    if (IsUnicode) {
+        MoveMemory ((TEXTMETRICW)Destination, Source, Length);
+    } else {
+        MoveMemory ((TEXTMETRICA)Destination, Source, Length);
+    }
+}
+
+public static final BOOL PeekMessage (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax, int wRemoveMsg) {
+    if (IsUnicode) return PeekMessageW (lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
+    return PeekMessageA (lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
+}
+
+public static final BOOL PostMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return PostMessageW (hWnd, Msg, wParam, lParam);
+    return PostMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final BOOL PostThreadMessage (int idThread, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return PostThreadMessageW (idThread, Msg, wParam, lParam);
+    return PostThreadMessageA (idThread, Msg, wParam, lParam);
+}
+
+public static final BOOL PrintDlg (PRINTDLG lppd) {
+    if (IsUnicode) return PrintDlgW (lppd);
+    return PrintDlgA (lppd);
+}
+
+public static final int RegEnumKeyEx (int /*long*/ hKey, int dwIndex, TCHAR lpName, int [] lpcName, int [] lpReserved, TCHAR lpClass, int [] lpcClass, FILETIME lpftLastWriteTime) {
+    if (IsUnicode) {
+        char [] lpName1 = lpName is null ? null : lpName.chars;
+        char [] lpClass1 = lpClass is null ? null : lpClass.chars;
+        return RegEnumKeyExW (hKey, dwIndex, lpName1, lpcName, lpReserved, lpClass1, lpcClass, lpftLastWriteTime);
+    }
+    byte [] lpName1 = lpName is null ? null : lpName.bytes;
+    byte [] lpClass1 = lpClass is null ? null : lpClass.bytes;
+    return RegEnumKeyExA (hKey, dwIndex, lpName1, lpcName, lpReserved, lpClass1, lpcClass, lpftLastWriteTime);
+}
+
+public static final int RegisterClass (WNDCLASS lpWndClass) {
+    if (IsUnicode) return RegisterClassW (lpWndClass);
+    return RegisterClassA (lpWndClass);
+}
+
+public static final int RegisterClipboardFormat (TCHAR lpszFormat) {
+    if (IsUnicode) {
+        char [] lpszFormat1 = lpszFormat is null ? null : lpszFormat.chars;
+        return RegisterClipboardFormatW (lpszFormat1);
+    }
+    byte [] lpszFormat1 = lpszFormat is null ? null : lpszFormat.bytes;
+    return RegisterClipboardFormatA (lpszFormat1);
+}
+
+public static final int RegisterWindowMessage (TCHAR lpString) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return RegisterWindowMessageW (lpString1);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return RegisterWindowMessageA (lpString1);
+}
+
+public static final int RegOpenKeyEx (int /*long*/ hKey, TCHAR lpSubKey, int ulOptions, int samDesired, int /*long*/[] phkResult) {
+    if (IsUnicode) {
+        char [] lpSubKey1 = lpSubKey is null ? null : lpSubKey.chars;
+        return RegOpenKeyExW (hKey, lpSubKey1, ulOptions, samDesired, phkResult);
+    }
+    byte [] lpSubKey1 = lpSubKey is null ? null : lpSubKey.bytes;
+    return RegOpenKeyExA (hKey, lpSubKey1, ulOptions, samDesired, phkResult);
+}
+
+public static final int RegQueryInfoKey (int /*long*/ hKey, int /*long*/ lpClass, int[] lpcbClass, int /*long*/ lpReserved, int[] lpSubKeys, int[] lpcbMaxSubKeyLen, int[] lpcbMaxClassLen, int[] lpcValues, int[] lpcbMaxValueNameLen, int[] lpcbMaxValueLen, int[] lpcbSecurityDescriptor, int /*long*/ lpftLastWriteTime){
+    if (IsUnicode) return RegQueryInfoKeyW (hKey, lpClass, lpcbClass, lpReserved, lpSubKeys, lpcbMaxSubKeyLen, lpcbMaxClassLen, lpcValues, lpcbMaxValueNameLen, lpcbMaxValueLen, lpcbSecurityDescriptor, lpftLastWriteTime);
+    return RegQueryInfoKeyA (hKey, lpClass, lpcbClass, lpReserved, lpSubKeys, lpcbMaxSubKeyLen, lpcbMaxClassLen, lpcValues, lpcbMaxValueNameLen, lpcbMaxValueLen, lpcbSecurityDescriptor, lpftLastWriteTime);
+}
+
+public static final int RegQueryValueEx (int /*long*/ hKey, TCHAR lpValueName, int /*long*/ lpReserved, int[] lpType, TCHAR lpData, int[] lpcbData) {
+    if (IsUnicode) {
+        char [] lpValueName1 = lpValueName is null ? null : lpValueName.chars;
+        char [] lpData1 = lpData is null ? null : lpData.chars;
+        return RegQueryValueExW (hKey, lpValueName1, lpReserved, lpType, lpData1, lpcbData);
+    }
+    byte [] lpValueName1 = lpValueName is null ? null : lpValueName.bytes;
+    byte [] lpData1 = lpData is null ? null : lpData.bytes;
+    return RegQueryValueExA (hKey, lpValueName1, lpReserved, lpType, lpData1, lpcbData);
+}
+
+public static final int RegQueryValueEx (int /*long*/ hKey, TCHAR lpValueName, int /*long*/ lpReserved, int[] lpType, int [] lpData, int[] lpcbData) {
+    if (IsUnicode) {
+        char [] lpValueName1 = lpValueName is null ? null : lpValueName.chars;
+        return RegQueryValueExW (hKey, lpValueName1, lpReserved, lpType, lpData, lpcbData);
+    }
+    byte [] lpValueName1 = lpValueName is null ? null : lpValueName.bytes;
+    return RegQueryValueExA (hKey, lpValueName1, lpReserved, lpType, lpData, lpcbData);
+}
+
+public static final int /*long*/ RemoveProp  (int /*long*/ hWnd, int /*long*/ lpString){
+    if (IsUnicode) return RemovePropW (hWnd, lpString);
+    return RemovePropA (hWnd, lpString);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TCHAR lParam) {
+    if (IsUnicode) {
+        char [] lParam1 = lParam is null ? null : lParam.chars;
+        return SendMessageW (hWnd, Msg, wParam, lParam1);
+    }
+    byte [] lParam1 = lParam is null ? null : lParam.bytes;
+    return SendMessageA (hWnd, Msg, wParam, lParam1);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int [] wParam, int [] lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SIZE lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ [] wParam, int /*long*/ lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int [] lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, char [] lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, short [] lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LITEM lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVCOLUMN lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVHITTESTINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVITEM lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, MARGINS lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, POINT lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, REBARBANDINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, RECT lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SYSTEMTIME lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTON lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTONINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TCITEM lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TOOLINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVHITTESTINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVINSERTSTRUCT lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVITEM lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVSORTCB lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, UDACCEL lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDHITTESTINFO lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDITEM lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDLAYOUT lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final int /*long*/ SendMessage (int /*long*/ hWnd, int Msg, int /*long*/ wParam, BUTTON_IMAGELIST lParam) {
+    if (IsUnicode) return SendMessageW (hWnd, Msg, wParam, lParam);
+    return SendMessageA (hWnd, Msg, wParam, lParam);
+}
+
+public static final BOOL SetMenuItemInfo (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii) {
+    if (IsUnicode) return SetMenuItemInfoW (hMenu, uItem, fByPosition, lpmii);
+    return SetMenuItemInfoA (hMenu, uItem, fByPosition, lpmii);
+}
+
+public static BOOL SetProp (int /*long*/ hWnd, int /*long*/ lpString, int /*long*/ hData) {
+    if (IsUnicode) return SetPropW (hWnd, lpString, hData);
+    return SetPropA (hWnd, lpString, hData);
+}
+
+public static final int SetWindowLong (int /*long*/ hWnd, int nIndex, int dwNewLong) {
+    if (IsUnicode) return SetWindowLongW (hWnd, nIndex, dwNewLong);
+    return SetWindowLongA (hWnd, nIndex, dwNewLong);
+}
+
+public static final int /*long*/ SetWindowLongPtr (int /*long*/ hWnd, int nIndex, int /*long*/ dwNewLong) {
+    if (IsUnicode) return SetWindowLongPtrW (hWnd, nIndex, dwNewLong);
+    return SetWindowLongPtrA (hWnd, nIndex, dwNewLong);
+}
+
+public static final int /*long*/ SetWindowsHookEx (int idHook, int /*long*/ lpfn, int /*long*/ hMod, int dwThreadId) {
+    if (IsUnicode) return SetWindowsHookExW (idHook, lpfn, hMod, dwThreadId);
+    return SetWindowsHookExA (idHook, lpfn, hMod, dwThreadId);
+}
+
+public static final BOOL SetWindowText (int /*long*/ hWnd, TCHAR lpString) {
+    if (IsUnicode) {
+        char [] lpString1 = lpString is null ? null : lpString.chars;
+        return SetWindowTextW (hWnd, lpString1);
+    }
+    byte [] lpString1 = lpString is null ? null : lpString.bytes;
+    return SetWindowTextA (hWnd, lpString1);
+}
+
+public static final int /*long*/ SHBrowseForFolder (BROWSEINFO lpbi) {
+    if (IsUnicode) return SHBrowseForFolderW (lpbi);
+    return SHBrowseForFolderA (lpbi);
+}
+
+public static final BOOL ShellExecuteEx (SHELLEXECUTEINFO lpExecInfo) {
+    if (IsUnicode) return ShellExecuteExW (lpExecInfo);
+    return ShellExecuteExA (lpExecInfo);
+}
+
+public static int /*long*/ SHGetFileInfo (TCHAR pszPath, int dwFileAttributes, SHFILEINFO psfi, int cbFileInfo, int uFlags) {
+    if (IsUnicode) {
+        char [] pszPath1 = pszPath is null ? null : pszPath.chars;
+        return SHGetFileInfoW (pszPath1, dwFileAttributes, (SHFILEINFOW) psfi, cbFileInfo, uFlags);
+    }
+    byte [] pszPath1 = pszPath is null ? null : pszPath.bytes;
+    return SHGetFileInfoA (pszPath1, dwFileAttributes, (SHFILEINFOA) psfi, cbFileInfo, uFlags);
+}
+
+public static final BOOL Shell_NotifyIcon (int dwMessage, NOTIFYICONDATA lpData) {
+    if (IsUnicode) return Shell_NotifyIconW (dwMessage, (NOTIFYICONDATAW)lpData);
+    return Shell_NotifyIconA (dwMessage, (NOTIFYICONDATAA)lpData);
+}
+
+public static final BOOL SHGetPathFromIDList (int /*long*/ pidl, TCHAR pszPath) {
+    if (IsUnicode) {
+        char [] pszPath1 = pszPath is null ? null : pszPath.chars;
+        return SHGetPathFromIDListW (pidl, pszPath1);
+    }
+    byte [] pszPath1 = pszPath is null ? null : pszPath.bytes;
+    return SHGetPathFromIDListA (pidl, pszPath1);
+}
+
+public static final int StartDoc (int /*long*/ hdc, DOCINFO lpdi) {
+    if (IsUnicode) return StartDocW (hdc, lpdi);
+    return StartDocA (hdc, lpdi);
+}
+
+public static final BOOL SystemParametersInfo (int uiAction, int uiParam, RECT pvParam, int fWinIni) {
+    if (IsUnicode) return SystemParametersInfoW (uiAction, uiParam, pvParam, fWinIni);
+    return SystemParametersInfoA (uiAction, uiParam, pvParam, fWinIni);
+}
+
+public static final BOOL SystemParametersInfo (int uiAction, int uiParam, HIGHCONTRAST pvParam, int fWinIni) {
+    if (IsUnicode) return SystemParametersInfoW (uiAction, uiParam, pvParam, fWinIni);
+    return SystemParametersInfoA (uiAction, uiParam, pvParam, fWinIni);
+}
+
+public static final BOOL SystemParametersInfo (int uiAction, int uiParam, NONCLIENTMETRICS pvParam, int fWinIni) {
+    if (IsUnicode) return SystemParametersInfoW (uiAction, uiParam, (NONCLIENTMETRICSW)pvParam, fWinIni);
+    return SystemParametersInfoA (uiAction, uiParam, (NONCLIENTMETRICSA)pvParam, fWinIni);
+}
+
+public static final BOOL SystemParametersInfo (int uiAction, int uiParam, int [] pvParam, int fWinIni) {
+    if (IsUnicode) return SystemParametersInfoW (uiAction, uiParam, pvParam, fWinIni);
+    return SystemParametersInfoA (uiAction, uiParam, pvParam, fWinIni);
+}
+
+public static final int TranslateAccelerator (int /*long*/ hWnd, int /*long*/ hAccTable, MSG lpMsg) {
+    if (IsUnicode) return TranslateAcceleratorW (hWnd, hAccTable, lpMsg);
+    return TranslateAcceleratorA (hWnd, hAccTable, lpMsg);
+}
+
+public static final BOOL UnregisterClass (TCHAR lpClassName, int /*long*/ hInstance) {
+    if (IsUnicode) {
+        char [] lpClassName1 = lpClassName is null ? null : lpClassName.chars;
+        return UnregisterClassW (lpClassName1, hInstance);
+    }
+    byte [] lpClassName1 = lpClassName is null ? null : lpClassName.bytes;
+    return UnregisterClassA (lpClassName1, hInstance);
+}
+
+public static final short VkKeyScan (short ch) {
+    if (IsUnicode) return VkKeyScanW (ch);
+    return VkKeyScanA (ch);
+}
+
+/** Natives */
+public static final native int AbortDoc (int /*long*/ hdc);
+public static final native BOOL ActivateActCtx (int /*long*/ hActCtx, int /*long*/ [] lpCookie);
+public static final native int /*long*/ ActivateKeyboardLayout(int /*long*/ hkl, int Flags);
+public static final native int AddFontResourceExW(char[] lpszFilename, int fl, int /*long*/ pdv);
+public static final native int AddFontResourceExA(byte[] lpszFilename, int fl, int /*long*/ pdv);
+public static final native BOOL AdjustWindowRectEx (RECT lpRect, int dwStyle, BOOL bMenu, int dwExStyle);
+public static final native BOOL AlphaBlend(int /*long*/ hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, int /*long*/ hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, BLENDFUNCTION blendFunction);
+public static final native BOOL AnimateWindow(int /*long*/ hwnd, int dwTime, int dwFlags);
+public static final native BOOL Arc (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc);
+public static final native int AssocQueryStringA(int flags, int str, byte[] pszAssoc, byte[] pszExtra, byte[] pszOut, int[] pcchOut);
+public static final native int AssocQueryStringW(int flags, int str, char[] pszAssoc, char[] pszExtra, char[] pszOut, int[] pcchOut);
+public static final native BOOL AttachThreadInput (int idAttach, int idAttachTo, BOOL fAttach);
+public static final native int /*long*/ BeginBufferedPaint (int /*long*/ hdcTarget, RECT prcTarget, int dwFormat, BP_PAINTPARAMS pPaintParams, int /*long*/ [] phdc);
+public static final native int /*long*/ BeginDeferWindowPos (int nNumWindows);
+public static final native int /*long*/ BeginPaint (int /*long*/ hWnd, PAINTSTRUCT lpPaint);
+public static final native BOOL BeginPath(int /*long*/ hdc);
+public static final native BOOL BitBlt (int /*long*/ hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, int /*long*/ hdcSrc, int nXSrc, int nYSrc, int dwRop);
+public static final native BOOL BringWindowToTop (int /*long*/ hWnd);
+public static final native int BufferedPaintInit ();
+public static final native int BufferedPaintSetAlpha (int /*long*/ hBufferedPaint, RECT prc, byte alpha);
+public static final native int BufferedPaintUnInit ();
+public static final native int Call (int /*long*/ address, DLLVERSIONINFO arg0);
+public static final native int /*long*/ CallNextHookEx(int /*long*/ hhk, int nCode, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ CallWindowProcW (int /*long*/ lpPrevWndFunc, int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ CallWindowProcA (int /*long*/ lpPrevWndFunc, int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native short CharLowerW (short ch);
+public static final native short CharLowerA (short ch);
+public static final native short CharUpperW (short ch);
+public static final native short CharUpperA (short ch);
+public static final native BOOL CheckMenuItem (int /*long*/ hmenu, int uIDCheckItem, int uCheck); 
+public static final native BOOL ChooseColorW (CHOOSECOLOR lpcc);
+public static final native BOOL ChooseColorA (CHOOSECOLOR lpcc);
+public static final native BOOL ChooseFontW (CHOOSEFONT chooseFont);
+public static final native BOOL ChooseFontA (CHOOSEFONT chooseFont);
+public static final native BOOL ClientToScreen (int /*long*/ hWnd, POINT lpPoint);
+public static final native BOOL CloseClipboard ();
+public static final native BOOL CloseHandle (int /*long*/ hObject);
+public static final native int CloseThemeData (int /*long*/ hTheme);
+public static final native int CoCreateInstance (byte[] rclsid, int /*long*/ pUnkOuter, int dwClsContext, byte[] riid, int /*long*/[] ppv);
+public static final native int CoInternetIsFeatureEnabled (int FeatureEntry, int dwFlags);
+public static final native int CoInternetSetFeatureEnabled (int FeatureEntry, int dwFlags, BOOL fEnable);
+public static final native int CombineRgn (int /*long*/ hrgnDest, int /*long*/ hrgnSrc1, int /*long*/ hrgnSrc2, int fnCombineMode);
+public static final native BOOL CommandBar_AddAdornments (int /*long*/ hwndCB, int dwFlags, int dwReserved);
+public static final native int /*long*/ CommandBar_Create (int /*long*/ hInst, int /*long*/ hwndParent, int idCmdBar);
+public static final native void CommandBar_Destroy (int /*long*/ hwndCB);
+public static final native BOOL CommandBar_DrawMenuBar (int /*long*/ hwndCB, int iButton);
+public static final native int CommandBar_Height (int /*long*/ hdnwCB);
+public static final native BOOL CommandBar_InsertMenubarEx (int /*long*/ hwndCB, int /*long*/ hInst, int /*long*/ pszMenu, int iButton);
+public static final native BOOL CommandBar_Show (int /*long*/ hwndCB, BOOL fShow);
+public static final native int CommDlgExtendedError ();
+public static final native int /*long*/ CopyImage (int /*long*/ hImage, int uType, int cxDesired, int cyDesired, int fuFlags);
+public static final native int /*long*/ CreateAcceleratorTableW (byte [] lpaccl, int cEntries); 
+public static final native int /*long*/ CreateAcceleratorTableA (byte [] lpaccl, int cEntries);
+public static final native int /*long*/ CreateActCtxW (ACTCTX pActCtx);
+public static final native int /*long*/ CreateActCtxA (ACTCTX pActCtx);
+public static final native int /*long*/ CreateBitmap (int nWidth, int nHeight, int cPlanes, int cBitsPerPel, byte [] lpvBits);
+public static final native BOOL CreateCaret (int /*long*/ hWnd, int /*long*/ hBitmap, int nWidth, int nHeight);
+public static final native int /*long*/ CreateCompatibleBitmap (int /*long*/ hdc, int nWidth, int nHeight);
+public static final native int /*long*/ CreateCompatibleDC (int /*long*/ hdc);
+public static final native int /*long*/ CreateCursor (int /*long*/ hInst, int xHotSpot, int yHotSpot, int nWidth, int nHeight, byte [] pvANDPlane, byte [] pvXORPlane);
+public static final native int /*long*/ CreateDCW (char [] lpszDriver, char [] lpszDevice, int /*long*/ lpszOutput, int /*long*/ lpInitData);  
+public static final native int /*long*/ CreateDCA (byte [] lpszDriver, byte [] lpszDevice, int /*long*/ lpszOutput, int /*long*/ lpInitData);  
+public static final native int /*long*/ CreateDIBSection(int /*long*/ hdc, byte[] pbmi, int iUsage, int /*long*/[] ppvBits, int /*long*/ hSection, int dwOffset);
+public static final native int /*long*/ CreateFontIndirectW (int /*long*/ lplf);
+public static final native int /*long*/ CreateFontIndirectA (int /*long*/ lplf);
+public static final native int /*long*/ CreateFontIndirectW (LOGFONTW lplf);
+public static final native int /*long*/ CreateFontIndirectA (LOGFONTA lplf);
+public static final native int /*long*/ CreateIconIndirect (ICONINFO lplf);
+public static final native int /*long*/ CreateMenu ();
+public static final native int /*long*/ CreatePalette (byte[] logPalette);
+public static final native int /*long*/ CreatePatternBrush (int /*long*/ colorRef);
+public static final native int /*long*/ CreatePen (int fnPenStyle, int nWidth, int crColor);
+public static final native int /*long*/ CreatePolygonRgn(int[] lppt, int cPoints, int fnPolyFillMode);
+public static final native int /*long*/ CreatePopupMenu ();
+public static final native BOOL CreateProcessW (int /*long*/ lpApplicationName, int /*long*/ lpCommandLine, int /*long*/ lpProcessAttributes, int /*long*/ lpThreadAttributes, BOOL bInheritHandles, int dwCreationFlags, int /*long*/ lpEnvironment, int /*long*/ lpCurrentDirectory, STARTUPINFO lpStartupInfo, PROCESS_INFORMATION lpProcessInformation);
+public static final native BOOL CreateProcessA (int /*long*/ lpApplicationName, int /*long*/ lpCommandLine, int /*long*/ lpProcessAttributes, int /*long*/ lpThreadAttributes, BOOL bInheritHandles, int dwCreationFlags, int /*long*/ lpEnvironment, int /*long*/ lpCurrentDirectory, STARTUPINFO lpStartupInfo, PROCESS_INFORMATION lpProcessInformation);
+public static final native int /*long*/ CreateRectRgn (int left, int top, int right, int bottom);
+public static final native int /*long*/ CreateSolidBrush (int colorRef);
+public static final native int CreateStreamOnHGlobal(int /*long*/ hGlobal, BOOL fDeleteOnRelease, int /*long*/[] ppstm);
+public static final native int /*long*/ CreateWindowExW (int dwExStyle, char [] lpClassName, char [] lpWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int /*long*/ hWndParent, int /*long*/ hMenu, int /*long*/ hInstance, CREATESTRUCT lpParam);
+public static final native int /*long*/ CreateWindowExA (int dwExStyle, byte [] lpClassName, byte [] lpWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int /*long*/ hWndParent, int /*long*/ hMenu, int /*long*/ hInstance, CREATESTRUCT lpParam);
+public static final native int /*long*/ DeferWindowPos (int /*long*/ hWinPosInfo, int /*long*/ hWnd, int /*long*/ hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);
+public static final native int /*long*/ DefMDIChildProcW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ DefMDIChildProcA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ DefFrameProcW (int /*long*/ hWnd, int /*long*/ hWndMDIClient, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ DefFrameProcA (int /*long*/ hWnd, int /*long*/ hWndMDIClient, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ DefWindowProcW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ DefWindowProcA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native BOOL DeleteDC (int /*long*/ hdc);
+public static final native BOOL DeleteMenu (int /*long*/ hMenu, int uPosition, int uFlags);
+public static final native BOOL DeleteObject (int /*long*/ hGdiObj);
+public static final native BOOL DestroyAcceleratorTable (int /*long*/ hAccel);
+public static final native BOOL DestroyCaret ();
+public static final native BOOL DestroyCursor (int /*long*/ hCursor);
+public static final native BOOL DestroyIcon (int /*long*/ hIcon);
+public static final native BOOL DestroyMenu (int /*long*/ hMenu);
+public static final native BOOL DestroyWindow (int /*long*/ hWnd);
+public static final native int /*long*/ DispatchMessageW (MSG lpmsg);
+public static final native int /*long*/ DispatchMessageA (MSG lpmsg);
+public static final native BOOL DragDetect (int /*long*/ hwnd, POINT pt);
+public static final native void DragFinish (int /*long*/ hDrop);
+public static final native int DragQueryFileA (int /*long*/ hDrop, int iFile, byte[] lpszFile, int cch);
+public static final native int DragQueryFileW (int /*long*/ hDrop, int iFile, char[] lpszFile, int cch);
+public static final native BOOL DrawAnimatedRects (int /*long*/ hwnd, int idAni, RECT lprcFrom, RECT lprcTo);
+public static final native BOOL DrawEdge (int /*long*/ hdc, RECT qrc, int edge, int grfFlags);
+public static final native BOOL DrawFocusRect (int /*long*/ hDC, RECT lpRect);
+public static final native BOOL DrawFrameControl (int /*long*/ hdc, RECT lprc, int uType, int uState);
+public static final native BOOL DrawIconEx (int /*long*/ hdc, int xLeft, int yTop, int /*long*/ hIcon, int cxWidth, int cyWidth, int istepIfAniCur, int /*long*/ hbrFlickerFreeDraw, int diFlags);
+public static final native BOOL DrawMenuBar (int /*long*/ hWnd);
+public static final native BOOL DrawStateW (int /*long*/ hdc, int /*long*/ hbr, int /*long*/ lpOutputFunc, int /*long*/ lData, int /*long*/ wData, int x, int y, int cx, int cy, int fuFlags);
+public static final native BOOL DrawStateA (int /*long*/ hdc, int /*long*/ hbr, int /*long*/ lpOutputFunc, int /*long*/ lData, int /*long*/ wData, int x, int y, int cx, int cy, int fuFlags);
+public static final native int DrawTextW (int /*long*/ hDC, char [] lpString, int nCount, RECT lpRect, int uFormat);
+public static final native int DrawTextA (int /*long*/ hDC, byte [] lpString, int nCount, RECT lpRect, int uFormat);
+public static final native int DrawThemeBackground (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT pRect, RECT pClipRect);
+public static final native int DrawThemeEdge (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT pDestRect, int uEdge, int uFlags, RECT pContentRect);
+public static final native int DrawThemeIcon (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT pRect, int /*long*/ himl, int iImageIndex);
+public static final native int DrawThemeParentBackground (int /*long*/ hwnd, int /*long*/ hdc, RECT prc);
+public static final native int DrawThemeText (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, char[] pszText, int iCharCount, int dwTextFlags, int dwTextFlags2, RECT pRect);
+public static final native int DwmExtendFrameIntoClientArea (int /*long*/ hWnd, MARGINS pMarInset); 
+public static final native BOOL Ellipse (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
+public static final native BOOL EnableMenuItem (int /*long*/ hMenu, int uIDEnableItem, int uEnable);
+public static final native BOOL EnableScrollBar (int /*long*/ hWnd, int wSBflags, int wArrows);
+public static final native BOOL EnableWindow (int /*long*/ hWnd, BOOL bEnable);
+public static final native BOOL EnumSystemLanguageGroupsW(int /*long*/ pLangGroupEnumProc, int dwFlags, int /*long*/ lParam);
+public static final native BOOL EnumSystemLanguageGroupsA(int /*long*/ pLangGroupEnumProc, int dwFlags, int /*long*/ lParam);
+public static final native BOOL EnumSystemLocalesW (int /*long*/ lpLocaleEnumProc, int dwFlags);
+public static final native BOOL EnumSystemLocalesA (int /*long*/ lpLocaleEnumProc, int dwFlags);
+public static final native BOOL EndDeferWindowPos (int /*long*/ hWinPosInfo);
+public static final native int EndBufferedPaint (int /*long*/ hBufferedPaint, BOOL fUpdateTarget);
+public static final native int EndDoc (int /*long*/ hdc);
+public static final native int EndPage (int /*long*/ hdc);
+public static final native int EndPaint (int /*long*/ hWnd, PAINTSTRUCT lpPaint);
+public static final native BOOL EndPath(int /*long*/ hdc);
+public static final native BOOL EnumDisplayMonitors (int /*long*/ hdc, RECT lprcClip, int /*long*/ lpfnEnum, int dwData);
+public static final native int EnumFontFamiliesW (int /*long*/ hdc, char [] lpszFamily, int /*long*/ lpEnumFontFamProc, int /*long*/ lParam);
+public static final native int EnumFontFamiliesA (int /*long*/ hdc, byte [] lpszFamily, int /*long*/ lpEnumFontFamProc, int /*long*/ lParam);
+public static final native int EnumFontFamiliesExW (int /*long*/ hdc, LOGFONTW lpLogfont, int /*long*/ lpEnumFontFamExProc, int /*long*/ lParam, int dwFlags);
+public static final native int EnumFontFamiliesExA (int /*long*/ hdc, LOGFONTA lpLogfont, int /*long*/ lpEnumFontFamExProc, int /*long*/ lParam, int dwFlags);
+public static final native BOOL EqualRect (RECT lprc1, RECT lprc2);
+public static final native BOOL EqualRgn (int /*long*/ hSrcRgn1, int /*long*/ hSrcRgn2);
+public static final native int ExcludeClipRect (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
+public static final native int ExpandEnvironmentStringsW (char [] lpSrc, char [] lsDst, int nSize);
+public static final native int ExpandEnvironmentStringsA (byte [] lpSrc, byte [] lsDst, int nSize);
+public static final native int /*long*/ ExtCreatePen (int dwPenStyle, int dwWidth, LOGBRUSH lplb, int dwStyleCount, int[] lpStyle);
+public static final native int /*long*/ ExtCreateRegion (float[] lpXform, int nCount, int[] lpRgnData);
+public static final native BOOL ExtTextOutW (int /*long*/ hdc, int X, int Y, int fuOptions, RECT lprc, char[] lpString, int cbCount, int[] lpDx);
+public static final native BOOL ExtTextOutA (int /*long*/ hdc, int X, int Y, int fuOptions, RECT lprc, byte[] lpString, int cbCount, int[] lpDx);
+public static final native int ExtractIconExW (char [] lpszFile, int nIconIndex, int /*long*/ [] phiconLarge, int /*long*/ [] phiconSmall, int nIcons);
+public static final native int ExtractIconExA (byte [] lpszFile, int nIconIndex, int /*long*/ [] phiconLarge, int /*long*/ [] phiconSmall, int nIcons);
+public static final native int FillRect (int /*long*/ hDC, RECT lprc, int /*long*/ hbr);
+public static final native BOOL FillPath (int /*long*/ hdc);
+public static final native int /*long*/ FindWindowA (byte [] lpClassName, byte [] lpWindowName);
+public static final native int /*long*/ FindWindowW (char [] lpClassName, char [] lpWindowName);
+public static final native int FormatMessageA (int dwFlags, int /*long*/ lpSource, int dwMessageId, int dwLanguageId, int[] lpBuffer, int nSize, int /*long*/ Arguments);
+public static final native int FormatMessageW (int dwFlags, int /*long*/ lpSource, int dwMessageId, int dwLanguageId, int[] lpBuffer, int nSize, int /*long*/ Arguments);
+public static final native BOOL FreeLibrary (int /*long*/ hLibModule);
+public static final native int GdiSetBatchLimit (int dwLimit);
+public static final native int GetACP ();
+public static final native short GetAsyncKeyState (int nVirtKey);
+public static final native int /*long*/ GetActiveWindow ();
+public static final native int GetBkColor (int /*long*/ hDC);
+public static final native int /*long*/ GetCapture ();
+public static final native BOOL GetCaretPos (POINT lpPoint);
+public static final native BOOL GetCharABCWidthsA (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpabc);
+public static final native BOOL GetCharABCWidthsW (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpabc);
+public static final native int GetCharacterPlacementW (int /*long*/ hdc, char[] lpString, int nCount, int nMaxExtent, GCP_RESULTS lpResults, int dwFlags);
+public static final native int GetCharacterPlacementA (int /*long*/ hdc, byte[] lpString, int nCount, int nMaxExtent, GCP_RESULTS lpResults, int dwFlags);
+public static final native BOOL GetCharWidthA (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpBuffer);
+public static final native BOOL GetCharWidthW (int /*long*/ hdc, int iFirstChar, int iLastChar, int [] lpBuffer);
+public static final native BOOL GetClassInfoW (int /*long*/ hInstance, char [] lpClassName, WNDCLASS lpWndClass);
+public static final native BOOL GetClassInfoA (int /*long*/ hInstance, byte [] lpClassName, WNDCLASS lpWndClass);
+public static final native int GetClassNameW (int /*long*/ hWnd, char [] lpClassName, int nMaxCount);
+public static final native int GetClassNameA (int /*long*/ hWnd, byte [] lpClassName, int nMaxCount);
+public static final native BOOL GetClientRect (int /*long*/ hWnd, RECT lpRect);
+public static final native int /*long*/ GetClipboardData (int uFormat);
+public static final native int GetClipboardFormatNameA (int format, byte[] lpszFormatName, int cchMaxCount);
+public static final native int GetClipboardFormatNameW (int format, char[] lpszFormatName, int cchMaxCount);
+public static final native int GetClipBox (int /*long*/ hdc, RECT lprc);
+public static final native int GetClipRgn (int /*long*/ hdc, int /*long*/ hrgn);
+public static final native BOOL GetComboBoxInfo (int /*long*/ hwndCombo, COMBOBOXINFO pcbi);
+public static final native int /*long*/ GetCurrentObject (int /*long*/ hdc, int uObjectType);
+public static final native int GetCurrentProcessId ();
+public static final native int GetCurrentThreadId ();
+public static final native int /*long*/ GetCursor ();
+public static final native BOOL GetCursorPos (POINT lpPoint);
+public static final native int GetDateFormatW(int Locale, int dwFlags, SYSTEMTIME lpDate, char [] lpFormat, char [] lpDateStr, int cchDate);
+public static final native int GetDateFormatA(int Locale, int dwFlags, SYSTEMTIME lpDate, byte [] lpFormat, byte [] lpDateStr, int cchDate);
+public static final native int /*long*/ GetDC (int /*long*/ hwnd);
+public static final native int /*long*/ GetDCEx (int /*long*/ hWnd, int /*long*/ hrgnClip, int flags);
+public static final native int /*long*/ GetDesktopWindow ();
+public static final native int GetDeviceCaps (int /*long*/ hdc, int nIndex);
+public static final native int GetDialogBaseUnits ();
+public static final native int GetDIBColorTable (int /*long*/ hdc, int uStartIndex, int cEntries, byte[] pColors);
+public static final native int GetDIBits (int /*long*/ hdc, int /*long*/ hbmp, int uStartScan, int cScanLines, int /*long*/ lpvBits, byte[] lpbi, int uUsage);
+public static final native int /*long*/ GetDlgItem (int /*long*/ hDlg, int nIDDlgItem);
+public static final native int GetDoubleClickTime ();
+public static final native int /*long*/ GetFocus ();
+public static final native int GetFontLanguageInfo (int /*long*/ hdc);
+public static final native int /*long*/ GetForegroundWindow ();
+public static final native BOOL GetGUIThreadInfo (int idThread, GUITHREADINFO lpgui);
+public static final native BOOL GetIconInfo (int /*long*/ hIcon, ICONINFO piconinfo);
+public static final native int GetKeyboardLayoutList (int nBuff, int /*long*/ [] lpList);
+public static final native int /*long*/ GetKeyboardLayout (int idThread);
+public static final native short GetKeyState (int nVirtKey);
+public static final native BOOL GetKeyboardState (byte [] lpKeyState);
+public static final native int GetKeyNameTextW (int lParam, char [] lpString, int nSize);
+public static final native int GetKeyNameTextA (int lParam, byte [] lpString, int nSize);
+public static final native int /*long*/ GetLastActivePopup (int /*long*/ hWnd);
+public static final native int GetLastError ();
+public static final native int GetLayout (int /*long*/ hdc);
+/* returns the instance handle to the swt library */
+public static final native int /*long*/ GetLibraryHandle ();
+public static final native int GetLocaleInfoW (int Locale, int LCType, char [] lpLCData, int cchData);
+public static final native int GetLocaleInfoA (int Locale, int LCType, byte [] lpLCData, int cchData);
+public static final native int /*long*/ GetMenu (int /*long*/ hWnd);
+public static final native BOOL GetMenuBarInfo (int /*long*/ hWnd, int idObject, int idItem, MENUBARINFO pmbi);
+public static final native int GetMenuDefaultItem (int /*long*/ hMenu, int fByPos, int gmdiFlags);
+public static final native BOOL GetMenuInfo (int /*long*/ hmenu, MENUINFO lpcmi);
+public static final native int GetMenuItemCount (int /*long*/ hMenu);
+public static final native BOOL GetMenuItemInfoW (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native BOOL GetMenuItemInfoA (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native BOOL GetMenuItemRect (int /*long*/ hWnd, int /*long*/ hMenu, int uItem, RECT lprcItem);
+public static final native BOOL GetMessageW (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax);
+public static final native BOOL GetMessageA (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax);
+public static final native int GetMessagePos ();
+public static final native int GetMessageTime ();
+public static final native int GetMetaRgn (int /*long*/ hdc, int /*long*/ hrgn);
+public static final native int GetThemeColor (int /*long*/ hTheme, int iPartId, int iStateId, int iPropId, int[] pColor);
+public static final native int GetThemeTextExtent (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, char[] pszText, int iCharCount, int dwTextFlags, RECT pBoundingRect, RECT pExtentRect);
+public static final native int GetTextCharset (int /*long*/ hdc);
+public static final native int GetTickCount ();
+public static final native int GetModuleFileNameW (int /*long*/ hModule, char [] lpFilename, int inSize);
+public static final native int GetModuleFileNameA (int /*long*/ hModule, byte [] lpFilename, int inSize);
+public static final native int /*long*/ GetModuleHandleW (char [] lpModuleName);
+public static final native int /*long*/ GetModuleHandleA (byte [] lpModuleName);
+public static final native BOOL GetMonitorInfoW (int /*long*/ hmonitor, MONITORINFO lpmi);
+public static final native BOOL GetMonitorInfoA (int /*long*/ hmonitor, MONITORINFO lpmi);
+public static final native int GetNearestPaletteIndex (int /*long*/ hPal, int crColor);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, BITMAP lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, BITMAP lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, DIBSECTION lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, DIBSECTION lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, EXTLOGPEN lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, EXTLOGPEN lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, LOGBRUSH lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, LOGBRUSH lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, LOGFONTA lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, LOGFONTW lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, LOGPEN lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, LOGPEN lpvObject);
+public static final native int GetObjectA (int /*long*/ hgdiobj, int cbBuffer, int /*long*/ lpvObject);
+public static final native int GetObjectW (int /*long*/ hgdiobj, int cbBuffer, int /*long*/ lpvObject);
+public static final native BOOL GetOpenFileNameW (OPENFILENAME lpofn);
+public static final native BOOL GetOpenFileNameA (OPENFILENAME lpofn);
+public static final native int GetPath (int /*long*/ hdc, int[] lpPoints, byte[] lpTypes, int nSize);
+public static final native int GetPaletteEntries (int /*long*/ hPalette, int iStartIndex, int nEntries, byte[] logPalette);
+public static final native int /*long*/ GetParent (int /*long*/ hWnd);
+public static final native int GetPixel (int /*long*/ hdc, int x, int y);
+public static final native int GetPolyFillMode (int /*long*/ hdc);
+public static final native int /*long*/ GetProcAddress (int /*long*/ hModule, byte [] lpProcName);
+public static final native int /*long*/ GetProcessHeap ();
+public static final native int GetProcessHeaps (int NumberOfHeaps, int /*long*/[] ProcessHeaps);
+public static final native int GetProfileStringW (char [] lpAppName, char [] lpKeyName, char [] lpDefault, char [] lpReturnedString, int nSize);
+public static final native int GetProfileStringA (byte [] lpAppName, byte [] lpKeyName, byte [] lpDefault, byte [] lpReturnedString, int nSize);
+public static final native int /*long*/ GetPropW (int /*long*/ hWnd, int /*long*/ lpString);
+public static final native int /*long*/ GetPropA (int /*long*/ hWnd, int /*long*/ lpString);
+public static final native int GetRandomRgn (int /*long*/ hdc, int /*long*/ hrgn, int iNum);
+public static final native int GetRegionData (int /*long*/ hRgn, int dwCount, int [] lpRgnData);
+public static final native int GetRgnBox (int /*long*/ hrgn, RECT lprc);
+public static final native int GetROP2 (int /*long*/ hdc);
+public static final native BOOL GetSaveFileNameW (OPENFILENAME lpofn);
+public static final native BOOL GetSaveFileNameA (OPENFILENAME lpofn);
+public static final native BOOL GetScrollInfo (int /*long*/ hwnd, int flags, SCROLLINFO info);
+public static final native void GetStartupInfoW (STARTUPINFO lpStartupInfo);
+public static final native void GetStartupInfoA (STARTUPINFO lpStartupInfo);
+public static final native int /*long*/ GetStockObject (int fnObject);
+public static final native int GetSysColor (int nIndex);
+public static final native int /*long*/ GetSysColorBrush (int nIndex);
+public static final native short GetSystemDefaultUILanguage ();
+public static final native int /*long*/ GetSystemMenu (int /*long*/ hWnd, BOOL bRevert);
+public static final native int GetSystemMetrics (int nIndex);
+public static final native int GetSystemPaletteEntries (int /*long*/ hdc, int iStartIndex, int nEntries, byte[] lppe);
+public static final native int GetTextColor (int /*long*/ hDC);
+public static final native BOOL GetTextExtentPoint32W (int /*long*/ hdc, char [] lpString, int cbString, SIZE lpSize);
+public static final native BOOL GetTextExtentPoint32A (int /*long*/ hdc, byte [] lpString, int cbString, SIZE lpSize);
+public static final native BOOL GetTextMetricsW (int /*long*/ hdc, TEXTMETRICW lptm);
+public static final native BOOL GetTextMetricsA (int /*long*/ hdc, TEXTMETRICA lptm);
+public static final native int GetThemeInt (int /*long*/ hTheme, int iPartId, int iStateId, int iPropId, int[] piVal);
+public static final native int GetThemeMargins (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, int iPropId, RECT prc, MARGINS pMargins);
+public static final native int GetThemeBackgroundContentRect (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT pBoundingRect, RECT pContentRect);
+public static final native int GetThemeBackgroundExtent (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT pContentRect, RECT pExtentRect);
+public static final native int GetThemePartSize (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, RECT prc, int eSize, SIZE psz);
+public static final native int GetThemeMetric (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, int iPropId, int[] piVal);
+public static final native int GetThemeRect (int /*long*/ hTheme, int iPartId, int iStateId, int iPropId, RECT pRect);
+public static final native int GetThemeSysSize (int /*long*/ hTheme, int iSizeID);
+public static final native int GetTimeFormatW(int Locale, int dwFlags, SYSTEMTIME lpTime, char [] lpFormat, char [] lpTimeStr, int cchTime);
+public static final native int GetTimeFormatA(int Locale, int dwFlags, SYSTEMTIME lpTime, byte [] lpFormat, byte [] lpTimeStr, int cchTime);
+public static final native BOOL GetUpdateRect (int /*long*/ hWnd, RECT lpRect, BOOL bErase);
+public static final native int GetUpdateRgn (int /*long*/ hWnd, int /*long*/ hRgn, BOOL bErase);
+public static final native BOOL GetVersionExW (OSVERSIONINFOEXW lpVersionInfo);
+public static final native BOOL GetVersionExA (OSVERSIONINFOEXA lpVersionInfo);
+public static final native BOOL GetVersionExW (OSVERSIONINFOW lpVersionInfo);
+public static final native BOOL GetVersionExA (OSVERSIONINFOA lpVersionInfo);
+public static final native int /*long*/ GetWindow (int /*long*/ hWnd, int uCmd);
+public static final native int GetWindowLongW (int /*long*/ hWnd, int nIndex);
+public static final native int GetWindowLongA (int /*long*/ hWnd, int nIndex);
+public static final native int /*long*/ GetWindowLongPtrW (int /*long*/ hWnd, int nIndex);
+public static final native int /*long*/ GetWindowLongPtrA (int /*long*/ hWnd, int nIndex);
+public static final native int /*long*/ GetWindowDC (int /*long*/ hWnd);
+public static final native BOOL GetWindowOrgEx (int /*long*/ hdc, POINT lpPoint);
+public static final native BOOL GetWindowPlacement (int /*long*/ hWnd, WINDOWPLACEMENT lpwndpl);
+public static final native BOOL GetWindowRect (int /*long*/ hWnd, RECT lpRect);
+public static final native int GetWindowRgn (int /*long*/ hWnd, int /*long*/ hRgn);
+public static final native int GetWindowTextW (int /*long*/ hWnd, char [] lpString, int nMaxCount);
+public static final native int GetWindowTextA (int /*long*/ hWnd, byte [] lpString, int nMaxCount);
+public static final native int GetWindowTextLengthW (int /*long*/ hWnd);
+public static final native int GetWindowTextLengthA (int /*long*/ hWnd);
+public static final native int GetWindowTheme (int /*long*/ hWnd);
+public static final native int GetWindowThreadProcessId (int /*long*/ hWnd, int [] lpdwProcessId);
+public static final native BOOL GetWorldTransform (int /*long*/ hdc, float[] lpXform);
+public static final native int GlobalAddAtomW (char [] lpString);
+public static final native int GlobalAddAtomA (byte [] lpString);
+public static final native int /*long*/ GlobalAlloc (int uFlags, int dwBytes);
+public static final native int /*long*/ GlobalFree (int /*long*/ hMem);
+public static final native int /*long*/ GlobalLock (int /*long*/ hMem);
+public static final native int GlobalSize (int /*long*/ hMem);
+public static final native BOOL GlobalUnlock (int /*long*/ hMem);
+public static final native BOOL GradientFill (int /*long*/ hdc, int /*long*/ pVertex, int dwNumVertex, int /*long*/ pMesh, int dwNumMesh, int dwMode);
+public static final native int /*long*/ HeapAlloc (int /*long*/ hHeap, int dwFlags, int dwBytes);
+public static final native BOOL HeapFree (int /*long*/ hHeap, int dwFlags, int /*long*/ lpMem);
+public static final native BOOL HeapValidate (int /*long*/ hHeap, int dwFlags, int /*long*/ lpMem);
+public static final native BOOL HideCaret (int /*long*/ hWnd);
+public static final native int HitTestThemeBackground (int /*long*/ hTheme, int /*long*/ hdc, int iPartId, int iStateId, int dwOptions, RECT pRect, int /*long*/ hrgn, POINT ptTest, short[] pwHitTestCode);
+public static final native int IIDFromString (char[] lpsz, byte[] lpiid);
+public static final native int ImageList_Add (int /*long*/ himl, int /*long*/ hbmImage, int /*long*/ hbmMask);
+public static final native int ImageList_AddMasked (int /*long*/ himl, int /*long*/ hbmImage, int crMask);
+public static final native BOOL ImageList_BeginDrag (int /*long*/ himl, int iTrack, int dxHotspot, int dyHotspot);
+public static final native int /*long*/ ImageList_Create (int cx, int cy, int flags, int cInitial, int cGrow);
+public static final native BOOL ImageList_Destroy (int /*long*/ himl);
+public static final native BOOL ImageList_DragEnter (int /*long*/ hwndLock, int x, int y);
+public static final native BOOL ImageList_DragLeave (int /*long*/ hwndLock);
+public static final native BOOL ImageList_DragMove (int x, int y);
+public static final native BOOL ImageList_DragShowNolock (BOOL fShow);
+public static final native BOOL ImageList_Draw (int /*long*/ himl, int i, int /*long*/ hdcDst, int x, int y, int fStyle);
+public static final native void ImageList_EndDrag ();
+public static final native int /*long*/ ImageList_GetDragImage (POINT ppt, POINT pptHotspot);
+public static final native int /*long*/ ImageList_GetIcon (int /*long*/ himl, int i, int flags);
+public static final native BOOL ImageList_GetIconSize (int /*long*/ himl, int [] cx, int [] cy);   
+public static final native int ImageList_GetImageCount (int /*long*/ himl);
+public static final native BOOL ImageList_Remove (int /*long*/ himl, int i);
+public static final native BOOL ImageList_Replace (int /*long*/ himl, int i, int /*long*/ hbmImage, int /*long*/ hbmMask);
+public static final native int ImageList_ReplaceIcon (int /*long*/ himl, int i, int /*long*/ hicon);
+public static final native BOOL ImageList_SetIconSize (int /*long*/ himl, int cx, int cy);
+public static final native int /*long*/ ImmAssociateContext (int /*long*/ hWnd, int /*long*/ hIMC);
+public static final native int /*long*/ ImmCreateContext ();
+public static final native BOOL ImmDestroyContext (int /*long*/ hIMC);
+public static final native BOOL ImmDisableTextFrameService (int idThread);
+public static final native BOOL ImmGetCompositionFontW (int /*long*/ hIMC, LOGFONTW lplf);
+public static final native BOOL ImmGetCompositionFontA (int /*long*/ hIMC, LOGFONTA lplf);
+public static final native int ImmGetCompositionStringW (int /*long*/ hIMC, int dwIndex, char [] lpBuf, int dwBufLen);
+public static final native int ImmGetCompositionStringA (int /*long*/ hIMC, int dwIndex, byte [] lpBuf, int dwBufLen);
+public static final native int /*long*/ ImmGetContext (int /*long*/ hWnd);
+public static final native BOOL ImmGetConversionStatus (int /*long*/ hIMC, int [] lpfdwConversion, int [] lpfdwSentence);
+public static final native int /*long*/ ImmGetDefaultIMEWnd (int /*long*/ hWnd);
+public static final native BOOL ImmGetOpenStatus (int /*long*/ hIMC);
+public static final native BOOL ImmReleaseContext (int /*long*/ hWnd, int /*long*/ hIMC);
+public static final native BOOL ImmSetCompositionFontW (int /*long*/ hIMC, LOGFONTW lplf);
+public static final native BOOL ImmSetCompositionFontA (int /*long*/ hIMC, LOGFONTA lplf);
+public static final native BOOL ImmSetCompositionWindow (int /*long*/ hIMC, COMPOSITIONFORM lpCompForm);
+public static final native BOOL ImmSetConversionStatus (int /*long*/ hIMC, int fdwConversion, int dwSentence);
+public static final native BOOL ImmSetOpenStatus (int /*long*/ hIMC, BOOL fOpen);
+public static final native void InitCommonControls ();
+public static final native BOOL InitCommonControlsEx (INITCOMMONCONTROLSEX lpInitCtrls);
+public static final native BOOL InsertMenuW (int /*long*/ hMenu, int uPosition, int uFlags, int /*long*/ uIDNewItem, char [] lpNewItem);
+public static final native BOOL InsertMenuA (int /*long*/ hMenu, int uPosition, int uFlags, int /*long*/ uIDNewItem, byte [] lpNewItem);
+public static final native BOOL InsertMenuItemW (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native BOOL InsertMenuItemA (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native BOOL InternetSetOption (int /*long*/ hInternet, int dwOption, int /*long*/ lpBuffer, int dwBufferLength);
+public static final native int IntersectClipRect (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
+public static final native BOOL IntersectRect (RECT lprcDst, RECT lprcSrc1, RECT lprcSrc2);
+public static final native BOOL InvalidateRect (int /*long*/ hWnd, RECT lpRect, BOOL bErase);
+public static final native BOOL InvalidateRgn (int /*long*/ hWnd, int /*long*/ hRgn, BOOL bErase);
+public static final native BOOL IsAppThemed ();
+public static final native BOOL IsBadReadPtr (int /*long*/ lp, int ucb);
+public static final native BOOL IsBadWritePtr (int /*long*/ lp, int ucb);
+public static final native BOOL IsDBCSLeadByte (byte TestChar);
+public static final native BOOL IsHungAppWindow (int /*long*/ hWnd);
+public static final native BOOL IsIconic (int /*long*/ hWnd);
+public static final native BOOL IsPPC ();
+public static final native BOOL IsSP ();
+public static final native BOOL IsWindowEnabled (int /*long*/ hWnd);
+public static final native BOOL IsWindowVisible (int /*long*/ hWnd);
+public static final native BOOL IsZoomed (int /*long*/ hWnd);
+public static final native BOOL KillTimer (int /*long*/ hWnd, int /*long*/ uIDEvent);
+public static final native BOOL LineTo (int /*long*/ hdc, int x1, int x2);
+public static final native int /*long*/ LoadBitmapW (int /*long*/ hInstance, int /*long*/ lpBitmapName);
+public static final native int /*long*/ LoadBitmapA (int /*long*/ hInstance, int /*long*/ lpBitmapName);
+public static final native int /*long*/ LoadCursorW (int /*long*/ hInstance, int /*long*/ lpCursorName);
+public static final native int /*long*/ LoadCursorA (int /*long*/ hInstance, int /*long*/ lpCursorName);
+public static final native int /*long*/ LoadIconW (int /*long*/ hInstance, int /*long*/ lpIconName);
+public static final native int /*long*/ LoadIconA (int /*long*/ hInstance, int /*long*/ lpIconName);
+public static final native int /*long*/ LoadImageW (int /*long*/ hinst, char [] lpszName, int uType, int cxDesired, int cyDesired, int fuLoad);
+public static final native int /*long*/ LoadImageA (int /*long*/ hinst, byte [] lpszName, int uType, int cxDesired, int cyDesired, int fuLoad);
+public static final native int /*long*/ LoadImageW (int /*long*/ hinst, int /*long*/ lpszName, int uType, int cxDesired, int cyDesired, int fuLoad);
+public static final native int /*long*/ LoadImageA (int /*long*/ hinst, int /*long*/ lpszName, int uType, int cxDesired, int cyDesired, int fuLoad);
+public static final native int LoadStringW (int /*long*/ hinst, int uID, char [] lpBuffer, int nBufferMax);
+public static final native int LoadStringA (int /*long*/ hinst, int uID, byte [] lpBuffer, int nBufferMax);
+public static final native int /*long*/ LoadLibraryW (char [] lpLibFileName);
+public static final native int /*long*/ LoadLibraryA (byte [] lpLibFileName);
+public static final native int /*long*/ LocalFree (int /*long*/ hMem);
+public static final native BOOL LockWindowUpdate (int /*long*/ hWndLock);
+public static final native int MapVirtualKeyW (int uCode, int uMapType);
+public static final native int MapVirtualKeyA (int uCode, int uMapType);
+public static final native int MapWindowPoints (int /*long*/ hWndFrom, int /*long*/ hWndTo, POINT lpPoints, int cPoints);
+public static final native int MapWindowPoints (int /*long*/ hWndFrom, int /*long*/ hWndTo, RECT lpPoints, int cPoints);
+public static final native BOOL MCIWndRegisterClass ();
+public static final native BOOL MessageBeep (int uType);
+public static final native int MessageBoxW (int /*long*/ hWnd, char [] lpText, char [] lpCaption, int uType);
+public static final native int MessageBoxA (int /*long*/ hWnd, byte [] lpText, byte [] lpCaption, int uType);
+public static final native int /*long*/ MonitorFromWindow (int /*long*/ hwnd, int dwFlags);
+public static final native void MoveMemory (char[] Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (byte [] Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (byte [] Destination, ACCEL Source, int Length);
+public static final native void MoveMemory (byte [] Destination, BITMAPINFOHEADER Source, int Length);
+public static final native void MoveMemory (int [] Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (long [] Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (double[] Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (float[] Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (short[] Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, byte [] Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, char [] Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, int [] Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, GRADIENT_RECT Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, LOGFONTW Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, LOGFONTA Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, MEASUREITEMSTRUCT Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, MINMAXINFO Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, MSG Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, UDACCEL Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMTTDISPINFOW Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMTTDISPINFOA Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, OPENFILENAME Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, RECT Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, TRIVERTEX Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, WINDOWPOS Source, int Length);
+public static final native void MoveMemory (BITMAPINFOHEADER Destination, byte [] Source, int Length);
+public static final native void MoveMemory (DRAWITEMSTRUCT Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (EXTLOGPEN Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (HDITEM Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (HELPINFO Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (LOGFONTW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (LOGFONTA Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (MEASUREITEMSTRUCT Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (MINMAXINFO Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (OFNOTIFY Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (OPENFILENAME Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (POINT Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMHDR Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMRGINFO Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMCUSTOMDRAW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMLVCUSTOMDRAW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTBHOTITEM Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTVCUSTOMDRAW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTVITEMCHANGE Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMUPDOWN Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMLVCUSTOMDRAW Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMTVCUSTOMDRAW Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMLVDISPINFO Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, NMTVDISPINFO Source, int Length);
+public static final native void MoveMemory (NMLVDISPINFO Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTVDISPINFO Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMLVFINDITEM Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMLVODSTATECHANGE Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMHEADER Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMLINK Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMLISTVIEW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMREBARCHILDSIZE Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMREBARCHEVRON Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTOOLBAR Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTTDISPINFOW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (NMTTDISPINFOA Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (RECT Destination, int /*long*/[] Source, int Length);
+public static final native void MoveMemory (TEXTMETRICW Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (TEXTMETRICA Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (TVITEM Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (WINDOWPOS Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (MSG Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (UDACCEL Destination, int /*long*/ Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, DROPFILES Source, int Length);
+public static final native void MoveMemory (int /*long*/ DestinationPtr, double[] Source, int Length);
+public static final native void MoveMemory (int /*long*/ DestinationPtr, float[] Source, int Length);
+public static final native void MoveMemory (int /*long*/ DestinationPtr, long[] Source, int Length);
+public static final native void MoveMemory (int /*long*/ DestinationPtr, short[] Source, int Length);
+public static final native void MoveMemory (SCRIPT_ITEM Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (SCRIPT_LOGATTR Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (SCRIPT_PROPERTIES Destination, int /*long*/ SourcePtr, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, KEYBDINPUT Source, int Length);
+public static final native void MoveMemory (int /*long*/ Destination, MOUSEINPUT Source, int Length);
+public static final native BOOL MoveToEx (int /*long*/ hdc, int x1, int x2, int /*long*/ lPoint);
+public static final native int MsgWaitForMultipleObjectsEx (int nCount, int /*long*/ pHandles, int dwMilliseconds, int dwWakeMask, int dwFlags);
+public static final native int MultiByteToWideChar (int CodePage, int dwFlags, byte [] lpMultiByteStr, int cchMultiByte, char [] lpWideCharStr, int cchWideChar);
+public static final native int MultiByteToWideChar (int CodePage, int dwFlags, int /*long*/ lpMultiByteStr, int cchMultiByte, char [] lpWideCharStr, int cchWideChar);
+public static final native void NotifyWinEvent (int event, int /*long*/ hwnd, int idObject, int idChild);
+public static final native BOOL OffsetRect (RECT lprc, int dx, int dy);
+public static final native int OffsetRgn (int /*long*/ hrgn, int nXOffset, int nYOffset);
+public static final native int OleInitialize (int /*long*/ pvReserved);
+public static final native void OleUninitialize ();
+public static final native BOOL OpenClipboard (int /*long*/ hWndNewOwner);
+public static final native int /*long*/ OpenThemeData (int /*long*/ hwnd, char[] pszClassList);
+public static final native BOOL PatBlt (int /*long*/ hdc, int x1, int x2, int w, int h, int rop);
+public static final native BOOL PeekMessageW (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax, int wRemoveMsg);
+public static final native BOOL PeekMessageA (MSG lpMsg, int /*long*/ hWnd, int wMsgFilterMin, int wMsgFilterMax, int wRemoveMsg);
+public static final native BOOL Pie (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc);
+public static final native BOOL Polygon (int /*long*/ hdc, int [] points, int nPoints);
+public static final native BOOL Polyline (int /*long*/ hdc, int[] points, int nPoints);
+public static final native BOOL PostMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native BOOL PostMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native BOOL PostThreadMessageW (int idThread, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native BOOL PostThreadMessageA (int idThread, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native short PRIMARYLANGID (short lgid);
+public static final native BOOL PrintDlgW (PRINTDLG lppd);
+public static final native BOOL PrintDlgA (PRINTDLG lppd);
+public static final native BOOL PrintWindow (int /*long*/ hwnd, int /*long*/ hdcBlt, int nFlags);
+public static final native BOOL PtInRect (RECT rect, POINT pt);
+public static final native BOOL PtInRegion (int /*long*/ hrgn, int X, int Y);
+public static final native int RealizePalette (int /*long*/ hDC);
+public static final native BOOL Rectangle (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
+public static final native BOOL RectInRegion (int /*long*/ hrgn, RECT lprc);
+public static final native BOOL RedrawWindow (int /*long*/ hWnd, RECT lprcUpdate, int /*long*/ hrgnUpdate, int flags);
+public static final native int RegCloseKey (int /*long*/ hKey);
+public static final native int RegEnumKeyExW (int /*long*/ hKey, int dwIndex, char [] lpName, int [] lpcName, int [] lpReserved, char [] lpClass, int [] lpcClass, FILETIME lpftLastWriteTime);
+public static final native int RegEnumKeyExA (int /*long*/ hKey, int dwIndex, byte [] lpName, int [] lpcName, int [] lpReserved, byte [] lpClass, int [] lpcClass, FILETIME lpftLastWriteTime);
+public static final native int RegisterClassW (WNDCLASS lpWndClass);
+public static final native int RegisterClassA (WNDCLASS lpWndClass);
+public static final native int RegisterWindowMessageW (char [] lpString);
+public static final native int RegisterWindowMessageA (byte [] lpString);
+public static final native int RegisterClipboardFormatA (byte[] lpszFormat); 
+public static final native int RegisterClipboardFormatW (char[] lpszFormat); 
+public static final native int RegOpenKeyExW (int /*long*/ hKey, char[] lpSubKey, int ulOptions, int samDesired, int /*long*/[] phkResult);
+public static final native int RegOpenKeyExA (int /*long*/ hKey, byte[] lpSubKey, int ulOptions, int samDesired, int /*long*/[] phkResult);
+public static final native int RegQueryInfoKeyW (int /*long*/ hKey, int /*long*/ lpClass, int[] lpcbClass, int /*long*/ lpReserved, int[] lpSubKeys, int[] lpcbMaxSubKeyLen, int[] lpcbMaxClassLen, int[] lpcValues, int[] lpcbMaxValueNameLen, int[] lpcbMaxValueLen, int[] lpcbSecurityDescriptor, int /*long*/ lpftLastWriteTime);
+public static final native int RegQueryInfoKeyA (int /*long*/ hKey, int /*long*/ lpClass, int[] lpcbClass, int /*long*/ lpReserved, int[] lpSubKeys, int[] lpcbMaxSubKeyLen, int[] lpcbMaxClassLen, int[] lpcValues, int[] lpcbMaxValueNameLen, int[] lpcbMaxValueLen, int[] lpcbSecurityDescriptor, int /*long*/ lpftLastWriteTime);
+public static final native int RegQueryValueExW (int /*long*/ hKey, char[] lpValueName, int /*long*/ lpReserved, int[] lpType, char [] lpData, int[] lpcbData);
+public static final native int RegQueryValueExW (int /*long*/ hKey, char[] lpValueName, int /*long*/ lpReserved, int[] lpType, int [] lpData, int[] lpcbData);
+public static final native int RegQueryValueExA (int /*long*/ hKey, byte[] lpValueName, int /*long*/ lpReserved, int[] lpType, byte [] lpData, int[] lpcbData);
+public static final native int RegQueryValueExA (int /*long*/ hKey, byte[] lpValueName, int /*long*/ lpReserved, int[] lpType, int [] lpData, int[] lpcbData);
+public static final native BOOL ReleaseCapture ();
+public static final native int ReleaseDC (int /*long*/ hWnd, int /*long*/ hDC);
+public static final native BOOL RemoveMenu (int /*long*/ hMenu, int uPosition, int uFlags);
+public static final native int /*long*/ RemovePropA (int /*long*/ hWnd, int /*long*/ lpString);
+public static final native int /*long*/ RemovePropW (int /*long*/ hWnd, int /*long*/ lpString);
+public static final native BOOL RestoreDC (int /*long*/ hdc, int nSavedDC);
+public static final native BOOL RoundRect (int /*long*/ hdc, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, int nWidth, int nHeight);
+public static final native int SaveDC (int /*long*/ hdc);
+public static final native BOOL ScreenToClient (int /*long*/ hWnd, POINT lpPoint);
+public static final native int ScriptApplyDigitSubstitution (SCRIPT_DIGITSUBSTITUTE psds, SCRIPT_CONTROL psc, SCRIPT_STATE pss);
+public static final native int ScriptBreak (char[] pwcChars, int cChars, SCRIPT_ANALYSIS psa, int /*long*/ psla);
+public static final native int ScriptGetProperties (int /*long*/[] ppSp, int[] piNumScripts);
+public static final native int ScriptCacheGetHeight (int /*long*/ hdc, int /*long*/ psc, int[] tmHeight);
+public static final native int ScriptCPtoX (int iCP, BOOL fTrailing, int cChars, int cGlyphs, int /*long*/ pwLogClust, int /*long*/ psva, int /*long*/ piAdvance, SCRIPT_ANALYSIS psa, int[] piX);
+public static final native int ScriptFreeCache (int /*long*/ psc);
+public static final native int ScriptGetFontProperties (int /*long*/ hdc, int /*long*/ psc, SCRIPT_FONTPROPERTIES sfp);
+public static final native int ScriptGetLogicalWidths (SCRIPT_ANALYSIS psa, int cChars, int cGlyphs, int /*long*/ piGlyphWidth, int /*long*/ pwLogClust, int /*long*/ psva, int[] piDx);
+public static final native int ScriptItemize (char[] pwcInChars, int cInChars, int cMaxItems, SCRIPT_CONTROL psControl, SCRIPT_STATE psState, int /*long*/ pItems, int[] pcItems);
+public static final native int ScriptJustify (int /*long*/ psva, int /*long*/ piAdvance, int cGlyphs, int iDx, int iMinKashida, int /*long*/ piJustify);
+public static final native int ScriptLayout (int cRuns, byte[] pbLevel, int[] piVisualToLogical, int[] piLogicalToVisual);
+public static final native int ScriptPlace (int /*long*/ hdc, int /*long*/ psc, int /*long*/ pwGlyphs, int cGlyphs, int /*long*/ psva, SCRIPT_ANALYSIS psa, int /*long*/ piAdvance, int /*long*/ pGoffset, int[] pABC);
+public static final native int ScriptRecordDigitSubstitution (int Locale, SCRIPT_DIGITSUBSTITUTE psds);
+public static final native int ScriptShape (int /*long*/ hdc, int /*long*/ psc, char[] pwcChars, int cChars, int cMaxGlyphs, SCRIPT_ANALYSIS psa, int /*long*/ pwOutGlyphs, int /*long*/ pwLogClust, int /*long*/ psva, int[] pcGlyphs);
+public static final native int ScriptTextOut (int /*long*/ hdc, int /*long*/ psc, int x, int y, int fuOptions, RECT lprc, SCRIPT_ANALYSIS psa, int /*long*/ pwcReserved, int iReserved, int /*long*/ pwGlyphs, int cGlyphs, int /*long*/ piAdvance, int /*long*/ piJustify, int /*long*/ pGoffset);
+public static final native int ScriptXtoCP (int iX, int cChars, int cGlyphs, int /*long*/ pwLogClust, int /*long*/ psva, int /*long*/ piAdvance, SCRIPT_ANALYSIS psa, int[] piCP, int[] piTrailing);
+public static final native int ScrollWindowEx (int /*long*/ hWnd, int dx, int dy, RECT prcScroll, RECT prcClip, int /*long*/ hrgnUpdate, RECT prcUpdate, int flags);
+public static final native int SelectClipRgn (int /*long*/ hdc, int /*long*/ hrgn);
+public static final native int /*long*/ SelectObject (int /*long*/ hDC, int /*long*/ HGDIObj);
+public static final native int /*long*/ SelectPalette (int /*long*/ hDC, int /*long*/ hpal, BOOL bForceBackground);
+public static final native int SendInput (int nInputs, int /*long*/ pInputs, int cbSize);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int  [] wParam, int [] lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ [] wParam, int /*long*/ lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, char [] lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int [] lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, short [] lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVCOLUMN lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LITEM lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVITEM lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, MARGINS lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, POINT lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, REBARBANDINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, RECT lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SYSTEMTIME lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTON lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTONINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TCITEM lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TOOLINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVINSERTSTRUCT lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVITEM lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVSORTCB lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, UDACCEL lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDITEM lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDLAYOUT lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, BUTTON_IMAGELIST lParam);
+public static final native int /*long*/ SendMessageW (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SIZE lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int [] wParam, int [] lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ [] wParam, int /*long*/ lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, byte [] lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int [] lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, short [] lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, char [] lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, int /*long*/ lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVCOLUMN lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LITEM lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, LVITEM lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, MARGINS lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, POINT lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, REBARBANDINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, RECT lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SYSTEMTIME lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTON lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TBBUTTONINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TCITEM lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TOOLINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVINSERTSTRUCT lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVITEM lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, TVSORTCB lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, UDACCEL lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDHITTESTINFO lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDITEM lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, HDLAYOUT lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, BUTTON_IMAGELIST lParam);
+public static final native int /*long*/ SendMessageA (int /*long*/ hWnd, int Msg, int /*long*/ wParam, SIZE lParam);
+public static final native int /*long*/ SetActiveWindow (int /*long*/ hWnd);
+public static final native int SetBkColor (int /*long*/ hdc, int colorRef);
+public static final native int SetBkMode (int /*long*/ hdc, int mode);
+public static final native BOOL SetBrushOrgEx (int /*long*/ hdc, int nXOrg, int nYOrg, POINT lppt);
+public static final native int /*long*/ SetCapture (int /*long*/ hWnd);
+public static final native BOOL SetCaretPos (int X, int Y);
+public static final native int /*long*/ SetClipboardData (int uFormat, int /*long*/ hMem);
+public static final native int /*long*/ SetCursor (int /*long*/ hCursor);
+public static final native BOOL SetCursorPos (int X, int Y);
+public static final native int SetDIBColorTable (int /*long*/ hdc, int uStartIndex, int cEntries, byte[] pColors);
+public static final native int SetErrorMode (int uMode);
+public static final native int /*long*/ SetFocus (int /*long*/ hWnd);
+public static final native BOOL SetForegroundWindow (int /*long*/ hWnd);
+public static final native int SetGraphicsMode (int /*long*/ hdc, int iMode);
+public static final native BOOL SetLayeredWindowAttributes(int /*long*/ hwnd, int crKey, byte bAlpha, int dwFlags);
+public static final native int SetLayout (int /*long*/ hdc, int dwLayout);
+public static final native BOOL SetMenu (int /*long*/ hWnd, int /*long*/ hMenu);
+public static final native BOOL SetMenuDefaultItem (int /*long*/ hMenu, int uItem, int fByPos);
+public static final native BOOL SetMenuInfo (int /*long*/ hmenu, MENUINFO lpcmi);
+public static final native BOOL SetMenuItemInfoW (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native BOOL SetMenuItemInfoA (int /*long*/ hMenu, int uItem, BOOL fByPosition, MENUITEMINFO lpmii);
+public static final native int SetMetaRgn (int /*long*/ hdc);
+public static final native int SetPaletteEntries (int /*long*/ hPal, int iStart, int cEntries, byte[] lppe);
+public static final native int /*long*/ SetParent (int /*long*/ hWndChild, int /*long*/ hWndNewParent);
+public static final native int SetPixel (int /*long*/ hdc, int X, int Y, int crColor);
+public static final native int SetPolyFillMode (int /*long*/ hdc, int iPolyFillMode);
+public static final native BOOL SetProcessDPIAware ();
+public static final native BOOL SetRect (RECT lprc, int xLeft, int yTop, int xRight, int yBottom);
+public static final native BOOL SetRectRgn (int /*long*/ hrgn, int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
+public static final native int SetROP2 (int /*long*/ hdc, int fnDrawMode);
+public static final native BOOL SetScrollInfo (int /*long*/ hwnd, int flags, SCROLLINFO info, BOOL fRedraw);
+public static final native int SetStretchBltMode (int /*long*/ hdc, int iStretchMode);
+public static final native BOOL SetPropW (int /*long*/ hWnd, int /*long*/ lpString, int /*long*/ hData);
+public static final native BOOL SetPropA (int /*long*/ hWnd, int /*long*/ lpString, int /*long*/ hData);
+public static final native int SetTextAlign (int /*long*/ hdc, int fMode);
+public static final native int SetTextColor (int /*long*/ hdc, int colorRef);
+public static final native int /*long*/ SetTimer (int /*long*/ hWnd, int /*long*/ nIDEvent, int Elapse, int /*long*/ lpTimerFunc);
+public static final native int SetWindowLongW (int /*long*/ hWnd, int nIndex, int dwNewLong);
+public static final native int SetWindowLongA (int /*long*/ hWnd, int nIndex, int dwNewLong);
+public static final native int /*long*/ SetWindowLongPtrW (int /*long*/ hWnd, int nIndex, int /*long*/ dwNewLong);
+public static final native int /*long*/ SetWindowLongPtrA (int /*long*/ hWnd, int nIndex, int /*long*/ dwNewLong);
+public static final native BOOL SetWindowOrgEx (int /*long*/ hdc, int X, int Y, POINT lpPoint);
+public static final native BOOL SetWindowPlacement (int /*long*/ hWnd, WINDOWPLACEMENT lpwndpl);
+public static final native BOOL SetWindowPos(int /*long*/ hWnd, int /*long*/ hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);
+public static final native int SetWindowRgn (int /*long*/ hWnd, int /*long*/ hRgn, BOOL bRedraw);
+public static final native BOOL SetWindowTextW (int /*long*/ hWnd, char [] lpString);
+public static final native BOOL SetWindowTextA (int /*long*/ hWnd, byte [] lpString);
+public static final native int SetWindowTheme (int /*long*/ hwnd, char [] pszSubAppName, char [] pszSubIdList);
+public static final native int /*long*/ SetWindowsHookExW (int idHook, int /*long*/ lpfn,  int /*long*/ hMod,  int dwThreadId);
+public static final native int /*long*/ SetWindowsHookExA (int idHook, int /*long*/ lpfn,  int /*long*/ hMod,  int dwThreadId);
+public static final native BOOL SetWorldTransform(int /*long*/ hdc, float[] lpXform);
+public static final native int /*long*/ SHBrowseForFolderW (BROWSEINFO lpbi);
+public static final native int /*long*/ SHBrowseForFolderA (BROWSEINFO lpbi);
+public static final native BOOL SHCreateMenuBar (SHMENUBARINFO pmb);
+public static final native int /*long*/ SHGetFileInfoW (char [] pszPath, int dwFileAttributes, SHFILEINFOW psfi, int cbFileInfo, int uFlags);
+public static final native int /*long*/ SHGetFileInfoA (byte [] pszPath, int dwFileAttributes, SHFILEINFOA psfi, int cbFileInfo, int uFlags);
+public static final native BOOL SHHandleWMSettingChange (int /*long*/ hwnd, int /*long*/ wParam, int /*long*/ lParam, SHACTIVATEINFO psai);
+public static final native int SHRecognizeGesture (SHRGINFO shrg);
+public static final native void SHSendBackToFocusWindow (int uMsg, int /*long*/ wp, int /*long*/ lp);
+public static final native BOOL SHSipPreference (int /*long*/ hwnd, int st);
+public static final native BOOL ShellExecuteExW (SHELLEXECUTEINFO lpExecInfo);
+public static final native BOOL ShellExecuteExA (SHELLEXECUTEINFO lpExecInfo);
+public static final native BOOL Shell_NotifyIconA (int dwMessage, NOTIFYICONDATAA lpData);
+public static final native BOOL Shell_NotifyIconW (int dwMessage, NOTIFYICONDATAW lpData);
+public static final native int SHGetMalloc (int /*long*/ [] ppMalloc);
+public static final native BOOL SHGetPathFromIDListW (int /*long*/ pidl, char [] pszPath);
+public static final native BOOL SHGetPathFromIDListA (int /*long*/ pidl, byte [] pszPath);
+public static final native BOOL SHSetAppKeyWndAssoc (byte bVk, int /*long*/ hwnd);
+public static final native BOOL ShowCaret (int /*long*/ hWnd);
+public static final native BOOL ShowOwnedPopups (int /*long*/ hWnd, BOOL fShow);
+public static final native BOOL ShowScrollBar (int /*long*/ hWnd, int wBar, BOOL bShow);
+public static final native BOOL ShowWindow (int /*long*/ hWnd, int nCmdShow);
+public static final native BOOL SipGetInfo (SIPINFO pSipInfo);
+public static final native int StartDocW (int /*long*/ hdc, DOCINFO lpdi);
+public static final native int StartDocA (int /*long*/ hdc, DOCINFO lpdi);
+public static final native int StartPage (int /*long*/ hdc);
+public static final native BOOL StretchBlt (int /*long*/ hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, int /*long*/ hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, int dwRop);
+public static final native BOOL StrokePath (int /*long*/ hdc);
+public static final native BOOL SystemParametersInfoW (int uiAction, int uiParam, HIGHCONTRAST pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoA (int uiAction, int uiParam, HIGHCONTRAST pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoW (int uiAction, int uiParam, RECT pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoA (int uiAction, int uiParam, RECT pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoW (int uiAction, int uiParam, NONCLIENTMETRICSW pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoA (int uiAction, int uiParam, NONCLIENTMETRICSA pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoW (int uiAction, int uiParam, int [] pvParam, int fWinIni);
+public static final native BOOL SystemParametersInfoA (int uiAction, int uiParam, int [] pvParam, int fWinIni);
+public static final native int ToAscii (int uVirtKey, int uScanCode, byte [] lpKeyState, short [] lpChar, int uFlags);
+public static final native int ToUnicode (int wVirtKey, int wScanCode, byte [] lpKeyState, char [] pwszBuff, int cchBuff, int wFlags);
+public static final native BOOL TrackMouseEvent (TRACKMOUSEEVENT lpEventTrack);
+public static final native BOOL TrackPopupMenu (int /*long*/ hMenu, int uFlags, int x, int y, int nReserved, int /*long*/ hWnd, RECT prcRect);
+public static final native int TranslateAcceleratorW (int /*long*/ hWnd, int /*long*/ hAccTable, MSG lpMsg);
+public static final native int TranslateAcceleratorA (int /*long*/ hWnd, int /*long*/ hAccTable, MSG lpMsg);
+public static final native BOOL TranslateCharsetInfo (int /*long*/ lpSrc, int [] lpCs, int dwFlags);
+public static final native BOOL TranslateMDISysAccel (int /*long*/ hWndClient, MSG lpMsg);
+public static final native BOOL TranslateMessage (MSG lpmsg);
+public static final native BOOL TransparentBlt (int /*long*/ hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, int /*long*/ hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, int crTransparent);
+public static final native BOOL TransparentImage (int /*long*/ hdcDest, int DstX, int DstY, int DstCx, int DstCy,int /*long*/ hSrc, int SrcX, int SrcY, int SrcCx, int SrcCy, int TransparentColor);
+public static final native BOOL UnhookWindowsHookEx (int /*long*/ hhk);
+public static final native BOOL UnregisterClassW (char [] lpClassName, int /*long*/ hInstance);
+public static final native BOOL UnregisterClassA (byte [] lpClassName, int /*long*/ hInstance);
+public static final native BOOL UpdateWindow (int /*long*/ hWnd);
+public static final native BOOL ValidateRect (int /*long*/ hWnd, RECT lpRect);
+public static final native short VkKeyScanW (short ch);
+public static final native short VkKeyScanA (short ch);
+
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl);
+
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, int arg0);
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, long arg0);
+
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int[] arg3);
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, long[] arg3);
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, int arg0, long arg1, int arg2, long[] arg3);
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long[] arg3);
+
+public static final native int VtblCall (int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, int arg2, int[] arg3, int[] arg4);
+
+public static final native BOOL WaitMessage ();
+public static final native int WideCharToMultiByte (int CodePage, int dwFlags, char [] lpWideCharStr, int cchWideChar, byte [] lpMultiByteStr, int cchMultiByte, byte [] lpDefaultChar, BOOL [] lpUsedDefaultChar);
+public static final native int WideCharToMultiByte (int CodePage, int dwFlags, char [] lpWideCharStr, int cchWideChar, int /*long*/ lpMultiByteStr, int cchMultiByte, byte [] lpDefaultChar, BOOL [] lpUsedDefaultChar);
+public static final native int /*long*/ WindowFromDC (int /*long*/ hDC);
+public static final native int /*long*/ WindowFromPoint (POINT lpPoint);
+public static final native int wcslen (int /*long*/ string);
+++/
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/win32/WINAPI.d	Fri Jan 25 13:00:42 2008 +0100
@@ -0,0 +1,1941 @@
+/**
+ * This module declared window APIs required by DWT but not in std.c.windows.windows,
+ * The one in the std.c.windows.windows module are aliased
+ */
+
+
+module dwt.internal.win32.WINAPI;
+
+import dwt.internal.win32.WINTYPES;
+import tango.sys.win32.Types;
+import STDWIN = tango.sys.win32.UserGdi;
+
+
+// Windows API
+extern (Windows){
+int AbortDoc(HDC hdc);
+HKL ActivateKeyboardLayout(
+    HKL hkl,     // handle to keyboard layout
+    UINT Flags   // keyboard layout flags
+);
+BOOL AdjustWindowRectEx(
+    LPRECT lpRect,    // pointer to client-rectangle structure
+    DWORD dwStyle,    // window styles
+    BOOL bMenu,       // menu-present flag
+    DWORD dwExStyle   // extended style
+);
+BOOL Arc(
+    HDC hdc,         // handle to device context
+    int nLeftRect,   // x-coord of bounding rectangle's upper-left corner
+    int nTopRect,    // y-coord of bounding rectangle's upper-left corner
+    int nRightRect,  // x-coord of bounding rectangle's lower-right corner
+    int nBottomRect, // y-coord of bounding rectangle's lower-right corner
+    int nXStartArc,  // first radial ending point
+    int nYStartArc,  // first radial ending point
+    int nXEndArc,    // second radial ending point
+    int nYEndArc     // second radial ending point
+);
+HDWP BeginDeferWindowPos(
+    int nNumWindows
+);
+alias STDWIN.BeginPaint BeginPaint;
+BOOL BitBlt(
+    HDC hdcDest, // handle to destination device context
+    int nXDest,  // x-coordinate of destination rectangle's upper-left corner
+    int nYDest,  // y-coordinate of destination rectangle's upper-left corner
+    int nWidth,  // width of destination rectangle
+    int nHeight, // height of destination rectangle
+    HDC hdcSrc,  // handle to source device context
+    int nXSrc,   // x-coordinate of source rectangle's upper-left corner
+    int nYSrc,   // y-coordinate of source rectangle's upper-left corner
+    DWORD dwRop  // raster operation code
+);
+    BOOL BringWindowToTop(
+    HWND hWnd   // handle to window
+);
+LRESULT CallNextHookEx(
+    HHOOK hhk,      // handle to current hook
+    int nCode,      // hook code passed to hook procedure
+    WPARAM_I wParam,  // value passed to hook procedure
+    LPARAM lParam   // value passed to hook procedure
+);
+LRESULT CallWindowProcA(
+    WNDPROC_I lpPrevWndFunc,  // pointer to previous procedure
+    HWND hWnd,              // handle to window
+    UINT Msg,               // message
+    WPARAM_I wParam,          // first message parameter
+    LPARAM lParam           // second message parameter
+);
+LRESULT CallWindowProcW(
+    WNDPROC_I lpPrevWndFunc,  // pointer to previous procedure
+    HWND hWnd,              // handle to window
+    UINT Msg,               // message
+    WPARAM_I wParam,          // first message parameter
+    LPARAM lParam           // second message parameter
+);
+LPSTR CharLowerA(
+    LPSTR lpsz   // single character or pointer to string
+);
+LPWSTR CharLowerW(
+    LPWSTR lpsz   // single character or pointer to string
+);
+LPSTR CharUpperA(
+    LPSTR lpsz   // single character or pointer to string
+);
+LPWSTR CharUpperW(
+    LPWSTR lpsz   // single character or pointer to string
+);
+DWORD CheckMenuItem(
+    HMENU hmenu,        // handle to menu
+    UINT uIDCheckItem,  // menu item to check or uncheck
+    UINT uCheck         // menu item flags
+);
+BOOL ChooseColorA(
+    LPCHOOSECOLORA lpcc   // pointer to structure with initialization data
+);
+BOOL ChooseColorW(
+    LPCHOOSECOLORW lpcc   // pointer to structure with initialization data
+);
+BOOL ChooseFontA(
+    LPCHOOSEFONTA lpcf   // pointer to structure with initialization data
+);
+BOOL ChooseFontW(
+    LPCHOOSEFONTW lpcf   // pointer to structure with initialization data
+);
+alias STDWIN.ClientToScreen ClientToScreen;
+BOOL CloseClipboard();
+int CombineRgn(
+    HRGN hrgnDest,      // handle to destination region
+    HRGN hrgnSrc1,      // handle to source region
+    HRGN hrgnSrc2,      // handle to source region
+    int fnCombineMode   // region combining mode
+);
+alias STDWIN.CloseHandle CloseHandle;
+DWORD CommDlgExtendedError();
+
+version(WinCE){
+BOOL CommandBar_AddAdornments(HWND hwndCB, DWORD dwFlags, DWORD dwReserved);
+HWND CommandBar_Create(HINSTANCE hInst, HWND hwndParent, int idCmdBar);
+void CommandBar_Destroy(HWND hwndCB);
+BOOL CommandBar_DrawMenuBar(HWND hwndCB, int iButton);
+int CommandBar_Height(HWND hwndCB);
+int CommandBar_InsertMenubarEx(HWND hwndCB, HINSTANCE hInst, int pszMenu, int iButton);
+int CommandBar_Show(HWND hwndCB, int fShow);
+}
+
+HANDLE CopyImage(
+    HANDLE hImage,  // handle to the image to copy
+    UINT uType,     // type of image to copy
+    int cxDesired,  // desired width of new image
+    int cyDesired,  // desired height of new image
+    UINT fuFlags    // copy flags
+);
+HACCEL CreateAcceleratorTableA(
+    LPACCEL lpaccl,  // pointer to structure array with accelerator data
+    int cEntries     // number of structures in the array
+);
+HACCEL CreateAcceleratorTableW(
+    LPACCEL lpaccl,  // pointer to structure array with accelerator data
+    int cEntries     // number of structures in the array
+);
+HBITMAP CreateBitmap(
+    int nWidth,         // bitmap width, in pixels
+    int nHeight,        // bitmap height, in pixels
+    UINT cPlanes,       // number of color planes used by device
+    UINT cBitsPerPel,   // number of bits required to identify a color
+    VOID *lpvBits // pointer to array containing color data
+);
+alias STDWIN.CreateCaret CreateCaret;
+HBITMAP CreateCompatibleBitmap(
+    HDC hdc,        // handle to device context
+    int nWidth,     // width of bitmap, in pixels
+    int nHeight     // height of bitmap, in pixels
+);
+alias STDWIN.CreateCompatibleDC CreateCompatibleDC;
+HCURSOR CreateCursor(
+    HINSTANCE hInst,         // handle to application instance
+    int xHotSpot,            // horizontal position of hot spot
+    int yHotSpot,            // vertical position of hot spot
+    int nWidth,              // cursor width
+    int nHeight,             // cursor height
+    VOID *pvANDPlane,  // pointer to AND bitmask array
+    VOID *pvXORPlane   // pointer to XOR bitmask array
+);
+HDC CreateDCA(
+    LPCSTR lpszDriver,  // pointer to string specifying driver name
+    LPCSTR lpszDevice,  // pointer to string specifying device name
+    LPCSTR lpszOutput,  // do not use; set to NULL
+    DEVMODE *lpInitData
+                   // pointer to optional printer data
+);
+HDC CreateDCW(
+    LPCWSTR lpszDriver,  // pointer to string specifying driver name
+    LPCWSTR lpszDevice,  // pointer to string specifying device name
+    LPCWSTR lpszOutput,  // do not use; set to NULL
+    DEVMODE *lpInitData
+                   // pointer to optional printer data
+);
+    HBITMAP CreateDIBSection(
+    HDC hdc,          // handle to device context
+    BITMAPINFO *pbmi,
+                // pointer to structure containing bitmap size,
+                // format, and color data
+    UINT iUsage,      // color data type indicator: RGB values or
+                // palette indexes
+    VOID *ppvBits,    // pointer to variable to receive a pointer to
+                // the bitmap's bit values
+    HANDLE hSection,  // optional handle to a file mapping object
+    DWORD dwOffset    // offset to the bitmap bit values within the
+                // file mapping object
+);
+HANDLE CreateEventA(
+  LPSECURITY_ATTRIBUTES lpEventAttributes,
+                      // pointer to security attributes
+  BOOL bManualReset,  // flag for manual-reset event
+  BOOL bInitialState, // flag for initial state
+  LPCSTR lpName      // pointer to event-object name
+);
+HANDLE CreateEventW(
+  LPSECURITY_ATTRIBUTES lpEventAttributes,
+                      // pointer to security attributes
+  BOOL bManualReset,  // flag for manual-reset event
+  BOOL bInitialState, // flag for initial state
+  LPCWSTR lpName      // pointer to event-object name
+);
+
+alias STDWIN.CreateFileA CreateFileA;
+alias STDWIN.CreateFileW CreateFileW;
+HFONT CreateFontIndirectA(LOGFONTA* lplf );
+HFONT CreateFontIndirectW(LOGFONTW* lplf );
+HICON CreateIconIndirect(
+    PICONINFO piconinfo   // pointer to icon information structure
+);
+HMENU CreateMenu();
+HPALETTE CreatePalette(
+    LOGPALETTE *lplgpl   // pointer to logical color palette
+);
+HBRUSH CreatePatternBrush(
+    HBITMAP hbmp   // handle to bitmap
+);
+alias STDWIN.CreatePen CreatePen;
+HRGN CreatePolygonRgn(
+    POINT *lppt,  // pointer to array of points
+    int cPoints,        // number of points in array
+    int fnPolyFillMode  // polygon-filling mode
+);
+HMENU CreatePopupMenu();
+alias STDWIN.CreateRectRgn CreateRectRgn;
+HBRUSH CreateSolidBrush(
+    COLORREF crColor   // brush color value
+);
+
+alias STDWIN.CreateWindowExA CreateWindowExA;
+HWND CreateWindowExW(
+    DWORD dwExStyle,      // extended window style
+    LPCWSTR lpClassName,  // pointer to registered class name
+    LPCWSTR lpWindowName, // pointer to window name
+    DWORD dwStyle,        // window style
+    int x,                // horizontal position of window
+    int y,                // vertical position of window
+    int nWidth,           // window width
+    int nHeight,          // window height
+    HWND hWndParent,      // handle to parent or owner window
+    HMENU hMenu,          // handle to menu, or child-window identifier
+    HINSTANCE hInstance,  // handle to application instance
+    LPVOID lpParam        // pointer to window-creation data
+);
+
+LRESULT DefFrameProcA(
+    HWND hWnd,           // handle to MDI frame window
+    HWND hWndMDIClient,  // handle to MDI client window
+    UINT uMsg,           // message
+    WPARAM_I wParam,       // first message parameter
+    LPARAM lParam        // second message parameter
+);
+LRESULT DefFrameProcW(
+    HWND hWnd,           // handle to MDI frame window
+    HWND hWndMDIClient,  // handle to MDI client window
+    UINT uMsg,           // message
+    WPARAM_I wParam,       // first message parameter
+    LPARAM lParam        // second message parameter
+);
+LRESULT DefMDIChildProcA(
+    HWND hWnd,      // handle to MDI child window
+    UINT uMsg,      // message
+    WPARAM_I wParam,  // first message parameter
+    LPARAM lParam   // second message parameter
+);
+LRESULT DefMDIChildProcW(
+    HWND hWnd,      // handle to MDI child window
+    UINT uMsg,      // message
+    WPARAM_I wParam,  // first message parameter
+    LPARAM lParam   // second message parameter
+);
+alias STDWIN.DefWindowProcA DefWindowProcA;
+LRESULT DefWindowProcW(
+    HWND hWnd,      // handle to window
+    UINT Msg,       // message identifier
+    WPARAM_I wParam,  // first message parameter
+    LPARAM lParam   // second message parameter
+);
+
+HDWP DeferWindowPos(
+    HDWP hWinPosInfo,      // handle to internal structure
+    HWND hWnd,             // handle to window to position
+    HWND hWndInsertAfter,  // placement-order handle
+    int x,                 // horizontal position
+    int y,                 // vertical position
+    int cx,                // width
+    int cy,                // height
+    UINT uFlags            // window-positioning flags
+);
+
+alias STDWIN.DeleteDC DeleteDC;
+alias STDWIN.DeleteFileA DeleteFileA;
+alias STDWIN.DeleteFileW DeleteFileW;
+BOOL DeleteMenu(
+    HMENU hMenu,     // handle to menu
+    UINT uPosition,  // menu item identifier or position
+    UINT uFlags      // menu item flag
+);
+alias STDWIN.DeleteObject DeleteObject;
+BOOL DestroyAcceleratorTable(
+    HACCEL hAccel   // handle to accelerator table
+);
+int DestroyCaret();
+BOOL DestroyCursor(
+    HCURSOR hCursor   // handle to cursor to destroy
+);
+BOOL DestroyIcon(
+    HICON hIcon   // handle to icon to destroy
+);
+BOOL DestroyMenu(
+    HMENU hMenu  // handle to menu to destroy
+);
+BOOL DestroyWindow(
+    HWND hWnd   // handle to window to destroy
+);
+LONG DispatchMessageA(
+    MSG *lpmsg   // pointer to structure with message
+);
+LONG DispatchMessageW(
+    MSG *lpmsg   // pointer to structure with message
+);
+BOOL DragDetect(
+    HWND hwnd,
+    POINT pt
+);
+void DragFinish(
+    HDROP hDrop
+);
+UINT DragQueryFileA(
+    HDROP hDrop,
+    UINT iFile,
+    LPSTR lpszFile,
+    UINT cch
+);
+UINT DragQueryFileW(
+    HDROP hDrop,
+    UINT iFile,
+    LPWSTR lpszFile,
+    UINT cch
+);
+BOOL DrawEdge(
+    HDC hdc,       // handle to device context
+    LPRECT qrc,    // pointer to rectangle coordinates
+    UINT edge,     // type of inner and outer edge to draw
+    UINT grfFlags  // type of border
+);
+BOOL DrawFocusRect(
+    HDC hDC,          // handle to device context
+    RECT *lprc  // pointer to structure for rectangle
+);
+BOOL DrawFrameControl(
+    HDC hdc,     // handle to device context
+    LPRECT lprc, // pointer to bounding rectangle
+    UINT uType,  // frame-control type
+    UINT uState  // frame-control state
+);
+BOOL DrawIconEx(
+    HDC hdc,                    // handle to device context
+    int xLeft,                  // x-coordinate of upper left corner
+    int yTop,                   // y-coordinate of upper left corner
+    HICON hIcon,                // handle to icon to draw
+    int cxWidth,                // width of the icon
+    int cyWidth,                // height of the icon
+    UINT istepIfAniCur,         // index of frame in animated cursor
+    HBRUSH hbrFlickerFreeDraw,  // handle to background brush
+    UINT diFlags                // icon-drawing flags
+);
+BOOL DrawMenuBar(
+    HWND hWnd  // handle to window with menu bar to redraw
+);
+BOOL DrawStateA(
+    HDC hdc,                     // handle to device context
+    HBRUSH hbr,                  // handle to brush
+    DRAWSTATEPROC lpOutputFunc,  // pointer to callback function
+    LPARAM lData,                // image information
+    WPARAM_I wData,                // more image information
+    int x,                       // horizontal location of image
+    int y,                       // vertical location of image
+    int cx,                      // width of image
+    int cy,                      // height of image
+    UINT fuFlags                 // image type and state
+);
+BOOL DrawStateW(
+    HDC hdc,                     // handle to device context
+    HBRUSH hbr,                  // handle to brush
+    DRAWSTATEPROC lpOutputFunc,  // pointer to callback function
+    LPARAM lData,                // image information
+    WPARAM_I wData,                // more image information
+    int x,                       // horizontal location of image
+    int y,                       // vertical location of image
+    int cx,                      // width of image
+    int cy,                      // height of image
+    UINT fuFlags                 // image type and state
+);
+int DrawTextA(
+    HDC hDC,          // handle to device context
+    LPCSTR lpString, // pointer to string to draw
+    int nCount,       // string length, in characters
+    LPRECT lpRect,    // pointer to struct with formatting dimensions
+    UINT uFormat      // text-drawing flags
+);
+int DrawTextW(
+    HDC hDC,          // handle to device context
+    LPCWSTR lpString, // pointer to string to draw
+    int nCount,       // string length, in characters
+    LPRECT lpRect,    // pointer to struct with formatting dimensions
+    UINT uFormat      // text-drawing flags
+);
+
+BOOL Ellipse(
+    HDC hdc,        // handle to device context
+    int nLeftRect,  // x-coord of bounding rectangle's upper-left corner
+    int nTopRect,   // y-coord of bounding rectangle's upper-left corner
+    int nRightRect, // x-coord of bounding rectangle's lower-right corner
+    int nBottomRect // y-coord of bounding rectangle's lower-right corner
+);
+BOOL EnableMenuItem(
+    HMENU hMenu,         // handle to menu
+    UINT uIDEnableItem,  // menu item to enable, disable, or gray
+    UINT uEnable         // menu item flags
+);
+alias STDWIN.EnableScrollBar EnableScrollBar;
+BOOL EnableWindow(          
+    HWND hWnd,
+    BOOL bEnable
+);
+BOOL EndDeferWindowPos(
+    HDWP hWinPosInfo   // handle to internal structure
+);
+int EndDoc(HDC hDC);
+int EndPage(HDC hDC);
+alias STDWIN.EndPaint EndPaint;
+BOOL EnumDisplayMonitors(
+    HDC hdc,                   // handle to display DC
+    LPCRECT lprcClip,          // clipping rectangle
+    MONITORENUMPROC lpfnEnum,  // callback function
+    LPARAM dwData              // data for callback function
+);
+int EnumFontFamiliesExA(
+    HDC hdc,              // handle to device context
+    LPLOGFONTA lpLogfont,  // pointer to logical font information
+    FONTENUMEXPROC lpEnumFontFamExProc,
+                    // pointer to callback function
+    LPARAM lParam,        // application-supplied data
+    DWORD dwFlags         // reserved; must be zero
+);
+int EnumFontFamiliesExW(
+    HDC hdc,              // handle to device context
+    LPLOGFONTW lpLogfont,  // pointer to logical font information
+    FONTENUMEXPROC lpEnumFontFamExProc,
+                    // pointer to callback function
+    LPARAM lParam,        // application-supplied data
+    DWORD dwFlags         // reserved; must be zero
+);
+
+int EnumFontFamiliesA(
+    HDC hdc,             // handle to device control
+    LPCSTR lpszFamily,  // pointer to family-name string
+    FONTENUMPROC lpEnumFontFamProc,
+                   // pointer to callback function
+    LPARAM lParam        // pointer to application-supplied data
+);
+int EnumFontFamiliesW(
+    HDC hdc,             // handle to device control
+    LPCWSTR lpszFamily,  // pointer to family-name string
+    FONTENUMPROC lpEnumFontFamProc,
+                   // pointer to callback function
+    LPARAM lParam        // pointer to application-supplied data
+);
+BOOL EnumSystemLanguageGroupsA(
+    LANGUAGEGROUP_ENUMPROC pLangGroupEnumProc, // callback function
+    DWORD dwFlags,                             // language groups
+    LONG_PTR  lParam                           // callback parameter
+);
+BOOL EnumSystemLanguageGroupsW(
+    LANGUAGEGROUP_ENUMPROC pLangGroupEnumProc, // callback function
+    DWORD dwFlags,                             // language groups
+    LONG_PTR  lParam                           // callback parameter
+);
+BOOL EnumSystemLocalesA(
+    LOCALE_ENUMPROC lpLocaleEnumProc, // callback function
+    DWORD dwFlags                     // locales
+);
+BOOL EnumSystemLocalesW(
+    LOCALE_ENUMPROC lpLocaleEnumProc, // callback function
+    DWORD dwFlags                     // locales
+);
+BOOL EqualRect(
+    RECT *lprc1,  // pointer to structure with first rectangle
+    RECT *lprc2   // pointer to structure with second rectangle
+);
+BOOL EqualRgn(
+    HRGN hSrcRgn1,  // handle to first region
+    HRGN hSrcRgn2   // handle to second region
+);
+DWORD ExpandEnvironmentStringsA(
+    LPCSTR lpSrc, // pointer to string with environment variables
+    LPSTR lpDst,  // pointer to string with expanded environment
+             // variables
+    DWORD nSize    // maximum characters in expanded string
+);
+DWORD ExpandEnvironmentStringsW(
+    LPCWSTR lpSrc, // pointer to string with environment variables
+    LPWSTR lpDst,  // pointer to string with expanded environment
+             // variables
+    DWORD nSize    // maximum characters in expanded string
+);
+BOOL ExtTextOutA(
+    HDC hdc,          // handle to device context
+    int X,            // x-coordinate of reference point
+    int Y,            // y-coordinate of reference point
+    UINT fuOptions,   // text-output options
+    RECT *lprc, // optional clipping and/or opaquing rectangle
+    LPCSTR lpString, // points to string
+    UINT cbCount,     // number of characters in string
+    INT *lpDx   // pointer to array of intercharacter spacing
+                // values
+);
+BOOL ExtTextOutW(
+    HDC hdc,          // handle to device context
+    int X,            // x-coordinate of reference point
+    int Y,            // y-coordinate of reference point
+    UINT fuOptions,   // text-output options
+    RECT *lprc, // optional clipping and/or opaquing rectangle
+    LPCWSTR lpString, // points to string
+    UINT cbCount,     // number of characters in string
+    INT *lpDx   // pointer to array of intercharacter spacing
+                // values
+);
+UINT ExtractIconExA(
+    LPCSTR lpszFile,
+    int nIconIndex,
+    HICON *phiconLarge,
+    HICON *phiconSmall,
+    UINT nIcons
+);
+UINT ExtractIconExW(
+    LPCWSTR lpszFile,
+    int nIconIndex,
+    HICON *phiconLarge,
+    HICON *phiconSmall,
+    UINT nIcons
+);
+alias STDWIN.FillRect FillRect;
+HRSRC FindResourceA(
+    HMODULE hModule, // module handle
+    LPCSTR lpName,  // pointer to resource name
+    LPCSTR lpType   // pointer to resource type
+);
+HRSRC FindResourceW(
+    HMODULE hModule, // module handle
+    LPCWSTR lpName,  // pointer to resource name
+    LPCWSTR lpType   // pointer to resource type
+);
+HWND FindWindowA(
+    LPCSTR lpClassName,  // pointer to class name
+    LPCSTR lpWindowName  // pointer to window name
+);
+HWND FindWindowW(
+    LPCWSTR lpClassName,  // pointer to class name
+    LPCWSTR lpWindowName  // pointer to window name
+);
+DWORD FormatMessageA(
+    DWORD dwFlags,      // source and processing options
+    LPCVOID lpSource,   // pointer to  message source
+    DWORD dwMessageId,  // requested message identifier
+    DWORD dwLanguageId, // language identifier for requested message
+    LPSTR lpBuffer,    // pointer to message buffer
+    DWORD nSize,        // maximum size of message buffer
+    //  va_list *Arguments  // pointer to array of message inserts
+    void* Arguments
+);
+DWORD FormatMessageW(
+    DWORD dwFlags,      // source and processing options
+    LPCVOID lpSource,   // pointer to  message source
+    DWORD dwMessageId,  // requested message identifier
+    DWORD dwLanguageId, // language identifier for requested message
+    LPWSTR lpBuffer,    // pointer to message buffer
+    DWORD nSize,        // maximum size of message buffer
+    //  va_list *Arguments  // pointer to array of message inserts
+    void* Arguments
+);
+alias STDWIN.FreeLibrary FreeLibrary;
+DWORD GdiSetBatchLimit(
+    DWORD dwLimit   // batch limit
+);
+UINT GetACP();
+HWND GetActiveWindow();
+COLORREF GetBkColor(
+    HDC hdc   // handle of device context
+);
+HWND GetCapture();
+BOOL GetCaretPos(
+    LPPOINT lpPoint   // address of structure to receive coordinates
+);
+BOOL GetCharABCWidthsA(
+    HDC hdc,         // handle to device context
+    UINT uFirstChar, // first character in range to query
+    UINT uLastChar,  // last character in range to query
+    LPABC lpabc      // pointer to character-width structure
+);
+BOOL GetCharABCWidthsW(
+    HDC hdc,         // handle to device context
+    UINT uFirstChar, // first character in range to query
+    UINT uLastChar,  // last character in range to query
+    LPABC lpabc      // pointer to character-width structure
+);
+
+BOOL GetCharWidthA(
+    HDC hdc,         // handle to device context
+    UINT iFirstChar, // first character in range to query
+    UINT iLastChar,  // last character in range to query
+    LPINT lpBuffer   // pointer to buffer for widths
+);
+BOOL GetCharWidthW(
+    HDC hdc,         // handle to device context
+    UINT iFirstChar, // first character in range to query
+    UINT iLastChar,  // last character in range to query
+    LPINT lpBuffer   // pointer to buffer for widths
+);
+DWORD GetCharacterPlacementA(
+    HDC hdc,           // handle to device context
+    LPCSTR lpString,  // pointer to string
+    int nCount,        // number of characters in string
+    int nMaxExtent,    // maximum extent for displayed string
+    LPGCP_RESULTS lpResults,
+                     // pointer to buffer for placement result
+    DWORD dwFlags      // placement flags
+);
+DWORD GetCharacterPlacementW(
+    HDC hdc,           // handle to device context
+    LPCWSTR lpString,  // pointer to string
+    int nCount,        // number of characters in string
+    int nMaxExtent,    // maximum extent for displayed string
+    LPGCP_RESULTS lpResults,
+                     // pointer to buffer for placement result
+    DWORD dwFlags      // placement flags
+);
+BOOL GetClassInfoA(
+    HINSTANCE hInstance,    // handle of application instance
+    LPCSTR lpClassName,    // address of class name string
+    LPWNDCLASSA lpWndClass   // address of structure for class data
+);
+BOOL GetClassInfoW(
+    HINSTANCE hInstance,    // handle of application instance
+    LPCWSTR lpClassName,    // address of class name string
+    LPWNDCLASSW lpWndClass   // address of structure for class data
+);
+alias STDWIN.GetClientRect GetClientRect;
+alias STDWIN.GetClipBox GetClipBox;
+alias STDWIN.GetClipRgn GetClipRgn;
+HANDLE GetClipboardData(
+    UINT uFormat   // clipboard format
+);
+int GetClipboardFormatNameA(
+    UINT format,            // clipboard format to retrieve
+    LPSTR lpszFormatName,  // address of buffer for name
+    int cchMaxCount         // length of name string in characters
+);
+int GetClipboardFormatNameW(
+    UINT format,            // clipboard format to retrieve
+    LPWSTR lpszFormatName,  // address of buffer for name
+    int cchMaxCount         // length of name string in characters
+);
+BOOL GetComboBoxInfo(
+    HWND hwndCombo,
+    PCOMBOBOXINFO pcbi
+);
+alias STDWIN.GetCurrentObject GetCurrentObject;
+DWORD GetCurrentProcessId();
+DWORD GetCurrentThreadId();
+HCURSOR GetCursor();
+BOOL GetCursorPos(
+    LPPOINT lpPoint   // address of structure for cursor position
+);
+alias STDWIN.GetDC GetDC;
+alias STDWIN.GetDCEx GetDCEx;
+UINT GetDIBColorTable(
+    HDC hdc,          // handle to device context whose DIB is of
+                // interest
+    UINT uStartIndex, // color table index of first entry to retrieve
+    UINT cEntries,    // number of color table entries to retrieve
+    RGBQUAD *pColors  // pointer to buffer that receives color table
+                // entries
+);
+int GetDIBits(
+    HDC hdc,           // handle to device context
+    HBITMAP hbmp,      // handle to bitmap
+    UINT uStartScan,   // first scan line to set in destination bitmap
+    UINT cScanLines,   // number of scan lines to copy
+    LPVOID lpvBits,    // address of array for bitmap bits
+    LPBITMAPINFO lpbi, // address of structure with bitmap data
+    UINT uUsage        // RGB or palette index
+);
+HWND GetDesktopWindow();
+alias STDWIN.GetDeviceCaps GetDeviceCaps;
+int GetDialogBaseUnits();
+alias STDWIN.GetDlgItem GetDlgItem;
+int GetDoubleClickTime();
+alias STDWIN.GetFocus GetFocus;
+DWORD GetFontLanguageInfo(
+    HDC hdc  // handle to a device context
+);
+BOOL GetGUIThreadInfo(
+    DWORD idThread,
+    LPGUITHREADINFO lpgui
+);
+BOOL GetIconInfo(
+    HICON hIcon,          // icon handle
+    PICONINFO piconinfo   // address of icon structure
+);
+int GetKeyNameTextA(
+    LONG lParam,      // second parameter of keyboard message
+    LPSTR lpString,  // pointer to buffer for key name
+    int nSize         // maximum length of key-name string length
+);
+int GetKeyNameTextW(
+    LONG lParam,      // second parameter of keyboard message
+    LPWSTR lpString,  // pointer to buffer for key name
+    int nSize         // maximum length of key-name string length
+);
+HKL GetKeyboardLayout(
+    DWORD dwLayout  // thread identifier
+);
+SHORT GetKeyState(
+    int nVirtKey   // virtual-key code
+);
+UINT GetKeyboardLayoutList(
+    int nBuff,       // size of buffer in array element
+    HKL *lpList  // buffer for keyboard layout handles
+);
+BOOL GetKeyboardState(
+    PBYTE lpKeyState   // pointer to array to receive status data
+);
+HWND GetLastActivePopup(HWND hWnd);
+DWORD GetLastError();
+DWORD GetLayout(
+    HDC hdc      // handle to DC
+);
+int GetLocaleInfoA(
+    LCID Locale,      // locale identifier
+    LCTYPE LCType,    // type of information
+    LPSTR lpLCData,  // address of buffer for information
+    int cchData       // size of buffer
+);
+int GetLocaleInfoW(
+    LCID Locale,      // locale identifier
+    LCTYPE LCType,    // type of information
+    LPWSTR lpLCData,  // address of buffer for information
+    int cchData       // size of buffer
+);
+HMENU GetMenu(
+    HWND hWnd  // handle to window
+);
+BOOL GetMenuBarInfo(
+    HWND hwnd,
+    LONG idObject,
+    LONG idItem,
+    PMENUBARINFO pmbi
+);
+UINT GetMenuDefaultItem(          
+    HMENU hMenu,
+    UINT fByPos,
+    UINT gmdiFlags
+);
+BOOL GetMenuInfo(          
+    HMENU hmenu,
+    LPCMENUINFO lpcmi
+);
+int GetMenuItemCount(HMENU hMenu);
+BOOL GetMenuItemInfoA(
+    HMENU hMenu,
+    UINT uItem,
+    BOOL fByPosition,
+    LPMENUITEMINFO lpmii
+);
+BOOL GetMenuItemInfoW(
+    HMENU hMenu,
+    UINT uItem,
+    BOOL fByPosition,
+    LPMENUITEMINFO lpmii
+);
+BOOL GetMenuItemRect(
+    HWND hWnd,       
+    HMENU hMenu,     
+    UINT uItem,      
+    LPRECT lprcItem  
+);
+alias STDWIN.GetMessageA GetMessageA;
+BOOL GetMessageW(
+    LPMSG lpMsg,         // address of structure with message
+    HWND hWnd,           // handle of window
+    UINT wMsgFilterMin,  // first message
+    UINT wMsgFilterMax   // last message
+);
+DWORD GetMessagePos();
+LONG GetMessageTime();
+DWORD GetModuleFileNameA(
+    HMODULE hModule,    // handle to module to find filename for
+    LPSTR lpFilename,  // pointer to buffer to receive module path
+    DWORD nSize         // size of buffer, in characters
+);
+DWORD GetModuleFileNameW(
+    HMODULE hModule,    // handle to module to find filename for
+    LPWSTR lpFilename,  // pointer to buffer to receive module path
+    DWORD nSize         // size of buffer, in characters
+);
+alias STDWIN.GetModuleHandleA GetModuleHandleA;
+HMODULE GetModuleHandleW(
+  LPCWSTR lpModuleName
+);
+BOOL GetMonitorInfoA(
+    HMONITOR hMonitor,  // handle to display monitor
+    LPMONITORINFO lpmi  // pointer to display monitor information
+);
+BOOL GetMonitorInfoW(
+    HMONITOR hMonitor,  // handle to display monitor
+    LPMONITORINFO lpmi  // pointer to display monitor information
+);
+UINT GetNearestPaletteIndex(
+    HPALETTE hpal,     // handle of logical color palette
+    COLORREF crColor   // color to be matched
+);
+alias STDWIN.GetObjectA GetObjectA;
+alias STDWIN.GetObjectW GetObjectW;
+BOOL GetOpenFileNameA(
+    OPENFILENAMEA* lpofn   // address of structure with initialization data
+);
+BOOL GetOpenFileNameW(
+    OPENFILENAMEW* lpofn   // address of structure with initialization data
+);
+UINT GetPaletteEntries(
+  HPALETTE hpal,        // handle to logical palette
+  UINT iStartIndex,     // first entry to retrieve
+  UINT nEntries,        // number of entries to retrieve
+  LPPALETTEENTRY lppe   // array that receives entries
+);
+HWND GetParent(
+    HWND hWnd   // handle to child window
+);
+
+COLORREF GetPixel(
+    HDC hdc,   // handle to device context
+    int XPos,  // x-coordinate of pixel
+    int nYPos  // y-coordinate of pixel
+);
+alias STDWIN.GetProcAddress GetProcAddress;
+HANDLE GetProcessHeap();
+DWORD GetProfileStringA(
+    LPCSTR lpAppName,        // address of section name
+    LPCSTR lpKeyName,        // address of key name
+    LPCSTR lpDefault,        // address of default string
+    LPSTR lpReturnedString,  // address of destination buffer
+    DWORD nSize               // size of destination buffer
+);
+DWORD GetProfileStringW(
+    LPCWSTR lpAppName,        // address of section name
+    LPCWSTR lpKeyName,        // address of key name
+    LPCWSTR lpDefault,        // address of default string
+    LPWSTR lpReturnedString,  // address of destination buffer
+    DWORD nSize               // size of destination buffer
+);
+int GetROP2(
+    HDC hdc   // handle of device context
+);
+int GetRandomRgn(
+    HDC  hdc,    // handle to DC
+    HRGN hrgn,   // handle to region
+    INT  iNum    // must be SYSRGN
+);
+DWORD GetRegionData(
+    HRGN hRgn,            // handle to region
+    DWORD dwCount,        // size of buffer containing region data
+    LPRGNDATA lpRgnData   // pointer to region data
+);
+int GetRgnBox(
+    HRGN hrgn,   // handle to a region
+    LPRECT lprc  // pointer that receives bounding rectangle
+);
+BOOL GetSaveFileNameA(
+    OPENFILENAMEA* lpofn   // address of structure with initialization data
+);
+BOOL GetSaveFileNameW(
+    OPENFILENAME* lpofn   // address of structure with initialization data
+);
+BOOL GetScrollInfo(
+    HWND hwnd,         // handle to window with scroll bar
+    int fnBar,         // scroll bar flag
+    LPSCROLLINFO lpsi  // pointer to structure for scroll parameters
+);
+alias STDWIN.GetStockObject GetStockObject;
+DWORD GetSysColor(
+    int nIndex   // display element
+);
+HBRUSH GetSysColorBrush(
+    int nIndex  // system color index
+);
+HMENU GetSystemMenu(
+    HWND hWnd,    // handle to window to own window menu
+    BOOL bRevert  // reset flag
+);
+int GetSystemMetrics(
+    int nIndex   // system metric or configuration setting to retrieve
+);
+UINT GetSystemPaletteEntries(
+    HDC hdc,              // handle of device context
+    UINT iStartIndex,     // index of first entry to be retrieved
+    UINT nEntries,        // number of entries to be retrieved
+    LPPALETTEENTRY lppe   // array receiving system-palette entries
+);
+int GetTextCharset(
+    HDC hdc  // handle to DC
+);
+COLORREF GetTextColor(
+    HDC hdc   // handle to device context
+);
+BOOL GetTextExtentPoint32A(
+    HDC hdc,           // handle to device context
+    LPCSTR lpString,  // pointer to text string
+    int cbString,      // number of characters in string
+    LPSIZE lpSize      // pointer to structure for string size
+);
+BOOL GetTextExtentPoint32W(
+    HDC hdc,           // handle to device context
+    LPCWSTR lpString,  // pointer to text string
+    int cbString,      // number of characters in string
+    LPSIZE lpSize      // pointer to structure for string size
+);
+alias STDWIN.GetTextMetricsA GetTextMetricsA;
+BOOL GetTextMetricsW(
+    HDC hdc,            // handle to device context
+    TEXTMETRICW* lptm   // pointer to text metrics structure
+);
+DWORD GetTickCount();
+alias STDWIN.GetUpdateRect GetUpdateRect;
+alias STDWIN.GetUpdateRgn GetUpdateRgn;
+DWORD GetVersion();
+BOOL GetVersionExA(
+    LPOSVERSIONINFOA lpVersionInformation   // pointer to version information structure
+);
+BOOL GetVersionExW(
+    LPOSVERSIONINFOW lpVersionInformation   // pointer to version information structure
+);
+HWND GetWindow(
+    HWND hWnd,  // handle to original window
+    UINT uCmd   // relationship flag
+);
+LONG GetWindowLongA(HWND hWnd, int nIndex);
+LONG GetWindowLongW(HWND hWnd, int nIndex);
+BOOL GetWindowPlacement(          
+    HWND hWnd,
+    WINDOWPLACEMENT *lpwndpl
+);
+alias STDWIN.GetWindowRect GetWindowRect;
+alias STDWIN.GetWindowRgn GetWindowRgn;
+int GetWindowTextA(
+  HWND hWnd,        // handle to window or control with text
+  LPSTR lpString,  // address of buffer for text
+  int nMaxCount     // maximum number of characters to copy
+);
+int GetWindowTextW(
+  HWND hWnd,        // handle to window or control with text
+  LPWSTR lpString,  // address of buffer for text
+  int nMaxCount     // maximum number of characters to copy
+);
+int GetWindowTextLengthA(HWND hWnd);
+int GetWindowTextLengthW(HWND hWnd);
+DWORD GetWindowThreadProcessId(
+  HWND hWnd,             // handle to window
+  LPDWORD lpdwProcessId  // address of variable for process identifier
+);
+HGLOBAL GlobalAlloc(UINT uFlags, SIZE_T dwBytes);
+HGLOBAL GlobalFree(HGLOBAL hMem);
+LPVOID GlobalLock(HGLOBAL hMem);
+SIZE_T GlobalSize(HGLOBAL hMem);
+BOOL GlobalUnlock(HGLOBAL hMem);
+BOOL GradientFill(
+    HDC hdc,
+    PTRIVERTEX pVertex,
+    DWORD dwNumVertex,
+    PVOID pMesh,
+    DWORD dwNumMesh,
+    DWORD dwMode
+);
+LPVOID HeapAlloc(
+    HANDLE hHeap,  // handle to the private heap block
+    DWORD dwFlags, // heap allocation control flags
+    DWORD dwBytes  // number of bytes to allocate
+);
+BOOL HeapFree(
+    HANDLE hHeap,  // handle to the heap
+    DWORD dwFlags, // heap freeing flags
+    LPVOID lpMem   // pointer to the memory to free
+);
+alias STDWIN.HideCaret HideCaret;
+int ImageList_Add(
+    HIMAGELIST himl,
+    HBITMAP hbmImage,
+    HBITMAP hbmMask
+);
+int ImageList_AddMasked(
+    HIMAGELIST himl,
+    HBITMAP hbmImage,
+    COLORREF crMask
+     );
+HIMAGELIST ImageList_Create(
+    int cx,
+    int cy,
+    UINT flags,
+    int cInitial,
+    int cGrow
+);
+BOOL ImageList_Destroy(
+    HIMAGELIST himl
+);
+HICON ImageList_GetIcon(
+    HIMAGELIST himl,
+    int i,
+    UINT flags
+);
+BOOL ImageList_GetIconSize(
+    HIMAGELIST himl,
+    int *cx,
+    int *cy
+);
+int ImageList_GetImageCount(
+    HIMAGELIST himl
+);
+BOOL ImageList_Remove(
+    HIMAGELIST himl,
+    int i
+);
+BOOL ImageList_Replace(
+    HIMAGELIST himl,
+    int i,
+    HBITMAP hbmImage,
+    HBITMAP hbmMask
+);
+int ImageList_ReplaceIcon(
+    HIMAGELIST himl,
+    int i,
+    HICON hicon
+);
+BOOL ImageList_SetIconSize(
+    HIMAGELIST himl,
+    int cx,
+    int cy
+);
+HIMC ImmAssociateContext(
+    HWND hWnd,
+    HIMC hIMC
+);
+HIMC ImmCreateContext();
+int ImmDestroyContext(HIMC hIMC );
+BOOL ImmGetCompositionFontA(
+    HIMC hIMC,
+    LPLOGFONTA lplf
+);
+BOOL ImmGetCompositionFontW(
+    HIMC hIMC,
+    LOGFONTW* lplf
+);
+LONG ImmGetCompositionStringA(
+    HIMC hIMC,      
+    DWORD dwIndex,  
+    LPVOID lpBuf,   
+    DWORD dwBufLen  
+);
+LONG ImmGetCompositionStringW(
+    HIMC hIMC,      
+    DWORD dwIndex,  
+    LPVOID lpBuf,   
+    DWORD dwBufLen  
+);
+HIMC ImmGetContext(
+    HWND hWnd
+);
+BOOL ImmGetConversionStatus(
+    HIMC hIMC,             
+    LPDWORD lpfdwConversion,   
+    LPDWORD lpfdwSentence  
+);
+HWND ImmGetDefaultIMEWnd(HWND hWnd );
+BOOL ImmGetOpenStatus(
+    HIMC hIMC  
+);
+BOOL ImmReleaseContext(
+    HWND hWnd,
+    HIMC hIMC
+);
+BOOL ImmSetCompositionFontA(
+    HIMC hIMC,
+    LOGFONTA* lplf
+);
+BOOL ImmSetCompositionFontW(
+    HIMC hIMC,
+    LOGFONTW* lplf
+);
+BOOL ImmSetCompositionWindow(
+    HIMC hIMC,
+    LPCOMPOSITIONFORM lpCompForm
+);
+BOOL ImmSetConversionStatus(
+    HIMC hIMC,             
+    DWORD fdwConversion,   
+    DWORD fdwSentence      
+);
+BOOL ImmSetOpenStatus(
+    HIMC hIMC,  
+    BOOL fOpen  
+);
+void InitCommonControls();
+BOOL InitCommonControlsEx(
+    LPINITCOMMONCONTROLSEX lpInitCtrls
+);
+BOOL InsertMenuA(
+  HMENU hMenu,      // handle to menu
+  UINT uPosition,   // menu item that new menu item precedes
+  UINT uFlags,      // menu item flags
+  UINT uIDNewItem,  // menu item identifier or handle to drop-down 
+                    // menu or submenu
+  LPCSTR lpNewItem // menu item content
+);
+BOOL InsertMenuW(
+  HMENU hMenu,      // handle to menu
+  UINT uPosition,   // menu item that new menu item precedes
+  UINT uFlags,      // menu item flags
+  UINT uIDNewItem,  // menu item identifier or handle to drop-down 
+                    // menu or submenu
+  LPCWSTR lpNewItem // menu item content
+);
+
+BOOL InsertMenuItemA(
+  HMENU hMenu,          
+  UINT uItem,           
+  BOOL fByPosition,     
+  MENUITEMINFOA* lpmii  
+);
+BOOL InsertMenuItemW(
+  HMENU hMenu,          
+  UINT uItem,           
+  BOOL fByPosition,     
+  MENUITEMINFOW* lpmii  
+);
+BOOL IntersectRect(
+    LPRECT lprcDst,        // pointer to structure for intersection
+    RECT *lprcSrc1,  // pointer to structure with first rectangle
+    RECT *lprcSrc2   // pointer to structure with second rectangle
+);
+LONG InterlockedIncrement(
+    LPLONG lpAddend   // pointer to the variable to increment
+);
+LONG InterlockedDecrement(
+    LPLONG lpAddend   // address of the variable to decrement
+);
+alias STDWIN.InvalidateRect InvalidateRect;
+alias STDWIN.InvalidateRgn InvalidateRgn;
+BOOL IsDBCSLeadByte(
+    BYTE TestChar   // character to test
+);
+BOOL IsIconic(
+    HWND hWnd   // handle to window
+);
+BOOL IsWindow(
+    HWND hWnd   // handle to window
+);
+BOOL IsWindowEnabled(HWND hWnd);
+BOOL IsWindowVisible(HWND hWnd);
+BOOL IsZoomed(HWND hWnd);
+BOOL KillTimer(
+    HWND hWnd,      // handle of window that installed timer
+    UINT uIDEvent   // timer identifier
+);
+alias STDWIN.LineTo LineTo;
+HBITMAP LoadBitmapA(
+    HINSTANCE hInstance,  // handle to application instance
+    LPCSTR lpBitmapName  // name of bitmap resource
+);
+HBITMAP LoadBitmapW(
+    HINSTANCE hInstance,  // handle to application instance
+    LPCWSTR lpBitmapName  // name of bitmap resource
+);
+alias STDWIN.LoadCursorA LoadCursorA;
+alias STDWIN.LoadCursorW LoadCursorW;
+alias STDWIN.LoadIconA LoadIconA;
+alias STDWIN.LoadIconW LoadIconW;
+HANDLE LoadImageA(
+    HINSTANCE hinst,   // handle of the instance containing the image
+    LPCSTR lpszName,  // name or identifier of image
+    UINT uType,        // type of image
+    int cxDesired,     // desired width
+    int cyDesired,     // desired height
+    UINT fuLoad        // load flags
+);
+HANDLE LoadImageW(
+    HINSTANCE hinst,   // handle of the instance containing the image
+    LPCWSTR lpszName,  // name or identifier of image
+    UINT uType,        // type of image
+    int cxDesired,     // desired width
+    int cyDesired,     // desired height
+    UINT fuLoad        // load flags
+);
+alias STDWIN.LoadLibraryA LoadLibraryA;
+HINSTANCE LoadLibraryW(wchar* lpLibFileName );
+HGLOBAL LoadResource(
+    HMODULE hModule, // resource-module handle
+    HRSRC hResInfo   // resource handle
+);
+int LoadStringA(          
+    HINSTANCE hInstance,
+    UINT uID,
+    LPSTR lpBuffer,
+    int nBufferMax
+);
+int LoadStringW(          
+    HINSTANCE hInstance,
+    UINT uID,
+    LPWSTR lpBuffer,
+    int nBufferMax
+);
+HLOCAL LocalFree(
+    HLOCAL hMem   // handle to local memory object
+);
+LPVOID LockResource(
+    HGLOBAL hResData   // handle to resource to lock
+);
+UINT MapVirtualKeyA(
+    UINT uCode,     // virtual-key code or scan code
+    UINT uMapType   // translation to perform
+);
+UINT MapVirtualKeyW(
+    UINT uCode,     // virtual-key code or scan code
+    UINT uMapType   // translation to perform
+);
+alias STDWIN.MapWindowPoints MapWindowPoints;
+BOOL MessageBeep(
+    UINT uType   // sound type
+);
+alias STDWIN.MessageBoxA MessageBoxA;
+int MessageBoxW(
+    HWND hWnd,          // handle of owner window
+    LPCWSTR lpText,     // address of text in message box
+    LPCWSTR lpCaption,  // address of title of message box
+    UINT uType          // style of message box
+);
+HMONITOR MonitorFromWindow(
+    HWND hwnd,       // handle to a window
+    DWORD dwFlags    // flags if no monitor intersects the window
+);
+alias STDWIN.MoveToEx MoveToEx;
+DWORD MsgWaitForMultipleObjectsEx(
+    DWORD nCount,          // number of handles in handle array
+    LPHANDLE pHandles,     // pointer to an object-handle array
+    DWORD dwMilliseconds,  // time-out interval in milliseconds
+    DWORD dwWakeMask,      // type of input events to wait for
+    DWORD dwFlags          // wait flags
+);
+alias STDWIN.MultiByteToWideChar MultiByteToWideChar;
+void NotifyWinEvent(
+    DWORD event,
+    HWND hwnd,
+    LONG idObject,
+    LONG idChild
+);
+int OffsetRgn(
+    HRGN hrgn,     // handle to region
+    int nXOffset,  // offset along x-axis
+    int nYOffset   // offset along y-axis
+);
+WINOLEAPI OleInitialize(
+    LPVOID pvReserved  //Reserved; must be NULL.
+);
+void OleUninitialize();
+BOOL OpenClipboard(          
+    HWND hWndNewOwner
+);
+void OutputDebugStringA(
+    LPCSTR lpOutputString
+);
+void OutputDebugStringW(
+    LPCWSTR lpOutputString
+);
+BOOL PatBlt(
+    HDC hdc,     // handle to device context
+    int nXLeft,  // x-coord. of upper-left corner of rect. to be filled
+    int nYLeft,  // y-coord. of upper-left corner of rect. to be filled
+    int nWidth,  // width of rectangle to be filled
+    int nHeight, // height of rectangle to be filled
+    DWORD dwRop  // raster operation code
+);
+alias STDWIN.PeekMessageA PeekMessageA;
+BOOL PeekMessageW(
+    LPMSG lpMsg,         // pointer to structure for message
+    HWND hWnd,           // handle to window
+    UINT wMsgFilterMin,  // first message
+    UINT wMsgFilterMax,  // last message
+    UINT wRemoveMsg      // removal flags
+);
+BOOL Pie(
+    HDC hdc,         // handle to device context
+    int nLeftRect,   // x-coord of bounding rectangle's upper-left corner
+    int nTopRect,    // y-coord of bounding rectangle's upper-left corner
+    int nRightRect,  // x-coord of bounding rectangle's lower-right corner
+    int nBottomRect, // y-coord of bounding rectangle's lower-right corner
+    int nXRadial1,   // x-coord of first radial's endpoint
+    int nYRadial1,   // y-coord of first radial's endpoint
+    int nXRadial2,   // x-coord of second radial's endpoint
+    int nYRadial2    // y-coord of second radial's endpoint
+);
+BOOL Polygon(
+    HDC hdc,                // handle to device context
+    POINT *lpPoints,  // pointer to polygon's vertices
+    int nCount              // count of polygon's vertices
+);
+BOOL Polyline(
+    HDC hdc,            // handle to device context
+    POINT *lppt,  // pointer to array containing endpoints
+    int cPoints         // number of points in the array
+);
+BOOL PostMessageA(          
+    HWND hWnd,
+    UINT Msg,
+    WPARAM_I wParam,
+    LPARAM lParam
+);
+BOOL PostMessageW(          
+    HWND hWnd,
+    UINT Msg,
+    WPARAM_I wParam,
+    LPARAM lParam
+);
+BOOL PostThreadMessageA(
+    DWORD idThread,
+    UINT Msg,
+    WPARAM_I wParam,
+    LPARAM lParam
+);
+BOOL PostThreadMessageW(
+    DWORD idThread,
+    UINT Msg,
+    WPARAM_I wParam,
+    LPARAM lParam
+);
+BOOL PrintDlgA(          
+    LPPRINTDLGA lppd
+);
+BOOL PrintDlgW(          
+    LPPRINTDLGW lppd
+);
+BOOL PtInRect(
+    RECT *lprc,  // rectangle
+    POINT pt           // point
+);
+BOOL PtInRegion(
+    HRGN hrgn,  // handle to region
+    int X,      // x-coordinate of point
+    int Y       // y-coordinate of point
+);
+UINT RealizePalette(
+    HDC hdc   // handle of device context
+);
+BOOL RectInRegion(
+    HRGN hrgn,         // handle to region
+    RECT *lprc   // pointer to rectangle
+);
+BOOL Rectangle(
+    HDC hdc,         // handle to device context
+    int nLeftRect,   // x-coord of bounding rectangle's upper-left corner
+    int nTopRect,    // y-coord of bounding rectangle's upper-left corner
+    int nRightRect,  // x-coord of bounding rectangle's lower-right corner
+    int nBottomRect  // y-coord of bounding rectangle's lower-right corner
+);
+alias STDWIN.RedrawWindow RedrawWindow;
+LONG RegCloseKey(
+  HKEY hKey
+);
+LONG RegEnumKeyExA(
+  HKEY hKey,
+  DWORD dwIndex,
+  LPSTR lpName,
+  LPDWORD lpcName,
+  LPDWORD lpReserved,
+  LPSTR lpClass,
+  LPDWORD lpcClass,
+  PFILETIME lpftLastWriteTime
+);
+LONG RegEnumKeyExW(
+  HKEY hKey,
+  DWORD dwIndex,
+  LPWSTR lpName,
+  LPDWORD lpcName,
+  LPDWORD lpReserved,
+  LPWSTR lpClass,
+  LPDWORD lpcClass,
+  PFILETIME lpftLastWriteTime
+);
+LONG RegOpenKeyExA(
+  HKEY hKey,
+  LPSTR lpSubKey,
+  DWORD ulOptions,
+  REGSAM samDesired,
+  PHKEY phkResult
+);
+LONG RegOpenKeyExW(
+  HKEY hKey,
+  LPWSTR lpSubKey,
+  DWORD ulOptions,
+  REGSAM samDesired,
+  PHKEY phkResult
+);
+
+LONG RegQueryInfoKeyA(
+  HKEY hKey,
+  LPSTR lpClass,
+  LPDWORD lpcClass,
+  LPDWORD lpReserved,
+  LPDWORD lpcSubKeys,
+  LPDWORD lpcMaxSubKeyLen,
+  LPDWORD lpcMaxClassLen,
+  LPDWORD lpcValues,
+  LPDWORD lpcMaxValueNameLen,
+  LPDWORD lpcMaxValueLen,
+  LPDWORD lpcbSecurityDescriptor,
+  PFILETIME lpftLastWriteTime
+);
+LONG RegQueryInfoKeyW(
+  HKEY hKey,
+  LPWSTR lpClass,
+  LPDWORD lpcClass,
+  LPDWORD lpReserved,
+  LPDWORD lpcSubKeys,
+  LPDWORD lpcMaxSubKeyLen,
+  LPDWORD lpcMaxClassLen,
+  LPDWORD lpcValues,
+  LPDWORD lpcMaxValueNameLen,
+  LPDWORD lpcMaxValueLen,
+  LPDWORD lpcbSecurityDescriptor,
+  PFILETIME lpftLastWriteTime
+);
+
+LONG RegQueryValueExA(
+  HKEY hKey,
+  LPCSTR lpValueName,
+  LPDWORD lpReserved,
+  LPDWORD lpType,
+  LPBYTE lpData,
+  LPDWORD lpcbData
+);
+LONG RegQueryValueExW(
+  HKEY hKey,
+  LPCWSTR lpValueName,
+  LPDWORD lpReserved,
+  LPDWORD lpType,
+  LPBYTE lpData,
+  LPDWORD lpcbData
+);
+
+ATOM RegisterClassA(          
+    WNDCLASSA *lpWndClass
+);
+ATOM RegisterClassW(          
+    WNDCLASSW *lpWndClass
+);
+UINT RegisterClipboardFormatA(          
+    LPCSTR lpszFormat
+);
+UINT RegisterClipboardFormatW(          
+    LPCWSTR lpszFormat
+);
+UINT RegisterWindowMessageA(          
+    LPCSTR lpString
+);
+UINT RegisterWindowMessageW(          
+    LPCWSTR lpString
+);
+BOOL ReleaseCapture();
+alias STDWIN.ReleaseDC ReleaseDC;
+BOOL RemoveMenu(          
+    HMENU hMenu,
+    UINT uPosition,
+    UINT uFlags
+);
+BOOL RestoreDC(
+    HDC hdc,       // handle to DC
+    int nSavedDC   // restore state
+);
+alias STDWIN.RoundRect RoundRect;
+
+// basic
+void RtlMoveMemory(void* Destination, void* Source, DWORD Length);
+// extends
+void RtlMoveMemory(int Destination, void* Source, DWORD Length);
+void RtlMoveMemory(void* Destination, int Source, DWORD Length);
+void RtlMoveMemory(int Destination, int Source, DWORD Length);
+
+LPITEMIDLIST SHBrowseForFolderA(          
+    BROWSEINFOA* lpbi
+);
+LPITEMIDLIST SHBrowseForFolderW(          
+    BROWSEINFOW* lpbi
+);
+version(WinCE){
+    int SHCreateMenuBar(SHMENUBARINFO* pmb);
+}
+HRESULT SHGetMalloc(          
+//  LPMALLOC *ppMalloc
+    LPVOID   *ppMalloc
+);
+BOOL SHGetPathFromIDListA(          
+    LPCITEMIDLIST pidl,
+    LPSTR pszPath
+);
+BOOL SHGetPathFromIDListW(          
+    LPCITEMIDLIST pidl,
+    LPWSTR pszPath
+);
+version(WinCE)
+{
+    int SHHandleWMSettingChange(HWND hwnd, int wParam, int lParam, void*  psai);
+    int SHRecognizeGesture(void* shrg);
+    void SHSendBackToFocusWindow(int uMsg, int wp, int lp);
+    int SHSetAppKeyWndAssoc(byte bVk, HWND hwnd);
+    int SHSipPreference(HWND hwnd, int st);
+}
+alias STDWIN.SaveDC SaveDC;
+alias STDWIN.ScreenToClient ScreenToClient;
+
+// USP methods (Unicode Complex Script processor) 
+HRESULT ScriptBreak( 
+  WCHAR *pwcChars, 
+  int cChars, 
+  SCRIPT_ANALYSIS *psa, 
+  SCRIPT_LOGATTR *psla 
+);
+HRESULT ScriptCPtoX( 
+  int iCP, 
+  BOOL fTrailing, 
+  int cChars, 
+  int cGlyphs, 
+  WORD *pwLogClust, 
+  SCRIPT_VISATTR *psva, 
+  int *piAdvance, 
+  SCRIPT_ANALYSIS *psa, 
+  int *piX 
+);
+HRESULT ScriptCacheGetHeight(
+  HDC hdc, 
+  SCRIPT_CACHE *psc, 
+  long *tmHeight 
+);
+HRESULT ScriptFreeCache(
+  SCRIPT_CACHE *psc 
+);
+HRESULT ScriptGetFontProperties(
+  HDC hdc, 
+  SCRIPT_CACHE *psc, 
+  SCRIPT_FONTPROPERTIES *sfp 
+);
+HRESULT ScriptGetLogicalWidths(
+  SCRIPT_ANALYSIS *psa,
+  int cChars,
+  int cGlyphs,
+  int *piGlyphWidth,
+  WORD *pwLogClust,
+  SCRIPT_VISATTR *psva,
+  int *piDx
+);
+HRESULT ScriptGetProperties(
+  SCRIPT_PROPERTIES ***ppSp, 
+  int *piNumScripts 
+);
+HRESULT ScriptItemize(
+  WCHAR *pwcInChars, 
+  int cInChars, 
+  int cMaxItems, 
+  SCRIPT_CONTROL *psControl, 
+  SCRIPT_STATE *psState, 
+  SCRIPT_ITEM *pItems, 
+  int *pcItems 
+);
+HRESULT ScriptLayout(
+  int cRuns, 
+  BYTE *pbLevel, 
+  int *piVisualToLogical, 
+  int *piLogicalToVisual 
+);
+HRESULT ScriptPlace(
+  HDC hdc, 
+  SCRIPT_CACHE *psc, 
+  WORD *pwGlyphs, 
+  int cGlyphs, 
+  SCRIPT_VISATTR *psva, 
+  SCRIPT_ANALYSIS *psa, 
+  int *piAdvance, 
+  GOFFSET *pGoffset, 
+  ABC *pABC 
+);
+HRESULT ScriptShape(
+  HDC hdc,              // in   
+  SCRIPT_CACHE *psc,    // in/out
+  WCHAR *pwcChars,      //  
+  int cChars, 
+  int cMaxGlyphs, 
+  SCRIPT_ANALYSIS *psa, 
+  WORD *pwOutGlyphs, 
+  WORD *pwLogClust, 
+  SCRIPT_VISATTR *psva, 
+  int *pcGlyphs 
+);
+HRESULT ScriptTextOut(
+  HDC hdc,              // const
+  SCRIPT_CACHE *psc, 
+  int x, 
+  int y, 
+  UINT fuOptions, 
+  RECT *lprc,           // const
+  SCRIPT_ANALYSIS *psa, // const
+  WCHAR *pwcReserved,   // const
+  int iReserved, 
+  WORD *pwGlyphs,       // 
+  int cGlyphs, 
+  int *piAdvance,       // const
+  int *piJustify,       // const
+  GOFFSET *pGoffset     // const
+);
+HRESULT ScriptXtoCP(
+  int iX, 
+  int cChars, 
+  int cGlyphs, 
+  WORD *pwLogClust,         // 
+  SCRIPT_VISATTR *psva,     //  
+  int *piAdvance,           //      
+  SCRIPT_ANALYSIS *psa,     // 
+  int *piCP, 
+  int *piTrailing 
+);
+alias STDWIN.ScrollWindowEx ScrollWindowEx;
+alias STDWIN.SelectClipRgn SelectClipRgn;
+alias STDWIN.SelectObject SelectObject;
+alias STDWIN.SelectPalette SelectPalette;
+UINT SendInput(          
+    UINT nInputs,
+    LPINPUT pInputs,
+    int cbSize
+);
+// the basic
+int SendMessageA(HWND hWnd, int msg, int wParam, int lParam );
+int SendMessageW(HWND hWnd, int msg, int wParam, int lParam );
+
+int SendMessageA(HWND hWnd, UINT Msg, WPARAM_I wParam, void* lParam );
+int SendMessageW(HWND hWnd, UINT Msg, WPARAM_I wParam, void* lParam );
+int SendMessageA(HWND hWnd, UINT Msg, void* wParam, LPARAM lParam );
+int SendMessageW(HWND hWnd, UINT Msg, void* wParam, LPARAM lParam );
+int SendMessageA(HWND hWnd, UINT Msg, void* wParam, void* lParam );
+int SendMessageW(HWND hWnd, UINT Msg, void* wParam, void* lParam );
+
+alias STDWIN.SetActiveWindow SetActiveWindow;
+alias STDWIN.SetBkColor SetBkColor;
+alias STDWIN.SetBkMode SetBkMode;
+HWND SetCapture(          
+    HWND hWnd
+);
+BOOL SetCaretPos(          
+    int X,
+    int Y
+);
+HANDLE SetClipboardData(          
+    UINT uFormat,
+    HANDLE hMem
+);
+alias STDWIN.SetCursor SetCursor;
+alias STDWIN.SetCursorPos SetCursorPos;
+UINT SetDIBColorTable(
+    HDC hdc,                // handle to device context whose DIB is of interest
+    UINT uStartIndex,       // color table index of first entry to set
+    UINT cEntries,          // number of color table entries to set
+    RGBQUAD *pColors  // pointer to array of color table entries
+);
+UINT SetErrorMode(
+    UINT uMode
+);
+BOOL SetEvent(
+  HANDLE hEvent   // handle to event object
+);
+alias STDWIN.SetFocus SetFocus;
+alias STDWIN.SetForegroundWindow SetForegroundWindow;
+void SetLastError(
+    DWORD dwErrCode
+);
+DWORD SetLayout(
+    HDC hdc,             // handle to DC
+    DWORD dwLayout       // layout options
+);
+BOOL SetMenu(          
+    HWND hWnd,
+    HMENU hMenu
+);
+BOOL SetMenuDefaultItem(         
+    HMENU hMenu,
+    UINT uItem,
+    UINT fByPos
+);
+BOOL SetMenuInfo(          
+    HMENU hmenu,
+    LPCMENUINFO lpcmi
+);
+BOOL SetMenuItemInfoA(          
+    HMENU hMenu,
+    UINT uItem,
+    BOOL fByPosition,
+    LPMENUITEMINFOA lpmii
+);
+BOOL SetMenuItemInfoW(          
+    HMENU hMenu,
+    UINT uItem,
+    BOOL fByPosition,
+    LPMENUITEMINFOW lpmii
+);
+UINT SetPaletteEntries(
+    HPALETTE hpal,             // handle to logical palette
+    UINT iStart,               // index of first entry to set
+    UINT cEntries,             // number of entries to set
+    PALETTEENTRY *lppe              // array of palette entries
+);
+HWND SetParent(          
+    HWND hWndChild,
+    HWND hWndNewParent
+);
+alias STDWIN.SetPixel SetPixel;
+alias STDWIN.SetROP2 SetROP2;
+BOOL SetRect(
+    LPRECT lprc, // rectangle
+    int xLeft,   // left side
+    int yTop,    // top side
+    int xRight,  // right side
+    int yBottom  // bottom side
+);
+alias STDWIN.SetRectRgn SetRectRgn;
+int SetScrollInfo(          
+    HWND hwnd,
+    int fnBar,
+    LPCSCROLLINFO lpsi,
+    BOOL fRedraw
+);
+alias STDWIN.SetStretchBltMode SetStretchBltMode;
+alias STDWIN.SetTextAlign SetTextAlign;
+alias STDWIN.SetTextColor SetTextColor;
+UINT_PTR SetTimer(          
+    HWND hWnd,
+    UINT_PTR nIDEvent,
+    UINT uElapse,
+    TIMERPROC_I lpTimerFunc
+);
+LONG SetWindowLongA( 
+    HWND hWnd,
+    int nIndex,
+    LONG dwNewLong
+);
+LONG SetWindowLongW( 
+    HWND hWnd,
+    int nIndex,
+    LONG dwNewLong
+);
+BOOL SetWindowPlacement(          
+    HWND hWnd,
+    WINDOWPLACEMENT *lpwndpl
+);
+BOOL SetWindowPos(
+    HWND hWnd,             // handle to window
+    HWND hWndInsertAfter,  // placement-order handle
+    int X,                 // horizontal position
+    int Y,                 // vertical position
+    int cx,                // width
+    int cy,                // height
+    UINT uFlags            // window-positioning flags
+);
+alias STDWIN.SetWindowRgn SetWindowRgn;
+BOOL SetWindowTextA(          
+    HWND hWnd,
+    LPCSTR lpString
+);
+BOOL SetWindowTextW(          
+    HWND hWnd,
+    LPCWSTR lpString
+);
+HHOOK SetWindowsHookExA(
+    int idHook,        // type of hook to install
+    HOOKPROC_I lpfn,     // address of hook procedure
+    HINSTANCE hMod,    // handle to application instance
+    DWORD dwThreadId   // identity of thread to install hook for
+);
+HHOOK SetWindowsHookExW(
+    int idHook,        // type of hook to install
+    HOOKPROC_I lpfn,     // address of hook procedure
+    HINSTANCE hMod,    // handle to application instance
+    DWORD dwThreadId   // identity of thread to install hook for
+);
+BOOL ShellExecuteExA(          
+    LPSHELLEXECUTEINFOA lpExecInfo
+);
+BOOL ShellExecuteExW(          
+    LPSHELLEXECUTEINFOW lpExecInfo
+);
+BOOL Shell_NotifyIconA( 
+    DWORD dwMessage,
+    PNOTIFYICONDATAA lpdata
+);
+BOOL Shell_NotifyIconW( 
+    DWORD dwMessage,
+    PNOTIFYICONDATAW lpdata
+);
+alias STDWIN.ShowCaret ShowCaret;
+BOOL ShowOwnedPopups(          
+    HWND hWnd,
+    BOOL fShow
+);
+alias STDWIN.ShowScrollBar ShowScrollBar;
+alias STDWIN.ShowWindow ShowWindow;
+version(WinCE)
+{
+BOOL SipGetInfo(
+    SIPINFO *pSipInfo
+);
+}
+DWORD SizeofResource(
+    HMODULE hModule, // resource-module handle
+    HRSRC hResInfo   // resource handle
+);
+void Sleep(
+    DWORD dwMilliseconds
+);
+int StartDocA(
+    HDC hdc,              // handle to DC
+    DOCINFOA* lpdi          // contains file names
+);
+int StartDocW(
+    HDC hdc,              // handle to DC
+    DOCINFOW* lpdi          // contains file names
+);
+int StartPage(
+    HDC hDC   // handle to DC
+);
+alias STDWIN.StretchBlt StretchBlt;
+BOOL SystemParametersInfoA(
+    UINT uiAction,
+    UINT uiParam,
+    PVOID pvParam,
+    UINT fWinIni
+);
+BOOL SystemParametersInfoW(
+    UINT uiAction,
+    UINT uiParam,
+    PVOID pvParam,
+    UINT fWinIni
+);
+int ToAscii(          
+    UINT uVirtKey,
+    UINT uScanCode,
+    PBYTE lpKeyState,
+    LPWORD lpChar,
+    UINT uFlags
+);
+int ToUnicode(          
+    UINT wVirtKey,
+    UINT wScanCode,
+    PBYTE lpKeyState,
+    LPWSTR pwszBuff,
+    int cchBuff,
+    UINT wFlags
+);
+BOOL TrackMouseEvent(
+    LPTRACKMOUSEEVENT lpEventTrack  // pointer to a TRACKMOUSEEVENT structure
+);
+alias STDWIN.TrackPopupMenu TrackPopupMenu;
+int TranslateAcceleratorA(
+    HWND hWnd,         // handle to destination window
+    HACCEL hAccTable,  // handle to accelerator table
+    LPMSG lpMsg        // address of structure with message
+);
+int TranslateAcceleratorW(
+    HWND hWnd,         // handle to destination window
+    HACCEL hAccTable,  // handle to accelerator table
+    LPMSG lpMsg        // address of structure with message
+);
+UINT TranslateCharsetInfo(
+    DWORD *lpSrc,     
+    LPCHARSETINFO lpCs,   
+    DWORD dwFlags         
+);
+BOOL TranslateMDISysAccel(          
+    HWND hWndClient,
+    LPMSG lpMsg
+);
+BOOL TranslateMessage(
+    MSG *lpMsg   // address of structure with message
+);
+version(WinCE)
+{
+BOOL TransparentImage(
+HDC hdcDest, 
+LONG DstX, 
+LONG DstY, 
+LONG DstCx, 
+LONG DstCy,
+HANDLE hSrc, 
+LONG SrcX, 
+LONG SrcY, 
+LONG SrcCx, 
+LONG SrcCy, 
+COLORREF TransparentColor
+);
+}
+BOOL UnhookWindowsHookEx(
+    HHOOK hhk   // handle to hook procedure to remove
+);
+BOOL UnregisterClassA(
+    LPCSTR lpClassName,  // address of class name string
+    HINSTANCE hInstance   // handle of application instance
+);
+BOOL UnregisterClassW(
+    LPCWSTR lpClassName,  // address of class name string
+    HINSTANCE hInstance   // handle of application instance
+);
+alias STDWIN.UpdateWindow UpdateWindow;
+alias STDWIN.ValidateRect ValidateRect;
+SHORT VkKeyScanA(char ch);
+SHORT VkKeyScanW(wchar ch);
+alias STDWIN.WaitForMultipleObjects WaitForMultipleObjects;
+alias STDWIN.WaitForSingleObject WaitForSingleObject;
+BOOL WaitMessage();
+alias STDWIN.WideCharToMultiByte WideCharToMultiByte;
+alias STDWIN.WindowFromDC WindowFromDC;
+alias STDWIN.WindowFromPoint WindowFromPoint;
+}
+
+extern (C)
+{
+    int wcslen(wchar* string);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/internal/win32/WINTYPES.d	Fri Jan 25 13:00:42 2008 +0100
@@ -0,0 +1,2075 @@
+/*
+ * This module declared types required by DWT but not in std.c.windows.windows
+ */
+ 
+module dwt.internal.win32.WINTYPES;
+
+public import tango.sys.win32.Types;
+
+// missing in tango
+//alias TLOGFONTA* LPLOGFONTA;
+//alias TLOGFONTA LOGFONTA;
+alias char CHAR;
+alias OPENFILENAME OPENFILENAMEW;
+alias OPENFILENAME OPENFILENAMEA;
+alias WNDCLASS   WNDCLASSA;
+alias WNDCLASSA* LPWNDCLASSA;
+
+
+// ....
+
+
+const int LF_FACESIZE = 32;
+const int LF_FULLFACESIZE = 64;
+
+alias HANDLE HIMC;
+alias HANDLE HTREEITEM;
+alias HANDLE HDWP;
+alias HANDLE HIMAGELIST;
+alias HANDLE HMONITOR;
+alias HANDLE HHOOK;
+alias HANDLE HDROP;
+//alias HANDLE *LPHANDLE;
+
+alias HRESULT WINOLEAPI;
+alias LPRECT LPCRECT;
+alias LPRECT LPCRECTL;
+alias DWORD LGRPID;
+//alias LONG LONG_PTR;
+alias ULONG ULONG_PTR;
+alias DWORD DWORD_PTR;
+alias int INT_PTR;
+//alias uint UINT_PTR;
+alias DWORD LCID;
+alias DWORD LCTYPE;
+alias USHORT COLOR16;
+
+alias POINT POINTL;
+
+alias long LONGLONG;
+alias ulong DWORDLONG;
+
+alias LONGLONG  *PLONGLONG;
+alias DWORDLONG *PDWORDLONG;
+alias size_t    SIZE_T;
+alias int       WPARAM_I;
+
+version(ANSI){
+    alias char  TCHAR;
+}else{
+    alias wchar TCHAR;
+}
+
+
+extern(Windows){
+
+/**
+ * Since Eclipse/SWT uses int as (msg, wparam, lparam) and some times check the value against (-1),
+ * but WNDPROC_I declared in windows header the (msg, wparam) is UINT which will never be -1 but 0xFFFF or 
+ * something else. This made some DWT API failed. to fix the problem, it better to declare (msg, wparam) 
+ * as int like Eclispe/SWT does. and we alias int to WPARAM_I.
+ */
+alias LRESULT function(HWND, int, int, int) WNDPROC_I;
+alias LRESULT function(int code, int wParam, LPARAM lParam) HOOKPROC_I;
+
+// Windows CALLBACK declaration here
+alias WNDPROC_I BFFCALLBACK;        // browse for fold 
+alias WNDPROC_I LPCCHOOKPROC_I;     // choose color
+alias WNDPROC_I LPCFHOOKPROC_I;     // choose font
+alias WNDPROC_I LPPRINTHOOKPROC_I;  // print hook
+alias WNDPROC_I LPSETUPHOOKPROC_I;  // print setup
+alias WNDPROC_I TIMERPROC_I;        // timer
+
+alias LRESULT function (
+    int code,       // hook code
+    int wParam,  // undefined
+    int lParam   // address of structure with message data
+) MESSAGEPROC;
+
+
+//alias BOOL function (
+//  HMONITOR hMonitor,  // handle to display monitor
+//  HDC hdcMonitor,     // handle to monitor-appropriate device context
+//  LPRECT lprcMonitor, // pointer to monitor intersection rectangle
+//  LPARAM dwData       // data passed from EnumDisplayMonitors
+//) MONITORENUMPROC;
+
+//alias int function(
+//  ENUMLOGFONT *lpelf,    // logical-font data
+//  NEWTEXTMETRIC *lpntm,  // physical-font data
+//  DWORD FontType,        // type of font
+//  LPARAM lParam          // application-defined data
+//)FONTENUMPROC;
+
+//alias int function(
+//  ENUMLOGFONTEX *lpelfe,    // logical-font data
+//  NEWTEXTMETRICEX *lpntme,  // physical-font data
+//  DWORD FontType,           // type of font
+//  LPARAM lParam             // application-defined data
+//)FONTENUMEXPROC;
+
+alias BOOL function (
+  LGRPID LanguageGroup,             // language-group identifier
+  TCHAR* lpLanguageGroupString,     // language-group identifier string
+  TCHAR* lpLanguageGroupNameString, // language-group name string 
+  DWORD dwFlags,                    // options
+  LONG_PTR  lParam                  // callback parameter
+)LANGUAGEGROUP_ENUMPROC;
+
+//alias BOOL function (
+//  TCHAR* lpLocaleString   // locale identifier string
+//)LOCALE_ENUMPROC;
+
+
+// end of Windows CALLBACK declaration
+
+
+
+//struct ABC { 
+//    int     abcA; 
+//    UINT    abcB; 
+//    int     abcC; 
+//}
+//alias ABC* PABC, LPABC;
+
+// declared in tango
+//struct ACCEL {
+//    align(1):
+//    BYTE   fVirt; 
+//    WORD   key; 
+//    WORD   cmd;
+//}
+//alias ACCEL* PACCEL, LPACCEL;
+
+// declared in phobos
+//struct BITMAP {
+//  int bmType;
+//  int bmWidth;
+//  int bmHeight;
+//  int bmWidthBytes;
+//  short bmPlanes;
+//  short bmBitsPixel;
+//  void* bmBits;
+//}
+
+//struct RGBQUAD { // rgbq 
+//    byte    rgbBlue; 
+//    byte    rgbGreen; 
+//    byte    rgbRed; 
+//    byte    rgbReserved; 
+//}
+
+// declared in phobos
+//struct BITMAPINFO { // bmi 
+//    BITMAPINFOHEADER bmiHeader; 
+//    RGBQUAD          bmiColors[1]; 
+//}
+
+//struct BITMAPINFOHEADER {
+//  int biSize;
+//  int biWidth;
+//  int biHeight;
+//  short biPlanes;
+//  short biBitCount;
+//  int biCompression;
+//  int biSizeImage;
+//  int biXPelsPerMeter;
+//  int biYPelsPerMeter;
+//  int biClrUsed;
+//  int biClrImportant;
+//}
+
+
+struct BROWSEINFOA {
+    HWND hwndOwner; 
+    LPCITEMIDLIST pidlRoot; 
+    LPSTR pszDisplayName; 
+    LPCSTR lpszTitle; 
+    UINT ulFlags; 
+    BFFCALLBACK lpfn;
+    LPARAM lParam; 
+    int iImage;
+}
+
+struct BROWSEINFOW {
+    HWND hwndOwner; 
+    LPCITEMIDLIST pidlRoot; 
+    LPWSTR pszDisplayName; 
+    LPCWSTR lpszTitle; 
+    UINT ulFlags; 
+    BFFCALLBACK lpfn;
+    LPARAM lParam; 
+    int iImage;
+}
+version(ANSI){
+    alias BROWSEINFOA BROWSEINFO;
+} else {
+    alias BROWSEINFOW BROWSEINFO;
+}
+alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO;
+
+//struct CHARSETINFO {
+//    UINT ciCharset;
+//    UINT ciACP;
+//    FONTSIGNATURE fs;
+//}alias CHARSETINFO* PCHARSETINFO, LPCHARSETINFO;
+
+
+struct CHOOSECOLORA {
+    DWORD        lStructSize; 
+    HWND         hwndOwner; 
+    HWND         hInstance; 
+    COLORREF     rgbResult; 
+    COLORREF*    lpCustColors; 
+    DWORD        Flags; 
+    LPARAM       lCustData; 
+    LPCCHOOKPROC_I lpfnHook; 
+    LPCSTR      lpTemplateName; 
+}
+alias CHOOSECOLORA* PCHOOSECOLORA, LPCHOOSECOLORA;
+struct CHOOSECOLORW {
+    DWORD        lStructSize; 
+    HWND         hwndOwner; 
+    HWND         hInstance; 
+    COLORREF     rgbResult; 
+    COLORREF*    lpCustColors; 
+    DWORD        Flags; 
+    LPARAM       lCustData; 
+    LPCCHOOKPROC_I lpfnHook; 
+    LPCWSTR      lpTemplateName; 
+}
+alias CHOOSECOLORW* PCHOOSECOLORW, LPCHOOSECOLORW;
+version(ANSI){
+    alias CHOOSECOLORA CHOOSECOLOR;
+}else{
+    alias CHOOSECOLORW CHOOSECOLOR;
+}
+alias CHOOSECOLOR* PCHOOSECOLOR, LPCHOOSECOLOR;
+
+
+struct CHOOSEFONTA {
+    // sizeof = 60 ???
+//  align(2):   
+    DWORD        lStructSize; 
+    HWND         hwndOwner; 
+    HDC          hDC; 
+    LPLOGFONTA   lpLogFont; 
+    INT          iPointSize; 
+    DWORD        Flags; 
+    DWORD        rgbColors; 
+    LPARAM       lCustData; 
+    LPCFHOOKPROC_I lpfnHook; 
+    LPCSTR      lpTemplateName; 
+    HINSTANCE    hInstance; 
+    LPSTR       lpszStyle; 
+    WORD         nFontType; 
+    WORD         ___MISSING_ALIGNMENT__; 
+    INT          nSizeMin; 
+    INT          nSizeMax;  
+}alias CHOOSEFONTA* PCHOOSEFONTA, LPCHOOSEFONTA;
+
+struct CHOOSEFONTW {
+    // sizeof = 60 ???
+//  align(2):   
+    DWORD        lStructSize; 
+    HWND         hwndOwner; 
+    HDC          hDC; 
+    LOGFONTW*    lpLogFont; 
+    INT          iPointSize; 
+    DWORD        Flags; 
+    DWORD        rgbColors; 
+    LPARAM       lCustData; 
+    LPCFHOOKPROC_I lpfnHook; 
+    LPCWSTR      lpTemplateName; 
+    HINSTANCE    hInstance; 
+    LPWSTR       lpszStyle; 
+    WORD         nFontType; 
+    WORD         ___MISSING_ALIGNMENT__; 
+    INT          nSizeMin; 
+    INT          nSizeMax;  
+}alias CHOOSEFONTW* PCHOOSEFONTW, LPCHOOSEFONTW;
+version(ANSI){
+    alias CHOOSEFONTA CHOOSEFONT;
+}else{
+    alias CHOOSEFONTW CHOOSEFONT;
+}
+
+struct COMBOBOXINFO {
+    DWORD cbSize;
+    RECT rcItem;
+    RECT rcButton;
+    DWORD stateButton;
+    HWND hwndCombo;
+    HWND hwndItem;
+    HWND hwndList;
+} alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO;
+
+//struct COMPOSITIONFORM {
+//    DWORD dwStyle;
+//    POINT ptCurrentPos;
+//    RECT rcArea;
+//}
+//alias COMPOSITIONFORM* LPCOMPOSITIONFORM;
+
+struct CREATESTRUCT {
+    int lpCreateParams; 
+    HINSTANCE hInstance; 
+    HMENU hMenu; 
+    HWND hwndParent; 
+    int cy; 
+    int cx; 
+    int y; 
+    int x; 
+    int style; 
+    int lpszName; 
+    int lpszClass; 
+    int dwExStyle;  
+}
+
+const uint CCHDEVICENAME = 32;
+const uint CCHFORMNAME = 32;
+
+struct DEVMODEA {    // dvmd 
+    BYTE   dmDeviceName[CCHDEVICENAME]; 
+    WORD   dmSpecVersion; 
+    WORD   dmDriverVersion; 
+    WORD   dmSize; 
+    WORD   dmDriverExtra; 
+    DWORD  dmFields; 
+//    union {
+//      struct {
+//        short dmOrientation;
+//        short dmPaperSize;
+//        short dmPaperLength;
+//        short dmPaperWidth;
+//      };
+//      POINTL dmPosition;
+//    };
+    POINT  dmPosition;
+    short  dmScale; 
+    short  dmCopies; 
+    short  dmDefaultSource; 
+    short  dmPrintQuality; 
+    short  dmColor; 
+    short  dmDuplex; 
+    short  dmYResolution; 
+    short  dmTTOption; 
+    short  dmCollate; 
+    BYTE  dmFormName[CCHFORMNAME]; 
+    WORD  dmLogPixels; 
+    DWORD  dmBitsPerPel; 
+    DWORD  dmPelsWidth; 
+    DWORD  dmPelsHeight; 
+    DWORD  dmDisplayFlags; 
+    DWORD  dmDisplayFrequency; 
+//#if(WINVER >= 0x0400) 
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+//#endif
+//#endif /* WINVER >= 0x0400 */
+} 
+
+struct DEVMODEW {    // dvmd 
+    WCHAR  dmDeviceName[CCHDEVICENAME]; 
+    WORD   dmSpecVersion; 
+    WORD   dmDriverVersion; 
+    WORD   dmSize; 
+    WORD   dmDriverExtra; 
+    DWORD  dmFields; 
+//    union {
+//      struct {
+//        short dmOrientation;
+//        short dmPaperSize;
+//        short dmPaperLength;
+//        short dmPaperWidth;
+//      };
+      POINTL dmPosition;
+//    };
+    short  dmScale; 
+    short  dmCopies; 
+    short  dmDefaultSource; 
+    short  dmPrintQuality; 
+    short  dmColor; 
+    short  dmDuplex; 
+    short  dmYResolution; 
+    short  dmTTOption; 
+    short  dmCollate; 
+    WCHAR dmFormName[CCHFORMNAME]; 
+    WORD  dmLogPixels; 
+    DWORD  dmBitsPerPel; 
+    DWORD  dmPelsWidth; 
+    DWORD  dmPelsHeight; 
+    DWORD  dmDisplayFlags; 
+    DWORD  dmDisplayFrequency; 
+//#if(WINVER >= 0x0400) 
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+//#endif
+//#endif /* WINVER >= 0x0400 */
+}
+
+//PORTING_TODO: defined in tango
+//version(ANSI){
+//    alias DEVMODEA DEVMODE;
+//}else{
+//    alias DEVMODEW DEVMODE;
+//}
+struct DEVNAMES {
+    WORD wDriverOffset;
+    WORD wDeviceOffset;
+    WORD wOutputOffset;
+    WORD wDefault;
+}
+
+struct DIBSECTION {
+    // BITMAP
+    int bmType;
+    int bmWidth;
+    int bmHeight;
+    int bmWidthBytes;
+    short bmPlanes;
+    short bmBitsPixel;
+    void* bmBits;
+    // end BITMAP   
+    int biSize;
+    int biWidth;
+    int biHeight;
+    short biPlanes;
+    short biBitCount;
+    int biCompression;
+    int biSizeImage;
+    int biXPelsPerMeter;
+    int biYPelsPerMeter;
+    int biClrUsed;
+    int biClrImportant;
+    int dsBitfields0;
+    int dsBitfields1;
+    int dsBitfields2;
+    int dshSection;
+    int dsOffset;
+}
+
+struct DLLVERSIONINFO {
+    DWORD cbSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformID;
+}
+
+struct DOCINFOA {
+    int     cbSize;
+    LPCSTR   lpszDocName;
+    LPCSTR   lpszOutput;
+    LPCSTR   lpszDatatype;
+    DWORD    fwType;
+}
+
+struct DOCINFOW {
+    int     cbSize;
+    LPCWSTR  lpszDocName;
+    LPCWSTR  lpszOutput;
+    LPCWSTR  lpszDatatype;
+    DWORD    fwType;
+} 
+version(ANSI){
+    alias DOCINFOA DOCINFO; 
+}else{
+    alias DOCINFOW DOCINFO;
+}
+alias DOCINFO* LPDOCINFO;
+
+
+struct DRAWITEMSTRUCT {
+    UINT  CtlType; 
+    UINT  CtlID; 
+    UINT  itemID; 
+    UINT  itemAction; 
+    UINT  itemState; 
+    HWND  hwndItem; 
+    HDC   hDC; 
+    RECT  rcItem; 
+    DWORD itemData;
+}
+
+struct DROPFILES {
+    DWORD  pFiles; // Offset of the file list from the beginning of this structure, in bytes.
+    POINT pt; // Drop point. The coordinates depend on fNC.
+    BOOL fNC;   // Nonclient area flag. If this member is TRUE, pt specifies the screen 
+                      // coordinates of a point in a window's nonclient area. If it is FALSE, 
+                      // pt specifies the client coordinates of a point in the client area. 
+    BOOL fWide; // Value that indicates whether the file contains ANSI or Unicode 
+                      // characters. If it is zero, it contains ANSI characters. Otherwise, it 
+                      // contains Unicode characters.
+    
+}
+
+
+struct ENUMLOGFONTA { 
+  LOGFONTA elfLogFont; 
+  CHAR   elfFullName[LF_FULLFACESIZE]; 
+  CHAR   elfStyle[LF_FACESIZE]; 
+} 
+struct ENUMLOGFONTW { 
+  LOGFONTW elfLogFont; 
+  WCHAR   elfFullName[LF_FULLFACESIZE]; 
+  WCHAR   elfStyle[LF_FACESIZE]; 
+}
+struct ENUMLOGFONTEXA {
+    LOGFONTA  elfLogFont;
+    BYTE  elfFullName[LF_FULLFACESIZE];
+    BYTE  elfStyle[LF_FACESIZE];
+    BYTE  elfScript[LF_FACESIZE];
+}
+struct ENUMLOGFONTEXW {
+    LOGFONTW  elfLogFont;
+    WCHAR  elfFullName[LF_FULLFACESIZE];
+    WCHAR  elfStyle[LF_FACESIZE];
+    WCHAR  elfScript[LF_FACESIZE];
+}
+version(ANSI){
+    alias ENUMLOGFONTA ENUMLOGFONT;
+    alias ENUMLOGFONTEXA ENUMLOGFONTEX;
+}else {
+    alias ENUMLOGFONTW ENUMLOGFONT;
+    alias ENUMLOGFONTEXW ENUMLOGFONTEX;
+}
+
+// in phobos aready
+//struct FILETIME {
+//    DWORD dwLowDateTime; 
+//    DWORD dwHighDateTime; 
+//}
+
+struct FONTSIGNATURE {
+    DWORD  fsUsb[4];
+    DWORD  fsCsb[2];
+}
+
+struct GCP_RESULTSA {
+    DWORD   lStructSize;
+    LPSTR     lpOutString;
+    UINT  *lpOrder;
+    int   *lpDx;
+    int   *lpCaretPos;
+    LPSTR   lpClass;
+    LPWSTR  lpGlyphs;
+    UINT    nGlyphs;
+    int     nMaxFit;
+} 
+
+struct GCP_RESULTSW {
+    DWORD   lStructSize;
+    LPWSTR    lpOutString;
+    UINT  *lpOrder;
+    int   *lpDx;
+    int   *lpCaretPos;
+    LPSTR   lpClass;
+    LPWSTR  lpGlyphs;
+    UINT    nGlyphs;
+    int     nMaxFit;
+}
+version(ANSI){
+    alias GCP_RESULTSA GCP_RESULTS;
+}else{
+    alias GCP_RESULTSW GCP_RESULTS;
+}
+//alias GCP_RESULTS* LPGCP_RESULTS;
+
+
+struct GOFFSET {
+  LONG  du;
+  LONG  dv;
+}
+
+struct GRADIENT_RECT {
+  ULONG    UpperLeft;
+  ULONG    LowerRight;
+}
+
+struct GUITHREADINFO {
+    DWORD cbSize;
+    DWORD flags;
+    HWND hwndActive;
+    HWND hwndFocus;
+    HWND hwndCapture;
+    HWND hwndMenuOwner;
+    HWND hwndMoveSize;
+    HWND hwndCaret;
+    RECT rcCaret;
+}alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO;
+
+struct HDITEMA {
+    UINT    mask; 
+    int     cxy; 
+    LPSTR  pszText; 
+    HBITMAP hbm; 
+    int     cchTextMax; 
+    int     fmt; 
+    LPARAM  lParam; 
+    int     iImage;
+    int     iOrder;
+}
+struct HDITEMW {
+    UINT    mask; 
+    int     cxy; 
+    LPWSTR  pszText; 
+    HBITMAP hbm; 
+    int     cchTextMax; 
+    int     fmt; 
+    LPARAM  lParam; 
+    int     iImage;
+    int     iOrder;
+}
+version(ANSI){
+    alias HDITEMA HDITEM;
+}else{
+    alias HDITEMW HDITEM;
+}
+alias HDITEM* LPHDITEM;
+
+struct HELPINFO {
+    UINT     cbSize; 
+    int      iContextType;
+    int      iCtrlId; 
+    HANDLE   hItemHandle; 
+    DWORD    dwContextId; 
+    POINT    MousePos;
+}
+
+struct HIGHCONTRASTA {
+    UINT             cbSize; 
+    DWORD            dwFlags; 
+    LPSTR           lpszDefaultScheme; 
+}
+struct HIGHCONTRASTW {
+    UINT             cbSize; 
+    DWORD            dwFlags; 
+    LPWSTR           lpszDefaultScheme; 
+}
+version(ANSI){
+    alias HIGHCONTRASTA HIGHCONTRAST;
+}else{
+    alias HIGHCONTRASTW HIGHCONTRAST;
+}
+
+
+//struct ICONINFO {
+//   BOOL    fIcon; 
+//   DWORD   xHotspot; 
+//   DWORD   yHotspot; 
+//   HBITMAP hbmMask; 
+//   HBITMAP hbmColor;
+//}
+//alias ICONINFO*  PICONINFO, LPICONINFO;
+
+struct INITCOMMONCONTROLSEX {
+    DWORD dwSize;
+    DWORD dwICC;
+}alias INITCOMMONCONTROLSEX* PINITCOMMONCONTROLSEX, LPINITCOMMONCONTROLSEX;
+
+struct INPUT {
+    // Note: <Shawn> sizeof = 28
+    int type;
+//  union {
+        MOUSEINPUT mi; 
+//        KEYBOARDINPUT ki;
+//        HARDWAREINPUT hi;
+//    }
+}alias INPUT* PINPUT, LPINPUT;
+
+//struct ITEMIDLIST {
+//    SHITEMID mkid;
+//}
+//alias ITEMIDLIST* PITEMIDLIST, LPITEMIDLIST, LPCITEMIDLIST;
+
+struct KEYBDINPUT {
+    WORD wVk;
+    WORD wScan;
+    DWORD dwFlags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+}
+
+union LARGE_INTEGER {
+    struct {
+        DWORD LowPart;
+        LONG HighPart;
+    };
+    struct u {
+        DWORD LowPart;
+        LONG HighPart;
+    };
+    LONGLONG QuadPart;
+}
+alias LARGE_INTEGER * PLARGE_INTEGER;
+
+
+struct LOGBRUSH {
+  UINT     lbStyle; 
+  COLORREF lbColor; 
+  LONG     lbHatch; 
+}
+
+struct LOGFONTA {
+  int lfHeight;    
+  int lfWidth;    
+  int lfEscapement; 
+  int lfOrientation;    
+  int lfWeight;    
+  byte lfItalic;    
+  byte lfUnderline; 
+  byte lfStrikeOut;    
+  byte lfCharSet;    
+  byte lfOutPrecision; 
+  byte lfClipPrecision;    
+  byte lfQuality;    
+  byte lfPitchAndFamily;
+  char lfFaceName[LF_FACESIZE];   
+}
+alias LOGFONTA* LPLOGFONTA;
+
+//struct LOGFONTW {
+//   LONG lfHeight; 
+//   LONG lfWidth; 
+//   LONG lfEscapement; 
+//   LONG lfOrientation; 
+//   LONG lfWeight; 
+//   BYTE lfItalic; 
+//   BYTE lfUnderline; 
+//   BYTE lfStrikeOut; 
+//   BYTE lfCharSet; 
+//   BYTE lfOutPrecision; 
+//   BYTE lfClipPrecision; 
+//   BYTE lfQuality; 
+//   BYTE lfPitchAndFamily; 
+//   WCHAR lfFaceName[LF_FACESIZE];   
+//}
+//alias LOGFONTW* PLOGFONTW, LPLOGFONTW;
+version(ANSI){
+    alias LOGFONTA LOGFONT;
+} else {
+    alias LOGFONTW LOGFONT;
+}
+
+
+struct LOGPEN {
+    UINT     lopnStyle; 
+    POINT    lopnWidth; 
+    COLORREF lopnColor;
+}
+
+struct LVCOLUMNA { 
+    UINT mask; 
+    int fmt; 
+    int cx; 
+    LPSTR pszText; 
+    int cchTextMax; 
+    int iSubItem; 
+    int iImage;
+    int iOrder;
+}
+struct LVCOLUMNW { 
+    UINT mask; 
+    int fmt; 
+    int cx; 
+    LPWSTR pszText; 
+    int cchTextMax; 
+    int iSubItem; 
+    int iImage;
+    int iOrder;
+} 
+version(ANSI){
+    alias LVCOLUMNA LVCOLUMN;
+}else{
+    alias LVCOLUMNW LVCOLUMN;
+}
+alias LVCOLUMN* LPLVCOLUMN;
+
+struct LVFINDINFOA {
+    UINT flags;
+    LPCSTR psz;
+    LPARAM lParam;
+    POINT pt;
+    UINT vkDirection;
+} 
+alias LVFINDINFOA* LPFINDINFOA;
+struct LVFINDINFOW {
+    UINT flags;
+    LPCWSTR psz;
+    LPARAM lParam;
+    POINT pt;
+    UINT vkDirection;
+} 
+alias LVFINDINFOW* LPFINDINFOW;
+
+version(ANSI){
+    alias LVFINDINFOA LVFINDINFO;
+}else{
+    alias LVFINDINFOW LVFINDINFO;
+}
+
+struct LVHITTESTINFO {
+    POINT pt; 
+    UINT flags; 
+    int iItem; 
+    int iSubItem;
+}
+
+
+struct LVITEMA { 
+    UINT   mask; 
+    int    iItem; 
+    int    iSubItem; 
+    UINT   state; 
+    UINT   stateMask; 
+    LPSTR  pszText; 
+    int    cchTextMax; 
+    int    iImage; 
+    LPARAM lParam;
+    int iIndent;
+} 
+struct LVITEMW { 
+    UINT   mask; 
+    int    iItem; 
+    int    iSubItem; 
+    UINT   state; 
+    UINT   stateMask; 
+    LPWSTR  pszText; 
+    int    cchTextMax; 
+    int    iImage; 
+    LPARAM lParam;
+    int iIndent;
+} 
+version(ANSI){
+    alias LVITEMA LVITEM;
+}else{
+    alias LVITEMW LVITEM;
+}
+alias LVITEM* LPLVITEM;
+
+struct MARGINS {
+    int cxLeftWidth;
+    int cxRightWidth;
+    int cyTopHeight;
+    int cyBottomHeight;
+}
+
+struct MEASUREITEMSTRUCT {
+    UINT   CtlType;
+    UINT   CtlID;
+    UINT   itemID;
+    UINT   itemWidth;
+    UINT   itemHeight;
+    DWORD  itemData;
+}
+
+struct MENUBARINFO {
+  DWORD cbSize;
+  RECT  rcBar;
+  HMENU hMenu;
+  HWND  hwndMenu;
+  BOOL  fBarFocused;
+  BOOL  fFocused;
+}alias MENUBARINFO* PMENUBARINFO, LPMENUBARINFO;
+
+struct MENUINFO {
+  DWORD   cbSize;
+  DWORD   fMask;
+  DWORD   dwStyle;
+  UINT    cyMax;
+  HBRUSH  hbrBack;
+  DWORD   dwContextHelpID;
+  ULONG_PTR  dwMenuData;
+}
+alias MENUINFO* PCMENUINFO, LPCMENUINFO, LPCCMENUINFO; 
+
+/*
+* Feature in Windows.  The hbmpItem field requires Windows 4.10
+* or greater.  On Windows NT 4.0, passing in a larger struct size
+* in the cbSize field does nothing.  On Windows 95, the MENUITEMINFO
+* calls fail when the struct size is too large.  The fix is to ensure
+* that the correct struct size is used for the Windows platform.
+*/
+struct MENUITEMINFOA
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fType;          // used if MIIM_TYPE
+    UINT    fState;         // used if MIIM_STATE
+    UINT    wID;            // used if MIIM_ID
+    HMENU   hSubMenu;       // used if MIIM_SUBMENU
+    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+    DWORD   dwItemData;     // used if MIIM_DATA
+    LPSTR   dwTypeData;     // used if MIIM_TYPE
+    UINT    cch;            // used if MIIM_TYPE
+    HBITMAP hbmpItem;
+}   
+alias MENUITEMINFOA* PMENUITEMINFOA, LPMENUITEMINFOA;
+struct MENUITEMINFOW
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fType;          // used if MIIM_TYPE
+    UINT    fState;         // used if MIIM_STATE
+    UINT    wID;            // used if MIIM_ID
+    HMENU   hSubMenu;       // used if MIIM_SUBMENU
+    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+    DWORD   dwItemData;     // used if MIIM_DATA
+    LPWSTR  dwTypeData;     // used if MIIM_TYPE
+    UINT    cch;            // used if MIIM_TYPE
+    HBITMAP hbmpItem;
+}   alias MENUITEMINFOW* PMENUITEMINFOW, LPMENUITEMINFOW;
+//version(ANSI){
+//    alias MENUITEMINFOA MENUITEMINFO;
+//}else{
+//    alias MENUITEMINFOW MENUITEMINFO;
+//}
+//alias MENUITEMINFO * LPMENUITEMINFO;
+
+
+struct MINMAXINFO {
+    POINT ptReserved;
+    POINT ptMaxSize;
+    POINT ptMaxPosition;
+    POINT ptMinTrackSize;
+    POINT ptMaxTrackSize;
+}
+
+//struct MONITORINFO {
+//    DWORD  cbSize; 
+//    RECT   rcMonitor; 
+//    RECT   rcWork; 
+//    DWORD  dwFlags;
+//}
+//alias MONITORINFO* PMONITORINFO, LPMONITORINFO; 
+
+struct MOUSEINPUT {
+    LONG    dx;
+    LONG    dy;
+    DWORD   mouseData;
+    DWORD   dwFlags;
+    DWORD   dwExtraInfo;
+}
+
+//struct MSG {
+//  int hwnd;     
+//  int message; 
+//  int wParam; 
+//  int lParam; 
+//  int time; 
+////    POINT pt;
+//  int x, y;
+//}
+
+struct NEWTEXTMETRICA { // ntm 
+    LONG   tmHeight; 
+    LONG   tmAscent; 
+    LONG   tmDescent; 
+    LONG   tmInternalLeading; 
+    LONG   tmExternalLeading; 
+    LONG   tmAveCharWidth; 
+    LONG   tmMaxCharWidth; 
+    LONG   tmWeight; 
+    LONG   tmOverhang; 
+    LONG   tmDigitizedAspectX; 
+    LONG   tmDigitizedAspectY; 
+    BYTE  tmFirstChar; 
+    BYTE  tmLastChar; 
+    BYTE  tmDefaultChar; 
+    BYTE  tmBreakChar; 
+    BYTE   tmItalic; 
+    BYTE   tmUnderlined; 
+    BYTE   tmStruckOut; 
+    BYTE   tmPitchAndFamily; 
+    BYTE   tmCharSet; 
+    DWORD  ntmFlags; 
+    UINT   ntmSizeEM; 
+    UINT   ntmCellHeight; 
+    UINT   ntmAvgWidth; 
+} 
+struct NEWTEXTMETRICW { // ntm 
+    LONG   tmHeight; 
+    LONG   tmAscent; 
+    LONG   tmDescent; 
+    LONG   tmInternalLeading; 
+    LONG   tmExternalLeading; 
+    LONG   tmAveCharWidth; 
+    LONG   tmMaxCharWidth; 
+    LONG   tmWeight; 
+    LONG   tmOverhang; 
+    LONG   tmDigitizedAspectX; 
+    LONG   tmDigitizedAspectY; 
+    WCHAR  tmFirstChar; 
+    WCHAR  tmLastChar; 
+    WCHAR  tmDefaultChar; 
+    WCHAR  tmBreakChar; 
+    BYTE   tmItalic; 
+    BYTE   tmUnderlined; 
+    BYTE   tmStruckOut; 
+    BYTE   tmPitchAndFamily; 
+    BYTE   tmCharSet; 
+    DWORD  ntmFlags; 
+    UINT   ntmSizeEM; 
+    UINT   ntmCellHeight; 
+    UINT   ntmAvgWidth; 
+} 
+struct NEWTEXTMETRICEXA {
+    NEWTEXTMETRICA  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+struct NEWTEXTMETRICEXW {
+    NEWTEXTMETRICW  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+version(ANSI){
+    alias NEWTEXTMETRICA NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+}else{
+    alias NEWTEXTMETRICW NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+}
+
+struct NMCUSTOMDRAW {
+    NMHDR  hdr;
+    DWORD  dwDrawStage;
+    HDC    hdc;
+    RECT   rc;
+    DWORD  dwItemSpec;
+    UINT   uItemState;
+    LPARAM lItemlParam;
+}
+
+struct NMHDR {
+    HWND  hwndFrom;
+    UINT  idFrom;
+    UINT  code;        
+}
+
+struct NMHEADER {
+    NMHDR    hdr;
+    int      iItem;
+    int      iButton;
+    HDITEM  *pitem;
+}
+
+struct NMLISTVIEW {
+    NMHDR   hdr;
+    int     iItem;
+    int     iSubItem;
+    UINT    uNewState;
+    UINT    uOldState;
+    UINT    uChanged;
+    POINT   ptAction;
+    LPARAM  lParam;
+}
+
+struct NMLVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+//#if (_WIN32_IE >= 0x0400)
+    int iSubItem;
+//#endif
+}
+
+struct NMLVDISPINFOA {
+    NMHDR hdr;
+    LVITEMA item;
+}
+struct NMLVDISPINFOW {
+    NMHDR hdr;
+    LVITEMW item;
+}
+version(ANSI){
+    alias NMLVDISPINFOA NMLVDISPINFO;
+}else{
+    alias NMLVDISPINFOW NMLVDISPINFO;
+}
+
+struct NMLVFINDITEMA {
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOA lvfi;
+}
+
+struct NMLVFINDITEMW {
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOW lvfi;
+}
+version(ANSI){
+    alias NMLVFINDITEMA NMLVFINDITEM;
+}else{
+    alias NMLVFINDITEMW NMLVFINDITEM;
+}
+
+struct NMREBARCHEVRON {
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    LPARAM lParam;
+    RECT rc;
+    LPARAM lParamNM;
+}
+
+struct NMRGINFO {
+    // NMHDR
+    HWND hwndFrom; 
+    int idFrom; 
+    int code;
+    // -end- NMHDR  
+//  POINT ptAction;
+    int x;
+    int y;
+    int dwItemSpec;
+}
+struct NMTOOLBARA {
+    align(2):
+    NMHDR    hdr;
+    int      iItem;
+    TBBUTTON tbButton;
+    int      cchText;
+    LPSTR   pszText;
+} 
+struct NMTOOLBARW {
+    align(2):
+    NMHDR    hdr;
+    int      iItem;
+    TBBUTTON tbButton;
+    int      cchText;
+    LPWSTR   pszText;
+}
+version(ANSI){
+    alias NMTOOLBARA NMTOOLBAR;
+}else{
+    alias NMTOOLBARW NMTOOLBAR;
+}
+alias NMTOOLBAR* LPNMTOOLBAR;
+
+
+struct NMTTDISPINFOA {
+    NMHDR hdr;
+    LPSTR lpszText;
+    char szText[80];
+    HINSTANCE hinst;
+    UINT uFlags;
+    LPARAM lParam;
+}
+
+struct NMTTDISPINFOW {
+    NMHDR hdr;
+    LPWSTR lpszText;
+    WCHAR szText[80];
+    HINSTANCE hinst;
+    UINT uFlags;
+    LPARAM lParam;
+}
+version(ANSI){
+    alias NMTTDISPINFOA NMTTDISPINFO;
+} else {
+    alias NMTTDISPINFOW NMTTDISPINFO;
+}
+
+struct NMTVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+//#if (_WIN32_IE &gt;= 0x0400)
+    int iLevel; // the iLevel field does not appear on WinCE
+//#endif
+}
+
+version(ANSI){
+    alias NONCLIENTMETRICSA NONCLIENTMETRICS;
+} else {
+    alias NONCLIENTMETRICSW NONCLIENTMETRICS;
+}
+struct NONCLIENTMETRICSA {
+    int cbSize; 
+    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; 
+}
+struct NONCLIENTMETRICSW {
+    int cbSize; 
+    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; 
+}
+
+struct NOTIFYICONDATAA {
+    DWORD cbSize;
+    HWND hWnd;
+    UINT uID;
+    UINT uFlags;
+    UINT uCallbackMessage;
+    HICON hIcon;
+    char szTip[64];
+    DWORD dwState;
+    DWORD dwStateMask;
+    char szInfo[256];
+//  union {
+//      UINT uTimeout;
+        UINT uVersion;
+//  };
+    char szInfoTitle[64];
+    DWORD dwInfoFlags;
+//  GUID guidItem;
+} alias NOTIFYICONDATAA* PNOTIFYICONDATAA, LPNOTIFYICONDATAA;
+
+struct NOTIFYICONDATAW {
+    DWORD cbSize;
+    HWND hWnd;
+    UINT uID;
+    UINT uFlags;
+    UINT uCallbackMessage;
+    HICON hIcon;
+    WCHAR szTip[64];
+    DWORD dwState;
+    DWORD dwStateMask;
+    WCHAR szInfo[256];
+//  union {
+//      UINT uTimeout;
+        UINT uVersion;
+//  };
+    WCHAR szInfoTitle[64];
+    DWORD dwInfoFlags;
+//  GUID guidItem;
+}
+alias NOTIFYICONDATAW* PNOTIFYICONDATAW, LPNOTIFYICONDATAW;
+version(ANSI){
+    alias NOTIFYICONDATAA NOTIFYICONDATA;
+}else{
+    alias NOTIFYICONDATAW NOTIFYICONDATA;
+}
+
+/* already in phobos now
+
+struct OPENFILENAMEA {
+   DWORD        lStructSize;
+   HWND         hwndOwner;
+   HINSTANCE    hInstance;
+   LPCSTR       lpstrFilter;
+   LPSTR        lpstrCustomFilter;
+   DWORD        nMaxCustFilter;
+   DWORD        nFilterIndex;
+   LPSTR        lpstrFile;
+   DWORD        nMaxFile;
+   LPSTR        lpstrFileTitle;
+   DWORD        nMaxFileTitle;
+   LPCSTR       lpstrInitialDir;
+   LPCSTR       lpstrTitle;
+   DWORD        Flags;
+   WORD         nFileOffset;
+   WORD         nFileExtension;
+   LPCSTR       lpstrDefExt;
+   LPARAM       lCustData;
+   LPOFNHOOKPROC lpfnHook;
+   LPCSTR       lpTemplateName;
+}
+
+struct OPENFILENAMEW {
+   DWORD        lStructSize;
+   HWND         hwndOwner;
+   HINSTANCE    hInstance;
+   LPCWSTR      lpstrFilter;
+   LPWSTR       lpstrCustomFilter;
+   DWORD        nMaxCustFilter;
+   DWORD        nFilterIndex;
+   LPWSTR       lpstrFile;
+   DWORD        nMaxFile;
+   LPWSTR       lpstrFileTitle;
+   DWORD        nMaxFileTitle;
+   LPCWSTR      lpstrInitialDir;
+   LPCWSTR      lpstrTitle;
+   DWORD        Flags;
+   WORD         nFileOffset;
+   WORD         nFileExtension;
+   LPCWSTR      lpstrDefExt;
+   LPARAM       lCustData;
+   LPOFNHOOKPROC lpfnHook;
+   LPCWSTR      lpTemplateName;
+}
+*/
+
+//PORTING_TODO: is needed?
+//version(ANSI){
+//    alias OPENFILENAMEA OPENFILENAME;
+//}else{
+//    alias OPENFILENAMEW OPENFILENAME;
+//}
+
+
+struct OSVERSIONINFOA {
+    DWORD dwOSVersionInfoSize; 
+    DWORD dwMajorVersion; 
+    DWORD dwMinorVersion; 
+    DWORD dwBuildNumber; 
+    DWORD dwPlatformId; 
+    CHAR szCSDVersion[ 128 ];
+}alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA;
+
+struct OSVERSIONINFOW {
+    DWORD dwOSVersionInfoSize; 
+    DWORD dwMajorVersion; 
+    DWORD dwMinorVersion; 
+    DWORD dwBuildNumber; 
+    DWORD dwPlatformId; 
+    WCHAR szCSDVersion[ 128 ];
+}alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW;
+version(ANSI){
+    alias OSVERSIONINFOA OSVERSIONINFO;
+}else{
+    alias OSVERSIONINFOW OSVERSIONINFO;
+}
+//struct PAINTSTRUCT {
+//  int hdc; 
+//  int fErase;
+////    RECT rcPaint;
+//  public int left, top, right, bottom;
+//  int fRestore; 
+//  int fIncUpdate; 
+//  byte rgbReserved[32]; 
+//}
+//alias windows.PAINTSTRUCT PAINTSTRUCT;
+
+//struct POINT {
+//  LONG x, y;
+//}
+
+
+struct PRINTDLGA {  // pd 
+    align(2):
+    DWORD     lStructSize; 
+    HWND      hwndOwner; 
+    HANDLE    hDevMode; 
+    HANDLE    hDevNames; 
+    HDC       hDC; 
+    DWORD     Flags; 
+    WORD      nFromPage; 
+    WORD      nToPage; 
+    WORD      nMinPage; 
+    WORD      nMaxPage; 
+    WORD      nCopies; 
+    HINSTANCE hInstance; 
+    DWORD     lCustData; 
+    LPPRINTHOOKPROC_I lpfnPrintHook; 
+    LPSETUPHOOKPROC_I lpfnSetupHook; 
+    LPCSTR    lpPrintTemplateName; 
+    LPCSTR    lpSetupTemplateName; 
+    HANDLE    hPrintTemplate; 
+    HANDLE    hSetupTemplate; 
+}
+alias PRINTDLGA* PPRINTDLGA, LPPRINTDLGA;
+struct PRINTDLGW {  // pd 
+    align(2):
+    DWORD     lStructSize; 
+    HWND      hwndOwner; 
+    HANDLE    hDevMode; 
+    HANDLE    hDevNames; 
+    HDC       hDC; 
+    DWORD     Flags; 
+    WORD      nFromPage; 
+    WORD      nToPage; 
+    WORD      nMinPage; 
+    WORD      nMaxPage; 
+    WORD      nCopies; 
+    HINSTANCE hInstance; 
+    DWORD     lCustData; 
+    LPPRINTHOOKPROC_I lpfnPrintHook; 
+    LPSETUPHOOKPROC_I lpfnSetupHook; 
+    LPCWSTR    lpPrintTemplateName; 
+    LPCWSTR    lpSetupTemplateName; 
+    HANDLE    hPrintTemplate; 
+    HANDLE    hSetupTemplate; 
+}
+alias PRINTDLGW* PPRINTDLGW, LPPRINTDLGW;
+version(ANSI){
+    alias PRINTDLGA PRINTDLG;
+}else{
+    alias PRINTDLGW PRINTDLG;
+}
+
+struct REBARBANDINFOA {
+    UINT        cbSize;
+    UINT        fMask;
+    UINT        fStyle;
+    COLORREF    clrFore;
+    COLORREF    clrBack;
+    LPSTR      lpText;
+    UINT        cch;
+    int         iImage;
+    HWND        hwndChild;
+    UINT        cxMinChild;
+    UINT        cyMinChild;
+    UINT        cx;
+    HBITMAP     hbmBack;
+    UINT        wID;
+    UINT        cyChild;  
+    UINT        cyMaxChild;
+    UINT        cyIntegral;
+    UINT        cxIdeal;
+    LPARAM      lParam;
+    UINT        cxHeader;
+    /* Note in WinCE.  The field cxHeader is not defined. */ 
+}
+struct REBARBANDINFOW {
+    UINT        cbSize;
+    UINT        fMask;
+    UINT        fStyle;
+    COLORREF    clrFore;
+    COLORREF    clrBack;
+    LPWSTR      lpText;
+    UINT        cch;
+    int         iImage;
+    HWND        hwndChild;
+    UINT        cxMinChild;
+    UINT        cyMinChild;
+    UINT        cx;
+    HBITMAP     hbmBack;
+    UINT        wID;
+    UINT        cyChild;  
+    UINT        cyMaxChild;
+    UINT        cyIntegral;
+    UINT        cxIdeal;
+    LPARAM      lParam;
+    UINT        cxHeader;
+    /* Note in WinCE.  The field cxHeader is not defined. */ 
+}
+version(ANSI){
+    alias REBARBANDINFOA REBARBANDINFO;
+}else{
+    alias REBARBANDINFOW REBARBANDINFO;
+}
+
+//struct RECT {
+//  int left;
+//  int top;
+//  int right;
+//  int bottom;
+//}
+
+//struct RGNDATA { 
+//    RGNDATAHEADER rdh; 
+//    char          Buffer[1]; 
+//} alias RGNDATA* PRGNDATA, LPRGNDATA; 
+
+struct RGNDATAHEADER { 
+    DWORD dwSize; 
+    DWORD iType; 
+    DWORD nCount; 
+    DWORD nRgnSize; 
+    RECT  rcBound; 
+} alias RGNDATAHEADER* PRGNDATAHEADER, LPRGNDATAHEADER; 
+
+
+template BITWISE(T)
+{
+    // bit value set
+    void btvs(T* pData, uint bitnum, uint val){
+        *pData &=  ~(0x01 << bitnum);
+        if(val) *pData |= (0x01 << bitnum); 
+    }
+    // bit value get
+    T btvg(T* pData, uint bitnum){
+        return cast(T)((*pData >> bitnum) & 0x01);
+    }
+}
+alias BITWISE!(BYTE).btvs btvs;
+alias BITWISE!(WORD).btvs btvs;
+alias BITWISE!(DWORD).btvs btvs;
+alias BITWISE!(BYTE).btvg btvg;
+alias BITWISE!(WORD).btvg btvg;
+alias BITWISE!(DWORD).btvg btvg;
+
+
+struct SCRIPT_ANALYSIS {
+    WORD BITS;
+    SCRIPT_STATE s;
+
+    // getter
+    uint eScript()      { return BITS & 0x03FFU; }
+    uint fRTL()         { return btvg(&BITS, 10); }
+    uint fLayoutRTL()   { return btvg(&BITS, 11); } 
+    uint fLinkBefore()  { return btvg(&BITS, 12); }
+    uint fLinkAfter()   { return btvg(&BITS, 13); }
+    uint fLogicalOrder(){ return btvg(&BITS, 14); }
+    uint fNoGlyphIndex(){ return btvg(&BITS, 15); }
+    // setter
+    void eScript(uint val)      { BITS &= 0xFC00; BITS |= (val & 0x03FF); }
+    void fRTL(uint val)         { btvs(&BITS, 10, val); }
+    void fLayoutRTL(uint val)   { btvs(&BITS, 11, val); }
+    void fLinkBefore(uint val)  { btvs(&BITS, 12, val); }
+    void fLinkAfter(uint val)   { btvs(&BITS, 13, val); }
+    void fLogicalOrder(uint val){ btvs(&BITS, 14, val); }
+    void fNoGlyphIndex(uint val){ btvs(&BITS, 15, val); }
+}
+
+alias void *SCRIPT_CACHE;
+
+struct SCRIPT_CONTROL {
+    align(1):
+    WORD uDefaultLanguage;
+    BYTE BITS;
+    BYTE fReserved;
+    
+    // getter    
+    uint fContextDigits()       { return btvg(&BITS, 0); }
+    uint fInvertPreBoundDir()   { return btvg(&BITS, 1); }
+    uint fInvertPostBoundDir()  { return btvg(&BITS, 2); }
+    uint fLinkStringBefore()    { return btvg(&BITS, 3); }
+    uint fLinkStringAfter()     { return btvg(&BITS, 4); }
+    uint fNeutralOverride()     { return btvg(&BITS, 5); }
+    uint fNumericOverride()     { return btvg(&BITS, 6); }
+    uint fLegacyBidiClass()     { return btvg(&BITS, 7); }
+    
+    void fContextDigits(uint val)       { btvs(&BITS, 0, val); } 
+    void fInvertPreBoundDir(uint val)   { btvs(&BITS, 1, val); }
+    void fInvertPostBoundDir(uint val)  { btvs(&BITS, 2, val); }
+    void fLinkStringBefore(uint val)    { btvs(&BITS, 3, val); }
+    void fLinkStringAfter(uint val)     { btvs(&BITS, 4, val); }
+    void fNeutralOverride(uint val)     { btvs(&BITS, 5, val); }
+    void fNumericOverride(uint val)     { btvs(&BITS, 6, val); }
+    void fLegacyBidiClass(uint val)     { btvs(&BITS, 7, val); }
+}
+
+struct SCRIPT_FONTPROPERTIES {
+  int   cBytes; 
+  WORD  wgBlank; 
+  WORD  wgDefault; 
+  WORD  wgInvalid; 
+  WORD  wgKashida; 
+  int   iKashidaWidth; 
+}
+
+struct SCRIPT_ITEM {
+    int iCharPos;
+    SCRIPT_ANALYSIS a;
+}
+
+struct SCRIPT_LOGATTR {
+    align(1):
+    BYTE BITS;
+    
+    // gettter
+    uint fSoftBreak()   { return btvg(&BITS, 0); }
+    uint fWhiteSpace()  { return btvg(&BITS, 1); }
+    uint fCharStop()    { return btvg(&BITS, 2); }
+    uint fWordStop()    { return btvg(&BITS, 3); }
+    uint fInvalid()     { return btvg(&BITS, 4); }
+    uint fReserved()    { return cast(BYTE)(BITS>>5); }
+      
+    void fSoftBreak(uint val)   { btvs(&BITS, 0, val); } 
+    void fWhiteSpace(uint val)  { btvs(&BITS, 1, val); } 
+    void fCharStop(uint val)    { btvs(&BITS, 2, val); } 
+    void fWordStop(uint val)    { btvs(&BITS, 3, val); } 
+    void fInvalid(uint val)     { btvs(&BITS, 4, val); } 
+    void fReserved(uint val)    { BITS &= 0x1F; BITS |= (val & 0x07)<<5; } 
+}
+
+
+struct SCRIPT_PROPERTIES {  
+    DWORD   BITS1;
+    DWORD   BITS2;
+    
+    uint langid()   { return BITS1 >> 16; } 
+    uint fNumeric() { return btvg(&BITS1, 16); }
+    uint fComplex() { return btvg(&BITS1, 17); }
+    uint fNeedsWordBreaking()   { return btvg(&BITS1, 18); }  
+    uint fNeedsCaretInfo()      { return btvg(&BITS1, 19); }    
+    uint bCharSet()             { return (BITS1 >> 20) & 0xFF; }
+    uint fControl()             { return btvg(&BITS1, 28); }
+    uint fPrivateUseArea()      { return btvg(&BITS1, 29); }   
+    uint fNeedsCharacterJustify(){ return btvg(&BITS1, 30); }
+    uint fInvalidGlyph()        { return btvg(&BITS1, 31); }    
+    uint fInvalidLogAttr()      { return btvg(&BITS2, 0); }
+    uint fCDM()                 { return btvg(&BITS2, 1); }
+    uint fAmbiguousCharSet()    { return btvg(&BITS2, 2); }
+    uint fClusterSizeVaries()   { return btvg(&BITS2, 3); }
+    uint fRejectInvalid()       { return btvg(&BITS2, 4); }
+    
+    void langid(uint val)       { BITS1 &= 0xFFFF0000; BITS1 |= (val & 0xFFFF); } 
+    void fNumeric(uint val)             { btvs(&BITS1, 16, val); }
+    void fComplex(uint val)             { btvs(&BITS1, 17, val); }
+    void fNeedsWordBreaking(uint val)   { btvs(&BITS1, 18, val); }
+    void fNeedsCaretInfo(uint val)      { btvs(&BITS1, 19, val); }
+    void bCharSet(uint val)             { BITS1 &= 0xF00FFFFF; BITS1 |= (val & 0xFF)<<20; }
+    void fControl(uint val)             { btvs(&BITS1, 28, val); }
+    void fPrivateUseArea(uint val)      { btvs(&BITS1, 29, val); }
+    void fNeedsCharacterJustify(uint val){ btvs(&BITS1, 30, val); } 
+    void fInvalidGlyph(uint val)        { btvs(&BITS1, 31, val); } 
+    void fInvalidLogAttr(uint val)      { btvs(&BITS2, 0, val); } 
+    void fCDM(uint val)                 { btvs(&BITS2, 1, val); } 
+    void fAmbiguousCharSet(uint val)    { btvs(&BITS2, 2, val); } 
+    void fClusterSizeVaries(uint val)   { btvs(&BITS2, 3, val); } 
+    void fRejectInvalid(uint val)       { btvs(&BITS2, 4, val); } 
+}
+
+
+struct SCRIPT_STATE {
+    WORD BITS;
+    // getter
+    uint uBidiLevel()           { return (BITS & 0x1F);}
+    uint fOverrideDirection()   { return btvg(&BITS, 5); }
+    uint fInhibitSymSwap()      { return btvg(&BITS, 6); }
+    uint fCharShape()           { return btvg(&BITS, 7); }
+    uint fDigitSubstitute()     { return btvg(&BITS, 8); }
+    uint fInhibitLigate()       { return btvg(&BITS, 9); }
+    uint fDisplayZWG()          { return btvg(&BITS, 10); }
+    uint fArabicNumContext()    { return btvg(&BITS, 11); }
+    uint fGcpClusters()         { return btvg(&BITS, 12); }
+    uint fReserved()            { return btvg(&BITS, 13); }
+    uint fEngineReserved()      { return (BITS >> 14) & 0x03;}
+    // setter
+    void uBidiLevel(uint val)           { BITS &= 0xFFE0; BITS |= (val & 0x1F); }
+    void fOverrideDirection(uint val)   { btvs(&BITS, 5, val); } 
+    void fInhibitSymSwap(uint val)      { btvs(&BITS, 6, val); } 
+    void fCharShape(uint val)           { btvs(&BITS, 7, val); } 
+    void fDigitSubstitute(uint val)     { btvs(&BITS, 8, val); } 
+    void fInhibitLigate(uint val)       { btvs(&BITS, 9, val); } 
+    void fDisplayZWG(uint val)          { btvs(&BITS, 10, val); }
+    void fArabicNumContext(uint val)    { btvs(&BITS, 11, val); }
+    void fGcpClusters(uint val)         { btvs(&BITS, 12, val); }
+    void fReserved(uint val)            { btvs(&BITS, 13, val); }
+    void fEngineReserved(uint val)      { BITS &= 0x3FFF; BITS |= ((val & 0x03) << 14); }
+}
+
+
+struct SCRIPT_VISATTR { 
+    align(1):
+    BYTE BITS;
+    BYTE fShapeReserved;
+    
+    // getter
+    uint uJustification()   { return BITS & 0x0F; } 
+    uint fClusterStart()    { return btvg(&BITS, 4); }
+    uint fDiacritic()       { return btvg(&BITS, 5); }
+    uint fZeroWidth()       { return btvg(&BITS, 6); }
+    uint fReserved()        { return btvg(&BITS, 7); }
+    
+    // setter
+    void uJustification(uint val)   { BITS &= 0xF0; BITS |= (val & 0x0F); } 
+    void fClusterStart(uint val)    { btvs(&BITS, 4, val); }
+    void fDiacritic(uint val)       { btvs(&BITS, 5, val); }
+    void fZeroWidth(uint val)       { btvs(&BITS, 6, val); }
+    void fReserved(uint val)        { btvs(&BITS, 7, val); }
+}
+
+//struct SCROLLINFO {
+//    UINT cbSize; 
+//    UINT fMask; 
+//    int  nMin; 
+//    int  nMax; 
+//    UINT nPage; 
+//    int  nPos; 
+//    int  nTrackPos; 
+//}
+//alias SCROLLINFO* PSCROLLINFO, LPSCROLLINFO, LPCSCROLLINFO;
+
+version(WinCE)
+{
+struct SHACTIVATEINFO {
+    int cbSize;
+    HWND hwndLastFocus;
+    int fSipUp; 
+    int fSipOnDeactivation; 
+    int fActive; 
+    int fReserved; 
+}
+}
+
+struct SHELLEXECUTEINFOA {
+    DWORD cbSize; 
+    ULONG fMask; 
+    HWND hwnd; 
+    LPCSTR lpVerb; 
+    LPCSTR lpFile; 
+    LPCSTR lpParameters; 
+    LPCSTR lpDirectory; 
+    int nShow; 
+    HINSTANCE hInstApp; 
+ 
+    // Optional members 
+    LPVOID lpIDList; 
+    LPCSTR lpClass; 
+    HKEY hkeyClass; 
+    DWORD dwHotKey; 
+    HANDLE hIcon; 
+    HANDLE hProcess; 
+} alias SHELLEXECUTEINFOA* PSHELLEXECUTEINFOA, LPSHELLEXECUTEINFOA;
+struct SHELLEXECUTEINFOW {
+    DWORD cbSize; 
+    ULONG fMask; 
+    HWND hwnd; 
+    LPCWSTR lpVerb; 
+    LPCWSTR lpFile; 
+    LPCWSTR lpParameters; 
+    LPCWSTR lpDirectory; 
+    int nShow; 
+    HINSTANCE hInstApp; 
+ 
+    // Optional members 
+    LPVOID lpIDList; 
+    LPCWSTR lpClass; 
+    HKEY hkeyClass; 
+    DWORD dwHotKey; 
+    HANDLE hIcon; 
+    HANDLE hProcess; 
+} alias SHELLEXECUTEINFOW* PSHELLEXECUTEINFOW, LPSHELLEXECUTEINFOW;
+version(ANSI){
+    alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
+}else{
+    alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
+}
+alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
+
+struct SHITEMID { 
+    USHORT cb; 
+    BYTE   abID[1]; 
+} 
+alias SHITEMID* LPCSHITEMID; 
+
+version(WinCE)
+{
+    struct SHMENUBARINFO {
+        int cbSize;
+        HWND hwndParent;
+        int dwFlags;
+        int nToolBarId;
+        HINSTANCE hInstRes;
+        int nBmpId;
+        int cBmpImages;
+        HWND hwndMB;
+    }
+    
+    struct SHRGINFO {
+        DWORD cbSize;
+        HWND hwndClient;
+        POINT ptDown;
+        DWORD dwFlags;
+    }
+    
+    struct SIPINFO {
+        DWORD cbSize;
+        DWORD fdwFlags;
+        RECT rcVisibleDesktop;
+        RECT rcSipRect; 
+        DWORD dwImDataSize;
+        VOID *pvImData;
+    }
+} // end of version WinCE
+
+//struct SIZE {
+//  LONG cx; 
+//  LONG cy; 
+//}
+//alias SIZE* LPSIZE, LPSIZEL;
+//alias SIZE SIZEL;
+
+
+struct TBBUTTON {
+    align(2):
+    int     iBitmap; 
+    int     idCommand; 
+    BYTE    fsState; 
+    BYTE    fsStyle; 
+//#ifdef _WIN64
+//    BYTE     bReserved[6]     // padding for alignment
+//#elif defined(_WIN32)
+//    BYTE     bReserved[2]     // padding for alignment
+//#endif
+    DWORD_PTR   dwData; 
+    INT_PTR     iString;  
+} 
+alias TBBUTTON* PTBBUTTON, LPTBBUTTON; 
+
+struct TBBUTTONINFOA{
+    align(2):
+    UINT cbSize;
+    DWORD dwMask;
+    int idCommand;
+    int iImage;
+    BYTE fsState;
+    BYTE fsStyle;
+    WORD cx;
+    DWORD_PTR lParam;
+    LPSTR pszText;
+    int cchText;
+} 
+struct TBBUTTONINFOW{
+    align(2):
+    UINT cbSize;
+    DWORD dwMask;
+    int idCommand;
+    int iImage;
+    BYTE fsState;
+    BYTE fsStyle;
+    WORD cx;
+    DWORD_PTR lParam;
+    LPWSTR pszText;
+    int cchText;
+} 
+version(ANSI){
+    alias TBBUTTONINFOA TBBUTTONINFO;
+}else{
+    alias TBBUTTONINFOW TBBUTTONINFO;
+}
+alias TBBUTTONINFO* LPTBBUTTONINFO;
+
+
+struct TCITEMA {
+    UINT mask;
+    DWORD dwState;
+    DWORD dwStateMask;
+    LPSTR pszText;
+    int cchTextMax;
+    int iImage;
+}
+struct TCITEMW {
+    UINT mask;
+    DWORD dwState;
+    DWORD dwStateMask;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iImage;
+    LPARAM lParam;
+}
+version(ANSI){
+    alias TCITEMA TCITEM;
+}else{
+    alias TCITEMW TCITEM; 
+}
+
+// declared in phobos alread
+//struct TEXTMETRICA {
+//}
+struct TEXTMETRICW {
+    align(1):
+    LONG tmHeight;
+    LONG tmAscent; 
+    LONG tmDescent;
+    LONG tmInternalLeading;  
+    LONG tmExternalLeading;
+    LONG tmAveCharWidth;
+    LONG tmMaxCharWidth;
+    LONG tmWeight; 
+    LONG tmOverhang;
+    LONG tmDigitizedAspectX;
+    LONG tmDigitizedAspectY;
+    
+    wchar tmFirstChar;
+    wchar tmLastChar;
+    wchar tmDefaultChar; 
+    wchar tmBreakChar;
+    
+    BYTE tmItalic;
+    BYTE tmUnderlined; 
+    BYTE tmStruckOut;
+    BYTE tmPitchAndFamily;
+    BYTE tmCharSet;
+}
+version(ANSI){ 
+    alias TEXTMETRICA TEXTMETRIC;
+} else { 
+    alias TEXTMETRICW TEXTMETRIC;
+}
+
+struct TOOLINFOA {
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT uId;
+    RECT rect;
+    HINSTANCE hinst;
+    LPSTR lpszText;
+    LPARAM lParam;
+}
+struct TOOLINFOW {
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT uId;
+    RECT rect;
+    HINSTANCE hinst;
+    LPWSTR lpszText;
+    LPARAM lParam;
+}
+version(ANSI){
+    alias TOOLINFOA TOOLINFO;
+}else{
+    alias TOOLINFOW TOOLINFO;
+}
+
+struct TRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND hwndTrack;
+    DWORD dwHoverTime;
+}
+alias TRACKMOUSEEVENT* PTRACKMOUSEEVENT, LPTRACKMOUSEEVENT;
+
+struct TRIVERTEX {
+  LONG        x;
+  LONG        y;
+  COLOR16     Red;
+  COLOR16     Green;
+  COLOR16     Blue;
+  COLOR16     Alpha;
+}
+alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX;
+
+
+struct TVHITTESTINFO {
+    POINT pt;
+    UINT flags;
+    HTREEITEM hItem;
+}
+
+
+struct TVINSERTSTRUCTA {
+    HTREEITEM hParent;
+    HTREEITEM hInsertAfter;
+    TVITEMA item;
+}
+struct TVINSERTSTRUCTW {
+    HTREEITEM hParent;
+    HTREEITEM hInsertAfter;
+    TVITEMW item;
+}
+version(ANSI){
+    alias TVINSERTSTRUCTA TVINSERTSTRUCT;
+}else{
+    alias TVINSERTSTRUCTW TVINSERTSTRUCT;
+}
+
+
+struct TVITEMA {
+    UINT      mask;
+    HTREEITEM hItem;
+    UINT      state;
+    UINT      stateMask;
+    LPSTR    pszText;
+    int       cchTextMax;
+    int       iImage;
+    int       iSelectedImage;
+    int       cChildren;
+    LPARAM    lParam;
+} 
+struct TVITEMW {
+    UINT      mask;
+    HTREEITEM hItem;
+    UINT      state;
+    UINT      stateMask;
+    LPWSTR    pszText;
+    int       cchTextMax;
+    int       iImage;
+    int       iSelectedImage;
+    int       cChildren;
+    LPARAM    lParam;
+} 
+version(ANSI){
+    alias TVITEMA TVITEM;
+}else{
+    alias TVITEMW TVITEM;
+}
+alias TVITEM* LPTVITEM;
+
+union ULARGE_INTEGER {
+    struct {
+        DWORD LowPart;
+        DWORD HighPart;
+    };
+    struct u {
+        DWORD LowPart;
+        DWORD HighPart;
+    };
+    DWORDLONG QuadPart;
+} 
+alias ULARGE_INTEGER * PULARGE_INTEGER;
+
+//struct WINDOWPLACEMENT {
+//    UINT length;
+//    UINT flags;
+//    UINT showCmd;
+//    POINT ptMinPosition;
+//    POINT ptMaxPosition;
+//    RECT rcNormalPosition;
+//}
+//
+struct WINDOWPOS {
+    HWND hwnd;
+    HWND hwndInsertAfter;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    UINT flags;
+}
+
+// WNDCLASSA is declared in phobos
+struct WNDCLASSW {
+    UINT        style;
+    WNDPROC_I     lpfnWndProc;
+    int         cbClsExtra;
+    int         cbWndExtra;
+    HINSTANCE   hInstance;
+    HICON       hIcon;
+    HCURSOR     hCursor;
+    HBRUSH      hbrBackground;
+    LPCWSTR     lpszMenuName;
+    LPCWSTR     lpszClassName;
+}alias WNDCLASSW* PWNDCLASSW, LPWNDCLASSW;
+
+// since phobos has alias WNDCLASSA to WNDCLASS, we have to alias it another name
+version(ANSI){ 
+    alias WNDCLASSA WNDCLASS_T;
+}else{
+    alias WNDCLASSW WNDCLASS_T;
+}
+
+}   // end of extern(Windows)
+
+
+
+
+
+