Mercurial > projects > dwt-win
diff dwt/internal/win32/OS.d @ 15:1bea9f0c6f63
FontData, Font
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 25 Jan 2008 19:16:45 +0100 |
parents | 20e70c5494d7 |
children | ded98545bb1f |
line wrap: on
line diff
--- a/dwt/internal/win32/OS.d Fri Jan 25 14:23:28 2008 +0100 +++ b/dwt/internal/win32/OS.d Fri Jan 25 19:16:45 2008 +0100 @@ -12,11 +12,22 @@ public import dwt.internal.win32.WINTYPES; private import dwt.internal.win32.WINAPI; +alias dwt.internal.win32.WINAPI WINAPI; import dwt.internal.C; import dwt.internal.Library; public class OS : C { + + private static int getNOTIFYICONDATAA_V2_SIZE (){ + // hm, NOTIFYICONDATAA.dwInfoFlags.offsetof did not compile + return IsWinCE ? NOTIFYICONDATAA.sizeof : cast(int)(&(cast(NOTIFYICONDATAA*)null).dwInfoFlags) + int.sizeof; + } + + private static int getNOTIFYICONDATAW_V2_SIZE (){ + return IsWinCE ? NOTIFYICONDATAW.sizeof : cast(int)(&(cast(NOTIFYICONDATAW*)null).dwInfoFlags) + int.sizeof; + } + /* * DWT Windows flags */ @@ -65,6 +76,32 @@ public static const int SM_IMMENABLED = 0x52; public static const int LANG_KOREAN = 0x12; public static const int MAX_PATH = 260; + + static this(){ + NOTIFYICONDATAA_V2_SIZE = getNOTIFYICONDATAA_V2_SIZE (); + NOTIFYICONDATAW_V2_SIZE = getNOTIFYICONDATAW_V2_SIZE (); + NOTIFYICONDATA_V2_SIZE = IsUnicode ? getNOTIFYICONDATAW_V2_SIZE : getNOTIFYICONDATAA_V2_SIZE; + OSVERSIONINFO info; + IsWin32s = (info.dwPlatformId is VER_PLATFORM_WIN32s); + IsWin95 = (info.dwPlatformId is VER_PLATFORM_WIN32_WINDOWS); + IsWinNT = (info.dwPlatformId is VER_PLATFORM_WIN32_NT); + IsSP_ = false; + IsPPC_ = false; + IsHPC = false; + IsDBLocale = false; + WIN32_MAJOR = info.dwMajorVersion; + WIN32_MINOR = info.dwMinorVersion; + WIN32_VERSION = VERSION (WIN32_MAJOR, WIN32_MINOR); + //IsUnicode = !IsWin32s && !IsWin95; + DLLVERSIONINFO dvi; + COMCTL32_MAJOR = dvi.dwMajorVersion; + COMCTL32_MINOR = dvi.dwMinorVersion; + COMCTL32_VERSION = VERSION (COMCTL32_MAJOR, COMCTL32_MINOR); + SHELL32_MAJOR = dvi.dwMajorVersion; + SHELL32_MINOR = dvi.dwMinorVersion; + SHELL32_VERSION = VERSION (SHELL32_MAJOR, SHELL32_MINOR); + } +//PORTING_LEFT /++ /* Get the Windows version and the flags */ public static this() { @@ -214,6 +251,7 @@ 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; @@ -1169,9 +1207,9 @@ 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 int NOTIFYICONDATAA_V2_SIZE; + public static int NOTIFYICONDATAW_V2_SIZE; + public static int NOTIFYICONDATA_V2_SIZE; public static const int NOTSRCCOPY = 0x330008; public static const int NULLREGION = 0x1; public static const int NULL_BRUSH = 0x5; @@ -2006,6 +2044,7 @@ 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_MINIMIZE = 0x20000000; //PORTING_TODO: from dwt, why? public static const int WS_CLIPCHILDREN = 0x2000000; public static const int WS_CLIPSIBLINGS = 0x4000000; public static const int WS_DISABLED = 0x4000000; @@ -2041,11 +2080,9 @@ public static const int XBUTTON1 = 0x1; public static const int XBUTTON2 = 0x2; -public static int VERSION (int major, int minor) { - return major << 16 | minor; -} - - + +//PORTING_LEFT +/++ /** Ansi/Unicode wrappers */ public static final int /*long*/ AddFontResourceEx (TCHAR lpszFilename, int fl, int /*long*/ pdv) { @@ -3519,8 +3556,7 @@ 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); +//alias WINAPI.MultiByteToWideChar MultiByteToWideChar; 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); @@ -3771,11 +3807,1008 @@ 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); ++/ + +/** Ansi/Unicode wrappers */ +// Unicode/Ansi alias +version(ANSI) { + alias WINAPI.CallWindowProcA CallWindowProc; + alias WINAPI.CharLowerA CharLower; + alias WINAPI.CharUpperA CharUpper; + alias WINAPI.ChooseColorA ChooseColor; + alias WINAPI.ChooseFontA ChooseFont; + alias WINAPI.CreateAcceleratorTableA CreateAcceleratorTable; + alias WINAPI.CreateDCA CreateDC; + alias WINAPI.CreateEventA CreateEvent; + alias WINAPI.CreateFileA CreateFile; + alias WINAPI.CreateFontIndirectA CreateFontIndirect; + alias WINAPI.CreateWindowExA CreateWindowEx; + alias WINAPI.DefFrameProcA DefFrameProc; + alias WINAPI.DefMDIChildProcA DefMDIChildProc; + alias WINAPI.DefWindowProcA DefWindowProc; + alias WINAPI.DeleteFileA DeleteFile; + alias WINAPI.DispatchMessageA DispatchMessage; + alias WINAPI.DragQueryFileA DragQueryFile; + alias WINAPI.DrawStateA DrawState; + alias WINAPI.DrawTextA DrawText; + alias WINAPI.EnumFontFamiliesExA EnumFontFamiliesEx; + alias WINAPI.EnumFontFamiliesA EnumFontFamilies; + alias WINAPI.EnumSystemLanguageGroupsA EnumSystemLanguageGroups; + alias WINAPI.EnumSystemLocalesA EnumSystemLocales; + alias WINAPI.ExpandEnvironmentStringsA ExpandEnvironmentStrings; + alias WINAPI.ExtTextOutA ExtTextOut; + alias WINAPI.ExtractIconExA ExtractIconEx; + alias WINAPI.FindResourceA FindResource; + alias WINAPI.FindWindowA FindWindow; + alias WINAPI.FormatMessageA FormatMessage; + alias WINAPI.GetCharABCWidthsA GetCharABCWidths; + alias WINAPI.GetCharWidthA GetCharWidth; + alias WINAPI.GetCharacterPlacementA GetCharacterPlacement; + alias WINAPI.GetClassInfoA GetClassInfo; + alias WINAPI.GetClipboardFormatNameA GetClipboardFormatName; + alias WINAPI.GetKeyNameTextA GetKeyNameText; + alias WINAPI.GetLocaleInfoA GetLocaleInfo; + alias WINAPI.GetMenuItemInfoA GetMenuItemInfo; + alias WINAPI.GetMessageA GetMessage; + alias WINAPI.GetModuleFileNameA GetModuleFileName; + alias WINAPI.GetModuleHandleA GetModuleHandle; + alias WINAPI.GetMonitorInfoA GetMonitorInfo; + alias WINAPI.GetObjectA GetObject; + alias WINAPI.GetOpenFileNameA GetOpenFileName; + alias WINAPI.GetProfileStringA _GetProfileString; + alias WINAPI.GetSaveFileNameA GetSaveFileName; + alias WINAPI.GetTextExtentPoint32A GetTextExtentPoint32; + alias WINAPI.GetTextMetricsA GetTextMetrics; + alias WINAPI.GetVersionExA GetVersionEx; + alias WINAPI.GetWindowLongA GetWindowLong; + alias WINAPI.GetWindowTextA _GetWindowText; + alias WINAPI.GetWindowTextLengthA GetWindowTextLength; + alias WINAPI.ImmGetCompositionFontA ImmGetCompositionFont; + alias WINAPI.ImmGetCompositionStringA ImmGetCompositionString; + alias WINAPI.ImmSetCompositionFontA ImmSetCompositionFont; + alias WINAPI.InsertMenuA InsertMenu; + alias WINAPI.InsertMenuItemA InsertMenuItem; + alias WINAPI.LoadBitmapA LoadBitmap; + alias WINAPI.LoadCursorA LoadCursor; + alias WINAPI.LoadIconA LoadIcon; + alias WINAPI.LoadImageA LoadImage; + alias WINAPI.LoadLibraryA LoadLibrary; + alias WINAPI.LoadStringA LoadString; + alias WINAPI.MapVirtualKeyA MapVirtualKey; + alias WINAPI.MessageBoxA MessageBox; + alias WINAPI.OutputDebugStringA OutputDebugString; + alias WINAPI.PeekMessageA PeekMessage; + alias WINAPI.PostMessageA PostMessage; + alias WINAPI.PostThreadMessageA PostThreadMessage; + alias WINAPI.PrintDlgA PrintDlg; + alias WINAPI.RegEnumKeyExA RegEnumKeyEx; + alias WINAPI.RegOpenKeyExA RegOpenKeyEx; + alias WINAPI.RegQueryInfoKeyA RegQueryInfoKey; + alias WINAPI.RegQueryValueExA RegQueryValueEx; + alias WINAPI.RegisterClassA RegisterClass; + alias WINAPI.RegisterClipboardFormatA RegisterClipboardFormat; + alias WINAPI.RegisterWindowMessageA RegisterWindowMessage; + alias WINAPI.SHBrowseForFolderA SHBrowseForFolder; + alias WINAPI.SHGetPathFromIDListA SHGetPathFromIDList; + alias WINAPI.SendMessageA SendMessage; + alias WINAPI.SetMenuItemInfoA SetMenuItemInfo; + alias WINAPI.SetWindowLongA SetWindowLong; + alias WINAPI.SetWindowTextA SetWindowText; + alias WINAPI.SetWindowsHookExA SetWindowsHookEx; + alias WINAPI.ShellExecuteExA ShellExecuteEx; + alias WINAPI.Shell_NotifyIconA Shell_NotifyIcon; + alias WINAPI.StartDocA StartDoc; + alias WINAPI.SystemParametersInfoA SystemParametersInfo; + alias WINAPI.TranslateAcceleratorA TranslateAccelerator; + alias WINAPI.UnregisterClassA UnregisterClass; + alias WINAPI.VkKeyScanA VkKeyScan; +}else{ + alias WINAPI.CallWindowProcW CallWindowProc; + alias WINAPI.CharLowerW CharLower; + alias WINAPI.CharUpperW CharUpper; + alias WINAPI.ChooseColorW ChooseColor; + alias WINAPI.ChooseFontW ChooseFont; + alias WINAPI.CreateAcceleratorTableW CreateAcceleratorTable; + alias WINAPI.CreateDCW CreateDC; + alias WINAPI.CreateEventW CreateEvent; + alias WINAPI.CreateFileW CreateFile; + alias WINAPI.CreateFontIndirectW CreateFontIndirect; + alias WINAPI.CreateWindowExW CreateWindowEx; + alias WINAPI.DefFrameProcW DefFrameProc; + alias WINAPI.DefMDIChildProcW DefMDIChildProc; + alias WINAPI.DefWindowProcW DefWindowProc; + alias WINAPI.DeleteFileW DeleteFile; + alias WINAPI.DispatchMessageW DispatchMessage; + alias WINAPI.DragQueryFileW DragQueryFile; + alias WINAPI.DrawStateW DrawState; + alias WINAPI.DrawTextW DrawText; + alias WINAPI.EnumFontFamiliesExW EnumFontFamiliesEx; + alias WINAPI.EnumFontFamiliesW EnumFontFamilies; + alias WINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroups; + alias WINAPI.EnumSystemLocalesW EnumSystemLocales; + alias WINAPI.ExpandEnvironmentStringsW ExpandEnvironmentStrings; + alias WINAPI.ExtTextOutW ExtTextOut; + alias WINAPI.ExtractIconExW ExtractIconEx; + alias WINAPI.FindResourceW FindResource; + alias WINAPI.FindWindowW FindWindow; + alias WINAPI.FormatMessageW FormatMessage; + alias WINAPI.GetCharABCWidthsW GetCharABCWidths; + alias WINAPI.GetCharWidthW GetCharWidth; + alias WINAPI.GetCharacterPlacementW GetCharacterPlacement; + alias WINAPI.GetClassInfoW GetClassInfo; + alias WINAPI.GetClipboardFormatNameW GetClipboardFormatName; + alias WINAPI.GetKeyNameTextW GetKeyNameText; + alias WINAPI.GetLocaleInfoW GetLocaleInfo; + alias WINAPI.GetMenuItemInfoW GetMenuItemInfo; + alias WINAPI.GetMessageW GetMessage; + alias WINAPI.GetModuleFileNameW GetModuleFileName; + alias WINAPI.GetModuleHandleW GetModuleHandle; + alias WINAPI.GetMonitorInfoW GetMonitorInfo; + alias WINAPI.GetObjectW GetObject; + alias WINAPI.GetOpenFileNameW GetOpenFileName; + alias WINAPI.GetProfileStringW _GetProfileString; + alias WINAPI.GetSaveFileNameW GetSaveFileName; + alias WINAPI.GetTextExtentPoint32W GetTextExtentPoint32; + alias WINAPI.GetTextMetricsW GetTextMetrics; + alias WINAPI.GetVersionExW GetVersionEx; + alias WINAPI.GetWindowLongW GetWindowLong; + alias WINAPI.GetWindowTextW _GetWindowText; + alias WINAPI.GetWindowTextLengthW GetWindowTextLength; + alias WINAPI.ImmGetCompositionFontW ImmGetCompositionFont; + alias WINAPI.ImmGetCompositionStringW ImmGetCompositionString; + alias WINAPI.ImmSetCompositionFontW ImmSetCompositionFont; + alias WINAPI.InsertMenuW InsertMenu; + alias WINAPI.InsertMenuItemW InsertMenuItem; + alias WINAPI.LoadBitmapW LoadBitmap; + alias WINAPI.LoadCursorW LoadCursor; + alias WINAPI.LoadIconW LoadIcon; + alias WINAPI.LoadImageW LoadImage; + alias WINAPI.LoadLibraryW LoadLibrary; + alias WINAPI.LoadStringW LoadString; + alias WINAPI.MapVirtualKeyW MapVirtualKey; + alias WINAPI.MessageBoxW MessageBox; + alias WINAPI.OutputDebugStringW OutputDebugString; + alias WINAPI.PeekMessageW PeekMessage; + alias WINAPI.PostMessageW PostMessage; + alias WINAPI.PostThreadMessageW PostThreadMessage; + alias WINAPI.PrintDlgW PrintDlg; + alias WINAPI.RegEnumKeyExW RegEnumKeyEx; + alias WINAPI.RegOpenKeyExW RegOpenKeyEx; + alias WINAPI.RegQueryInfoKeyW RegQueryInfoKey; + alias WINAPI.RegQueryValueExW RegQueryValueEx; + alias WINAPI.RegisterClassW RegisterClass; + alias WINAPI.RegisterClipboardFormatW RegisterClipboardFormat; + alias WINAPI.RegisterWindowMessageW RegisterWindowMessage; + alias WINAPI.SHBrowseForFolderW SHBrowseForFolder; + alias WINAPI.SHGetPathFromIDListW SHGetPathFromIDList; + alias WINAPI.SendMessageW SendMessage; + alias WINAPI.SetMenuItemInfoW SetMenuItemInfo; + alias WINAPI.SetWindowLongW SetWindowLong; + alias WINAPI.SetWindowTextW SetWindowText; + alias WINAPI.SetWindowsHookExW SetWindowsHookEx; + alias WINAPI.ShellExecuteExW ShellExecuteEx; + alias WINAPI.Shell_NotifyIconW Shell_NotifyIcon; + alias WINAPI.StartDocW StartDoc; + alias WINAPI.SystemParametersInfoW SystemParametersInfo; + alias WINAPI.TranslateAcceleratorW TranslateAccelerator; + alias WINAPI.UnregisterClassW UnregisterClass; + alias WINAPI.VkKeyScanW VkKeyScan; } + + + + + + +/** All Natives */ +alias WINAPI.AbortDoc AbortDoc; +alias WINAPI.ActivateKeyboardLayout ActivateKeyboardLayout; +alias WINAPI.AdjustWindowRectEx AdjustWindowRectEx; +alias WINAPI.Arc Arc; +alias WINAPI.BeginDeferWindowPos BeginDeferWindowPos; +alias WINAPI.BeginPaint BeginPaint; +alias WINAPI.BitBlt BitBlt; +alias WINAPI.BringWindowToTop BringWindowToTop; +alias WINAPI.CallNextHookEx CallNextHookEx; +alias WINAPI.CallWindowProcA CallWindowProcA; +alias WINAPI.CallWindowProcW CallWindowProcW; +alias WINAPI.CharLowerA CharLowerA; +alias WINAPI.CharLowerW CharLowerW; +alias WINAPI.CharUpperA CharUpperA; +alias WINAPI.CharUpperW CharUpperW; +alias WINAPI.CheckMenuItem CheckMenuItem; +alias WINAPI.ChooseColorA ChooseColorA; +alias WINAPI.ChooseColorW ChooseColorW; +alias WINAPI.ChooseFontA ChooseFontA; +alias WINAPI.ChooseFontW ChooseFontW; +alias WINAPI.ClientToScreen ClientToScreen; +alias WINAPI.CloseHandle CloseHandle; +alias WINAPI.CloseClipboard CloseClipboard; +alias WINAPI.CombineRgn CombineRgn; +alias WINAPI.CommDlgExtendedError CommDlgExtendedError; + +version(WinCE){ +alias WINAPI.CommandBar_AddAdornments CommandBar_AddAdornments; +alias WINAPI.CommandBar_Create CommandBar_Create; +alias WINAPI.CommandBar_Destroy CommandBar_Destroy; +alias WINAPI.CommandBar_DrawMenuBar CommandBar_DrawMenuBar; +alias WINAPI.CommandBar_Height CommandBar_Height; +alias WINAPI.CommandBar_InsertMenubarEx CommandBar_InsertMenubarEx; +alias WINAPI.CommandBar_Show CommandBar_Show; +} + +alias WINAPI.CopyImage CopyImage; +alias WINAPI.CreateAcceleratorTableA CreateAcceleratorTableA; +alias WINAPI.CreateAcceleratorTableW CreateAcceleratorTableW; +alias WINAPI.CreateBitmap CreateBitmap; +alias WINAPI.CreateCaret CreateCaret; +alias WINAPI.CreateCompatibleBitmap CreateCompatibleBitmap; +alias WINAPI.CreateCompatibleDC CreateCompatibleDC; +alias WINAPI.CreateCursor CreateCursor; +alias WINAPI.CreateDCA CreateDCA; +alias WINAPI.CreateDCW CreateDCW; +alias WINAPI.CreateDIBSection CreateDIBSection; +alias WINAPI.CreateEventA CreateEventA; +alias WINAPI.CreateEventW CreateEventW; +alias WINAPI.CreateFileA CreateFileA; +alias WINAPI.CreateFileW CreateFileW; +alias WINAPI.CreateFontIndirectA CreateFontIndirectA; +alias WINAPI.CreateFontIndirectW CreateFontIndirectW; +alias WINAPI.CreateIconIndirect CreateIconIndirect; +alias WINAPI.CreateMenu CreateMenu; +alias WINAPI.CreatePalette CreatePalette; +alias WINAPI.CreatePatternBrush CreatePatternBrush; +alias WINAPI.CreatePen CreatePen; +alias WINAPI.CreatePolygonRgn CreatePolygonRgn; +alias WINAPI.CreatePopupMenu CreatePopupMenu; +alias WINAPI.CreateRectRgn CreateRectRgn; +alias WINAPI.CreateSolidBrush CreateSolidBrush; +alias WINAPI.CreateWindowExA CreateWindowExA; +alias WINAPI.CreateWindowExW CreateWindowExW; +alias WINAPI.DefFrameProcA DefFrameProcA; +alias WINAPI.DefFrameProcW DefFrameProcW; +alias WINAPI.DefMDIChildProcA DefMDIChildProcA; +alias WINAPI.DefMDIChildProcW DefMDIChildProcW; +alias WINAPI.DefWindowProcA DefWindowProcA; +alias WINAPI.DefWindowProcW DefWindowProcW; +alias WINAPI.DeferWindowPos DeferWindowPos; +alias WINAPI.DeleteDC DeleteDC; +alias WINAPI.DeleteMenu DeleteMenu; +alias WINAPI.DeleteObject DeleteObject; +alias WINAPI.DestroyAcceleratorTable DestroyAcceleratorTable; +alias WINAPI.DestroyCaret DestroyCaret; +alias WINAPI.DestroyCursor DestroyCursor; +alias WINAPI.DestroyIcon DestroyIcon; +alias WINAPI.DestroyMenu DestroyMenu; +alias WINAPI.DestroyWindow DestroyWindow; +alias WINAPI.DispatchMessageA DispatchMessageA; +alias WINAPI.DispatchMessageW DispatchMessageW; +alias WINAPI.DragDetect DragDetect; +alias WINAPI.DragFinish DragFinish; +alias WINAPI.DragQueryFileA DragQueryFileA; +alias WINAPI.DragQueryFileW DragQueryFileW; +alias WINAPI.DrawEdge DrawEdge; +alias WINAPI.DrawFocusRect DrawFocusRect; +alias WINAPI.DrawFrameControl DrawFrameControl; +alias WINAPI.DrawIconEx DrawIconEx; +alias WINAPI.DrawMenuBar DrawMenuBar; +alias WINAPI.DrawStateA DrawStateA; +alias WINAPI.DrawStateW DrawStateW; +alias WINAPI.DrawTextA DrawTextA; +alias WINAPI.DrawTextW DrawTextW; +alias WINAPI.Ellipse Ellipse; +alias WINAPI.EnableMenuItem EnableMenuItem; +alias WINAPI.EnableScrollBar EnableScrollBar; +alias WINAPI.EnableWindow EnableWindow; +alias WINAPI.EndDeferWindowPos EndDeferWindowPos; +alias WINAPI.EndDoc EndDoc; +alias WINAPI.EndPage EndPage; +alias WINAPI.EndPaint EndPaint; +alias WINAPI.EnumDisplayMonitors EnumDisplayMonitors; +alias WINAPI.EnumFontFamiliesA EnumFontFamiliesA; +alias WINAPI.EnumFontFamiliesExA EnumFontFamiliesExA; +alias WINAPI.EnumFontFamiliesExW EnumFontFamiliesExW; +alias WINAPI.EnumFontFamiliesW EnumFontFamiliesW; +alias WINAPI.EnumSystemLanguageGroupsA EnumSystemLanguageGroupsA; +alias WINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroupsW; +alias WINAPI.EnumSystemLocalesA EnumSystemLocalesA; +alias WINAPI.EnumSystemLocalesW EnumSystemLocalesW; +alias WINAPI.EqualRect EqualRect; +alias WINAPI.EqualRgn EqualRgn; +alias WINAPI.ExpandEnvironmentStringsA ExpandEnvironmentStringsA; +alias WINAPI.ExpandEnvironmentStringsW ExpandEnvironmentStringsW; +alias WINAPI.ExtTextOutA ExtTextOutA; +alias WINAPI.ExtTextOutW ExtTextOutW; +alias WINAPI.ExtractIconExA ExtractIconExA; +alias WINAPI.ExtractIconExW ExtractIconExW; +alias WINAPI.FillRect FillRect; +alias WINAPI.FindResourceA FindResourceA; +alias WINAPI.FindResourceW FindResourceW; +alias WINAPI.FindWindowA FindWindowA; +alias WINAPI.FindWindowW FindWindowW; +alias WINAPI.FormatMessageA FormatMessageA; +alias WINAPI.FormatMessageW FormatMessageW; +alias WINAPI.FreeLibrary FreeLibrary; +alias WINAPI.GdiSetBatchLimit GdiSetBatchLimit; +alias WINAPI.GetACP GetACP; +alias WINAPI.GetActiveWindow GetActiveWindow; +alias WINAPI.GetBkColor GetBkColor; +alias WINAPI.GetCapture GetCapture; +alias WINAPI.GetCaretPos GetCaretPos; +alias WINAPI.GetCharABCWidthsA GetCharABCWidthsA; +alias WINAPI.GetCharABCWidthsW GetCharABCWidthsW; +alias WINAPI.GetCharWidthA GetCharWidthA; +alias WINAPI.GetCharWidthW GetCharWidthW; +alias WINAPI.GetCharacterPlacementA GetCharacterPlacementA; +alias WINAPI.GetCharacterPlacementW GetCharacterPlacementW; +alias WINAPI.GetClassInfoA GetClassInfoA; +alias WINAPI.GetClassInfoW GetClassInfoW; +alias WINAPI.GetClientRect GetClientRect; +alias WINAPI.GetClipBox GetClipBox; +alias WINAPI.GetClipRgn GetClipRgn; +alias WINAPI.GetClipboardData GetClipboardData; +alias WINAPI.GetClipboardFormatNameA GetClipboardFormatNameA; +alias WINAPI.GetClipboardFormatNameW GetClipboardFormatNameW; +alias WINAPI.GetComboBoxInfo GetComboBoxInfo; +alias WINAPI.GetCurrentObject GetCurrentObject; +alias WINAPI.GetCurrentProcessId GetCurrentProcessId; +alias WINAPI.GetCurrentThreadId GetCurrentThreadId; +alias WINAPI.GetCursor GetCursor; +alias WINAPI.GetCursorPos GetCursorPos; +alias WINAPI.GetDC GetDC; +alias WINAPI.GetDCEx GetDCEx; +alias WINAPI.GetDIBColorTable GetDIBColorTable; +alias WINAPI.GetDIBits GetDIBits; +alias WINAPI.GetDesktopWindow GetDesktopWindow; +alias WINAPI.GetDeviceCaps GetDeviceCaps; +alias WINAPI.GetDialogBaseUnits GetDialogBaseUnits; +alias WINAPI.GetDlgItem GetDlgItem; +alias WINAPI.GetDoubleClickTime GetDoubleClickTime; +alias WINAPI.GetFocus GetFocus; +alias WINAPI.GetFontLanguageInfo GetFontLanguageInfo; +alias WINAPI.GetGUIThreadInfo GetGUIThreadInfo; +alias WINAPI.GetIconInfo GetIconInfo; +alias WINAPI.GetKeyNameTextA GetKeyNameTextA; +alias WINAPI.GetKeyNameTextW GetKeyNameTextW; +alias WINAPI.GetKeyState GetKeyState; +alias WINAPI.GetKeyboardLayout GetKeyboardLayout; +alias WINAPI.GetKeyboardLayoutList GetKeyboardLayoutList; +alias WINAPI.GetKeyboardState GetKeyboardState; +alias WINAPI.GetLastActivePopup GetLastActivePopup; +alias WINAPI.GetLastError GetLastError; +alias WINAPI.GetLayout GetLayout; +alias WINAPI.GetLocaleInfoA GetLocaleInfoA; +alias WINAPI.GetLocaleInfoW GetLocaleInfoW; +alias WINAPI.GetMenu GetMenu; +alias WINAPI.GetMenuBarInfo GetMenuBarInfo; +alias WINAPI.GetMenuDefaultItem GetMenuDefaultItem; +alias WINAPI.GetMenuInfo GetMenuInfo; +alias WINAPI.GetMenuItemCount GetMenuItemCount; +alias WINAPI.GetMenuItemInfoA GetMenuItemInfoA; +alias WINAPI.GetMenuItemInfoW GetMenuItemInfoW; +alias WINAPI.GetMenuItemRect GetMenuItemRect; +alias WINAPI.GetMessageA GetMessageA; +alias WINAPI.GetMessagePos GetMessagePos; +alias WINAPI.GetMessageTime GetMessageTime; +alias WINAPI.GetMessageW GetMessageW; +alias WINAPI.GetModuleFileNameA GetModuleFileNameA; +alias WINAPI.GetModuleFileNameW GetModuleFileNameW; +alias WINAPI.GetModuleHandleA GetModuleHandleA; +alias WINAPI.GetModuleHandleW GetModuleHandleW; +alias WINAPI.GetMonitorInfoA GetMonitorInfoA; +alias WINAPI.GetMonitorInfoW GetMonitorInfoW; +alias WINAPI.GetNearestPaletteIndex GetNearestPaletteIndex; +alias WINAPI.GetObjectA GetObjectA; +alias WINAPI.GetObjectW GetObjectW; +alias WINAPI.GetOpenFileNameA GetOpenFileNameA; +alias WINAPI.GetOpenFileNameW GetOpenFileNameW; +alias WINAPI.GetPaletteEntries GetPaletteEntries; +alias WINAPI.GetParent GetParent; +alias WINAPI.GetPixel GetPixel; +alias WINAPI.GetProcAddress GetProcAddress; +alias WINAPI.GetProcessHeap GetProcessHeap; +alias WINAPI.GetProfileStringA GetProfileStringA; +alias WINAPI.GetProfileStringW GetProfileStringW; +alias WINAPI.GetROP2 GetROP2; +alias WINAPI.GetRandomRgn GetRandomRgn; +alias WINAPI.GetRegionData GetRegionData; +alias WINAPI.GetRgnBox GetRgnBox; +alias WINAPI.GetSaveFileNameA GetSaveFileNameA; +alias WINAPI.GetSaveFileNameW GetSaveFileNameW; +alias WINAPI.GetScrollInfo GetScrollInfo; +alias WINAPI.GetStockObject GetStockObject; +alias WINAPI.GetSysColor GetSysColor; +alias WINAPI.GetSysColorBrush GetSysColorBrush; +alias WINAPI.GetSystemMenu GetSystemMenu; +alias WINAPI.GetSystemMetrics GetSystemMetrics; +alias WINAPI.GetSystemPaletteEntries GetSystemPaletteEntries; +alias WINAPI.GetTextCharset GetTextCharset; +alias WINAPI.GetTextColor GetTextColor; +alias WINAPI.GetTextExtentPoint32A GetTextExtentPoint32A; +alias WINAPI.GetTextExtentPoint32W GetTextExtentPoint32W; +alias WINAPI.GetTextMetricsA GetTextMetricsA; +alias WINAPI.GetTextMetricsW GetTextMetricsW; +alias WINAPI.GetTickCount GetTickCount; +alias WINAPI.GetUpdateRect GetUpdateRect; +alias WINAPI.GetUpdateRgn GetUpdateRgn; +alias WINAPI.GetVersion GetVersion; +alias WINAPI.GetVersionExA GetVersionExA; +alias WINAPI.GetVersionExW GetVersionExW; +alias WINAPI.GetWindow GetWindow; +alias WINAPI.GetWindowLongA GetWindowLongA; +alias WINAPI.GetWindowLongW GetWindowLongW; +alias WINAPI.GetWindowPlacement GetWindowPlacement; +alias WINAPI.GetWindowRect GetWindowRect; +alias WINAPI.GetWindowRgn GetWindowRgn; +alias WINAPI.GetWindowTextA GetWindowTextA; +alias WINAPI.GetWindowTextLengthA GetWindowTextLengthA; +alias WINAPI.GetWindowTextLengthW GetWindowTextLengthW; +alias WINAPI.GetWindowTextW GetWindowTextW; +alias WINAPI.GetWindowThreadProcessId GetWindowThreadProcessId; +alias WINAPI.GlobalAlloc GlobalAlloc; +alias WINAPI.GlobalFree GlobalFree; +alias WINAPI.GlobalLock GlobalLock; +alias WINAPI.GlobalSize GlobalSize; +alias WINAPI.GlobalUnlock GlobalUnlock; +alias WINAPI.GradientFill GradientFill; +alias WINAPI.HeapAlloc HeapAlloc; +alias WINAPI.HeapFree HeapFree; +alias WINAPI.HideCaret HideCaret; +alias WINAPI.ImageList_Add ImageList_Add; +alias WINAPI.ImageList_AddMasked ImageList_AddMasked; +alias WINAPI.ImageList_Create ImageList_Create; +alias WINAPI.ImageList_Destroy ImageList_Destroy; +alias WINAPI.ImageList_GetIcon ImageList_GetIcon; +alias WINAPI.ImageList_GetIconSize ImageList_GetIconSize; +alias WINAPI.ImageList_GetImageCount ImageList_GetImageCount; +alias WINAPI.ImageList_Remove ImageList_Remove; +alias WINAPI.ImageList_Replace ImageList_Replace; +alias WINAPI.ImageList_ReplaceIcon ImageList_ReplaceIcon; +alias WINAPI.ImageList_SetIconSize ImageList_SetIconSize; +alias WINAPI.ImmAssociateContext ImmAssociateContext; +alias WINAPI.ImmCreateContext ImmCreateContext; +alias WINAPI.ImmDestroyContext ImmDestroyContext; +alias WINAPI.ImmGetCompositionFontA ImmGetCompositionFontA; +alias WINAPI.ImmGetCompositionFontW ImmGetCompositionFontW; +alias WINAPI.ImmGetCompositionStringA ImmGetCompositionStringA; +alias WINAPI.ImmGetCompositionStringW ImmGetCompositionStringW; +alias WINAPI.ImmGetContext ImmGetContext; +alias WINAPI.ImmGetConversionStatus ImmGetConversionStatus; +alias WINAPI.ImmGetDefaultIMEWnd ImmGetDefaultIMEWnd; +alias WINAPI.ImmGetOpenStatus ImmGetOpenStatus; +alias WINAPI.ImmReleaseContext ImmReleaseContext; +alias WINAPI.ImmSetCompositionFontA ImmSetCompositionFontA; +alias WINAPI.ImmSetCompositionFontW ImmSetCompositionFontW; +alias WINAPI.ImmSetCompositionWindow ImmSetCompositionWindow; +alias WINAPI.ImmSetConversionStatus ImmSetConversionStatus; +alias WINAPI.ImmSetOpenStatus ImmSetOpenStatus; +alias WINAPI.InitCommonControls InitCommonControls; +alias WINAPI.InitCommonControlsEx InitCommonControlsEx; +alias WINAPI.InsertMenuA InsertMenuA; +alias WINAPI.InsertMenuItemA InsertMenuItemA; +alias WINAPI.InsertMenuItemW InsertMenuItemW; +alias WINAPI.InsertMenuW InsertMenuW; +alias WINAPI.InterlockedDecrement InterlockedDecrement; +alias WINAPI.InterlockedIncrement InterlockedIncrement; +alias WINAPI.IntersectRect IntersectRect; +alias WINAPI.InvalidateRect InvalidateRect; +alias WINAPI.InvalidateRgn InvalidateRgn; +alias WINAPI.IsDBCSLeadByte IsDBCSLeadByte; +alias WINAPI.IsIconic IsIconic; +alias WINAPI.IsWindow IsWindow; +alias WINAPI.IsWindowEnabled IsWindowEnabled; +alias WINAPI.IsWindowVisible IsWindowVisible; +alias WINAPI.IsZoomed IsZoomed; +alias WINAPI.KillTimer KillTimer; +alias WINAPI.LineTo LineTo; +alias WINAPI.LoadBitmapA LoadBitmapA; +alias WINAPI.LoadBitmapW LoadBitmapW; +alias WINAPI.LoadCursorA LoadCursorA; +alias WINAPI.LoadCursorW LoadCursorW; +alias WINAPI.LoadIconA LoadIconA; +alias WINAPI.LoadIconW LoadIconW; +alias WINAPI.LoadImageA LoadImageA; +alias WINAPI.LoadImageW LoadImageW; +alias WINAPI.LoadLibraryA LoadLibraryA; +alias WINAPI.LoadLibraryW LoadLibraryW; +alias WINAPI.LoadResource LoadResource; +alias WINAPI.LoadStringA LoadStringA; +alias WINAPI.LoadStringW LoadStringW; +alias WINAPI.LocalFree LocalFree; +alias WINAPI.LockResource LockResource; +alias WINAPI.MapVirtualKeyA MapVirtualKeyA; +alias WINAPI.MapVirtualKeyW MapVirtualKeyW; +alias WINAPI.MapWindowPoints MapWindowPoints; +alias WINAPI.MessageBeep MessageBeep; +alias WINAPI.MessageBoxA MessageBoxA; +alias WINAPI.MessageBoxW MessageBoxW; +alias WINAPI.MonitorFromWindow MonitorFromWindow; +alias WINAPI.MoveToEx MoveToEx; +alias WINAPI.MsgWaitForMultipleObjectsEx MsgWaitForMultipleObjectsEx; +alias WINAPI.MultiByteToWideChar MultiByteToWideChar; +alias WINAPI.NotifyWinEvent NotifyWinEvent; +alias WINAPI.OffsetRgn OffsetRgn; +//alias WINAPI.OleInitialize OleInitialize; +//alias WINAPI.OleUninitialize OleUninitialize; +alias WINAPI.OpenClipboard OpenClipboard; +alias WINAPI.OutputDebugStringA OutputDebugStringA; +alias WINAPI.OutputDebugStringW OutputDebugStringW; +alias WINAPI.PatBlt PatBlt; +alias WINAPI.PeekMessageA PeekMessageA; +alias WINAPI.PeekMessageW PeekMessageW; +alias WINAPI.Pie Pie; +alias WINAPI.Polygon Polygon; +alias WINAPI.Polyline Polyline; +alias WINAPI.PostMessageA PostMessageA; +alias WINAPI.PostMessageW PostMessageW; +alias WINAPI.PostThreadMessageA PostThreadMessageA; +alias WINAPI.PostThreadMessageW PostThreadMessageW; +alias WINAPI.PrintDlgA PrintDlgA; +alias WINAPI.PrintDlgW PrintDlgW; +alias WINAPI.PtInRect PtInRect; +alias WINAPI.PtInRegion PtInRegion; +alias WINAPI.RealizePalette RealizePalette; +alias WINAPI.RectInRegion RectInRegion; +// <Shawn> Renamed : may conflict with dwt.graphics.rectangle.Rectangle +alias WINAPI.Rectangle _Rectangle; +alias WINAPI.RedrawWindow RedrawWindow; +alias WINAPI.RegCloseKey RegCloseKey; +alias WINAPI.RegEnumKeyExA RegEnumKeyExA; +alias WINAPI.RegEnumKeyExW RegEnumKeyExW; +alias WINAPI.RegOpenKeyExA RegOpenKeyExA; +alias WINAPI.RegOpenKeyExW RegOpenKeyExW; +alias WINAPI.RegQueryInfoKeyA RegQueryInfoKeyA; +alias WINAPI.RegQueryInfoKeyW RegQueryInfoKeyW; +alias WINAPI.RegQueryValueExA RegQueryValueExA; +alias WINAPI.RegQueryValueExW RegQueryValueExW; +alias WINAPI.RegisterClassA RegisterClassA; +alias WINAPI.RegisterClassW RegisterClassW; +alias WINAPI.RegisterClipboardFormatA RegisterClipboardFormatA; +alias WINAPI.RegisterClipboardFormatW RegisterClipboardFormatW; +alias WINAPI.RegisterWindowMessageA RegisterWindowMessageA; +alias WINAPI.RegisterWindowMessageW RegisterWindowMessageW; +alias WINAPI.ReleaseCapture ReleaseCapture; +alias WINAPI.ReleaseDC ReleaseDC; +alias WINAPI.RemoveMenu RemoveMenu; +alias WINAPI.RestoreDC RestoreDC; +alias WINAPI.RoundRect RoundRect; +alias WINAPI.RtlMoveMemory MoveMemory; +alias WINAPI.SHBrowseForFolderA SHBrowseForFolderA; +alias WINAPI.SHBrowseForFolderW SHBrowseForFolderW; +version(WinCE){ + alias WINAPI.SHCreateMenuBar SHCreateMenuBar; +} +alias WINAPI.SHGetMalloc SHGetMalloc; +alias WINAPI.SHGetPathFromIDListA SHGetPathFromIDListA; +alias WINAPI.SHGetPathFromIDListW SHGetPathFromIDListW; +version(WinCE) +{ + alias WINAPI.SHHandleWMSettingChange SHHandleWMSettingChange; + alias WINAPI.SHRecognizeGesture SHRecognizeGesture; + alias WINAPI.SHSendBackToFocusWindow SHSendBackToFocusWindow; + alias WINAPI.SHSetAppKeyWndAssoc SHSetAppKeyWndAssoc; + alias WINAPI.SHSipPreference SHSipPreference; +} +alias WINAPI.SaveDC SaveDC; +alias WINAPI.ScreenToClient ScreenToClient; +alias WINAPI.ScriptBreak ScriptBreak; +alias WINAPI.ScriptCPtoX ScriptCPtoX; +alias WINAPI.ScriptCacheGetHeight ScriptCacheGetHeight; +alias WINAPI.ScriptFreeCache ScriptFreeCache; +alias WINAPI.ScriptGetFontProperties ScriptGetFontProperties; +alias WINAPI.ScriptGetLogicalWidths ScriptGetLogicalWidths; +alias WINAPI.ScriptGetProperties ScriptGetProperties; +alias WINAPI.ScriptItemize ScriptItemize; +alias WINAPI.ScriptLayout ScriptLayout; +alias WINAPI.ScriptPlace ScriptPlace; +alias WINAPI.ScriptShape ScriptShape; +alias WINAPI.ScriptTextOut ScriptTextOut; +alias WINAPI.ScriptXtoCP ScriptXtoCP; +alias WINAPI.ScrollWindowEx ScrollWindowEx; +alias WINAPI.SelectClipRgn SelectClipRgn; +alias WINAPI.SelectObject SelectObject; +alias WINAPI.SelectPalette SelectPalette; +alias WINAPI.SendInput SendInput; +alias WINAPI.SendMessageA SendMessageA; +alias WINAPI.SendMessageW SendMessageW; +alias WINAPI.SetActiveWindow SetActiveWindow; +alias WINAPI.SetBkColor SetBkColor; +alias WINAPI.SetBkMode SetBkMode; +alias WINAPI.SetCapture SetCapture; +alias WINAPI.SetCaretPos SetCaretPos; +alias WINAPI.SetClipboardData SetClipboardData; +alias WINAPI.SetCursor SetCursor; +alias WINAPI.SetCursorPos SetCursorPos; +alias WINAPI.SetDIBColorTable SetDIBColorTable; +alias WINAPI.SetErrorMode SetErrorMode; +alias WINAPI.SetEvent SetEvent; +alias WINAPI.SetFocus SetFocus; +alias WINAPI.SetForegroundWindow SetForegroundWindow; +alias WINAPI.SetLastError SetLastError; +alias WINAPI.SetLayout SetLayout; +alias WINAPI.SetMenu SetMenu; +alias WINAPI.SetMenuDefaultItem SetMenuDefaultItem; +alias WINAPI.SetMenuInfo SetMenuInfo; +alias WINAPI.SetMenuItemInfoA SetMenuItemInfoA; +alias WINAPI.SetMenuItemInfoW SetMenuItemInfoW; +alias WINAPI.SetPaletteEntries SetPaletteEntries; +alias WINAPI.SetParent SetParent; +alias WINAPI.SetPixel SetPixel; +alias WINAPI.SetROP2 SetROP2; +alias WINAPI.SetRect SetRect; +alias WINAPI.SetRectRgn SetRectRgn; +alias WINAPI.SetScrollInfo SetScrollInfo; +alias WINAPI.SetStretchBltMode SetStretchBltMode; +alias WINAPI.SetTextAlign SetTextAlign; +alias WINAPI.SetTextColor SetTextColor; +alias WINAPI.SetTimer SetTimer; +alias WINAPI.SetWindowLongA SetWindowLongA; +alias WINAPI.SetWindowLongW SetWindowLongW; +alias WINAPI.SetWindowPlacement SetWindowPlacement; +alias WINAPI.SetWindowPos SetWindowPos; +alias WINAPI.SetWindowRgn SetWindowRgn; +alias WINAPI.SetWindowTextA SetWindowTextA; +alias WINAPI.SetWindowTextW SetWindowTextW; +alias WINAPI.SetWindowsHookExA SetWindowsHookExA; +alias WINAPI.SetWindowsHookExW SetWindowsHookExW; +alias WINAPI.ShellExecuteExA ShellExecuteExA; +alias WINAPI.ShellExecuteExW ShellExecuteExW; +alias WINAPI.Shell_NotifyIconA Shell_NotifyIconA; +alias WINAPI.Shell_NotifyIconW Shell_NotifyIconW; +alias WINAPI.ShowCaret ShowCaret; +alias WINAPI.ShowOwnedPopups ShowOwnedPopups; +alias WINAPI.ShowScrollBar ShowScrollBar; +alias WINAPI.ShowWindow ShowWindow; +version(WinCE){ +alias WINAPI.SipGetInfo SipGetInfo; +} +alias WINAPI.SizeofResource SizeofResource; +alias WINAPI.Sleep Sleep; +alias WINAPI.StartDocA StartDocA; +alias WINAPI.StartDocW StartDocW; +alias WINAPI.StartPage StartPage; +alias WINAPI.StretchBlt StretchBlt; +alias WINAPI.SystemParametersInfoA SystemParametersInfoA; +alias WINAPI.SystemParametersInfoW SystemParametersInfoW; +alias WINAPI.ToAscii ToAscii; +alias WINAPI.ToUnicode ToUnicode; +alias WINAPI.TrackMouseEvent TrackMouseEvent; +alias WINAPI.TrackPopupMenu TrackPopupMenu; +alias WINAPI.TranslateAcceleratorA TranslateAcceleratorA; +alias WINAPI.TranslateAcceleratorW TranslateAcceleratorW; +alias WINAPI.TranslateCharsetInfo TranslateCharsetInfo; +alias WINAPI.TranslateMDISysAccel TranslateMDISysAccel; +alias WINAPI.TranslateMessage TranslateMessage; +version(WinCE){ + alias WINAPI.TransparentImage TransparentImage; +} +alias WINAPI.UnhookWindowsHookEx UnhookWindowsHookEx; +alias WINAPI.UnregisterClassA UnregisterClassA; +alias WINAPI.UnregisterClassW UnregisterClassW; +alias WINAPI.UpdateWindow UpdateWindow; +alias WINAPI.ValidateRect ValidateRect; +alias WINAPI.VkKeyScanA VkKeyScanA; +alias WINAPI.VkKeyScanW VkKeyScanW; +alias WINAPI.WaitForMultipleObjects WaitForMultipleObjects; +alias WINAPI.WaitForSingleObject WaitForSingleObject; +alias WINAPI.WaitMessage WaitMessage; +alias WINAPI.WideCharToMultiByte WideCharToMultiByte; +alias WINAPI.WindowFromDC WindowFromDC; +alias WINAPI.WindowFromPoint WindowFromPoint; +alias WINAPI.wcslen wcslen; + +public static int VERSION (int major, int minor) { return major << 16 | minor;} + +//static int DrawText(int hDC, String lpString, RECT* lpRect, int uFormat){ +// return WINAPI.DrawText(hDC, Convert.StringToTCHARz(lpString), lpString.length, lpRect, uFormat); +//} +// +//static int DrawText(int hDC, TCHAR* lpString, int length, RECT* lpRect, int uFormat){ +// return WINAPI.DrawText(hDC, lpString, length, lpRect, uFormat); +//} + +static int GetProfileString(char[] lpAppName, char[] lpKeyName, char[] lpDefault, out char[] lpReturnedString, int nSize ){ + TCHAR[] buffer = new TCHAR[nSize]; + int result = _GetProfileString(.StrToTCHARz(lpAppName), .StrToTCHARz(lpKeyName), .StrToTCHARz(lpDefault), buffer.ptr, nSize); + lpReturnedString = .TCHARzToStr(buffer.ptr); + return result; +} + +static char[] GetWindowText(HWND hwnd){ + assert(hwnd); + int len = GetWindowTextLength(hwnd); + if(len > 0){ + TCHAR[] buffer = new TCHAR[len + 1]; + len = _GetWindowText(hwnd, buffer.ptr, buffer.length); + return .TCHARzToStr(buffer.ptr, len); + } + return ""; +} + +// Note: nMaxCount including the NULL character +static int GetWindowText(HWND hWnd, TCHAR* lpString, int nMaxCount) +{ + return _GetWindowText(hWnd, lpString, nMaxCount); +} + +// <Shawn Liu> added this method, copied from ATL : atlwin.h +static int CenterWindow(HWND m_hWnd, HWND hWndCenter = null) +{ + assert(m_hWnd); + + // determine owner window to center against + uint dwStyle = OS.GetWindowLong(m_hWnd, OS.GWL_STYLE); + if(hWndCenter is null) + { + if(dwStyle & OS.WS_CHILD) + hWndCenter = OS.GetParent(m_hWnd); + else + hWndCenter = OS.GetWindow(m_hWnd, OS.GW_OWNER); + } + + // get coordinates of the window relative to its parent + RECT rcDlg; + OS.GetWindowRect(m_hWnd, &rcDlg); + RECT rcArea; + RECT rcCenter; + HWND hWndParent; + if(!(dwStyle & OS.WS_CHILD)) + { + // don't center against invisible or minimized WINAPI + if(hWndCenter !is null) + { + uint dwStyleCenter = OS.GetWindowLong(hWndCenter, OS.GWL_STYLE); + if(!(dwStyleCenter & OS.WS_VISIBLE) || (dwStyleCenter & OS.WS_MINIMIZE)) + hWndCenter = null; + } + + // center within screen coordinates + OS.SystemParametersInfo(OS.SPI_GETWORKAREA, 0, &rcArea, 0); + if(hWndCenter is null) + rcCenter = rcArea; + else + OS.GetWindowRect(hWndCenter, &rcCenter); + } + else + { + // center within parent client coordinates + hWndParent = OS.GetParent(m_hWnd); + assert(OS.IsWindow(hWndParent)); + + OS.GetClientRect(hWndParent, &rcArea); + assert(OS.IsWindow(hWndCenter)); + OS.GetClientRect(hWndCenter, &rcCenter); + OS.MapWindowPoints(hWndCenter, hWndParent, cast(POINT*)&rcCenter, 2); + } + + int DlgWidth = rcDlg.right - rcDlg.left; + int DlgHeight = rcDlg.bottom - rcDlg.top; + + // find dialog's upper left based on rcCenter + int xLeft = (rcCenter.left + rcCenter.right) / 2 - DlgWidth / 2; + int yTop = (rcCenter.top + rcCenter.bottom) / 2 - DlgHeight / 2; + + // if the dialog is outside the screen, move it inside + if(xLeft < rcArea.left) + xLeft = rcArea.left; + else if(xLeft + DlgWidth > rcArea.right) + xLeft = rcArea.right - DlgWidth; + + if(yTop < rcArea.top) + yTop = rcArea.top; + else if(yTop + DlgHeight > rcArea.bottom) + yTop = rcArea.bottom - DlgHeight; + + // map screen coordinates to child coordinates + return OS.SetWindowPos(m_hWnd, null, xLeft, yTop, -1, -1, + OS.SWP_NOSIZE | OS.SWP_NOZORDER | OS.SWP_NOACTIVATE); +} + +static int OleInitialize(LPVOID reserved = null){ + return WINAPI.OleInitialize(reserved); +} + +static void OleUninitialize(){ + WINAPI.OleUninitialize(); +} + +} // END of OS + +private import tango.sys.win32.CodePage; +private import tango.text.convert.Utf; +private import tango.stdc.stringz; + +// convert UTF-8 to MBCS +alias StrToMBCS StrToMBCSs; +public char[] StrToMBCS(char[] sc, uint codepage = 0) { + char[] ret = sc; + try{ + foreach (char c; sc){ + if (c >= 0x80) + { + char[] result; + int i; + wchar[] ws = .toString16(sc); + result.length = OS.WideCharToMultiByte(codepage, 0, ws.ptr, ws.length, null, 0, null, null); + i = OS.WideCharToMultiByte(codepage, 0, ws.ptr, ws.length, result.ptr, result.length, null, null); + assert(i == result.length); + return result; + } + } + }catch(Exception e){ + // do nothing + ret = ""; + } + return ret; +} + +// convert UTF-8 to MBCSz +public char* StrToMBCSz(char[] sc) { + char* ret = null; + try{ + if( CodePage.isAscii( sc )){ + return .toStringz( sc ); + } + char[] dst; + dst.length = sc.length; + return toStringz( tango.sys.win32.CodePage.CodePage.into( sc, dst )); + }catch(Exception e){ + // do nothing + ret = ""; + } + + return ret; +} + +public wchar[] StrToWCHARs(char[] sc) { + wchar[] ret; + try{ + ret = toString16(sc); + }catch(Exception e){ + // do nothing + ret = ""; + } + + return ret; +} + +public wchar* StrToWCHARz(char[] sc) { + return toString16z( StrToWCHARs(sc)); +} + +public char[] MBCSsToStr(char[] string, uint codepage = 0){ + return MBCSzToStr( string.ptr, string.length, codepage); +} + +public char[] MBCSzToStr(char* pString, int _length = -1, uint codepage = 0) { + // null terminated string pointer + if(_length == -1){ + _length = 0; + while(*(pString + _length)) + ++_length; + } + // convert MBCS to UTF-8 + if(_length == 0) + return null; + + wchar[] wcs = _mbcszToWs(pString, _length, codepage); + char[] result; + try{ + result = .toString(wcs); + }catch(Exception e){ + } + return result; +} + +public char[] WCHARsToStr(wchar[] string){ + return WCHARzToStr(cast(wchar*)string, string.length); +} + +public char[] WCHARzToStr(wchar* pString, int _length = -1) +{ + // null terminated string pointer + if(_length == -1){ + _length = 0; + while(*(pString + _length)) + ++_length; + } + if(_length == 0) + return null; + // convert wchar* to UTF-8 + wchar[] wcs = pString[0.._length]; + + char[] result; + try{ + result = .toString(wcs); + }catch(Exception e){ + // do nothing + } + return result; +} + +/** + * <Shawn> difference between WCHARzToStr(pwstr, -1) : + * BSTRToStr() internally call WCHARzToStr(pwstr, length) with length set, + * instead to determine the null ended, this mean BSTRToStr() can get string + * which has embedded null characters. + */ + +version(OLE_COM) +{ +// BSTR is aliased to wchar* +// Note : Free the "bstr" memory if freeTheString is true, default false +static char[] BSTRToStr(/*BSTR*/ inout wchar* bstr, bool freeTheString = false){ + if(bstr is null) return null; + int size = (SysStringByteLen(bstr) + 1)/wchar.sizeof; + char[] result = WCHARzToStr(bstr, size); + if(freeTheString) { + // free the string and set ptr to null + SysFreeString(bstr); + bstr = null; + } + return result; +} +} // end of OLE_COM + + +public static wchar[] _mbcszToWs(char* pMBCS, int len, uint codepage = 0) +{ + wchar[] wbuf; + // Convert MBCS to unicode + wbuf.length = OS.MultiByteToWideChar(codepage, 0, pMBCS, len, null, 0); + int n = OS.MultiByteToWideChar(codepage, 0, pMBCS, len, wbuf.ptr, wbuf.length); + assert(n == wbuf.length); + return wbuf; +} + +// static methods +public int _tcslen(TCHAR* pString){ + int _length = 0; + while(*(pString + _length)) + ++_length; + + return _length; +} + +/** + * There is a bug in Phobos std.string.toupper() to lower() with + std.string.toupper() and std.string.tolower() give a wrong result when deal with a mixture of upper/lower English and Chinese characters. e.g. +char[] a = "AbCd中文eFgH"; +char[] b = std.string.toupper(a); +char[] c = std.string.tolower(a); +The length of a is 11, but the length of b,c is 18 now. + * + */ +public char[] tolower(char[] string) { + TCHAR* ps = StrToTCHARz(string); + TCHAR* ps2 = OS.CharLower(ps); + return TCHARzToStr(ps2); +} +public char[] toupper(char[] string) { + TCHAR* ps = StrToTCHARz(string); + TCHAR* ps2 = OS.CharUpper(ps); + return TCHARzToStr(ps2); +} + +version(ANSI){ + alias StrToMBCS StrToTCHARs; + alias StrToMBCSz StrToTCHARz; + alias MBCSzToStr TCHARzToStr; + alias MBCSsToStr TCHARsToStr; +}else{ + // Unicode + alias StrToWCHARs StrToTCHARs; + alias StrToWCHARz StrToTCHARz; + alias WCHARzToStr TCHARzToStr; + alias WCHARsToStr TCHARsToStr; +} + + +//alias Converter.StrToTCHARs StrToTCHARs; +//alias Converter.StrToTCHARz StrToTCHARz; +//alias Converter.TCHARzToStr TCHARzToStr; +//alias Converter.TCHARsToStr TCHARsToStr; + + + +