changeset 253:fbb9174f2a2c

Reuse the tango windows api
author Frank Benoit <benoit@tionex.de>
date Fri, 11 Jul 2008 23:01:25 +0200
parents dffb802cad03
children a73bd022b5ac
files dwt/dnd/HTMLTransfer.d dwt/dnd/RTFTransfer.d dwt/events/SelectionListener.d dwt/internal/gdip/Gdip.d dwt/internal/win32/OS.d dwt/internal/win32/WINAPI.d dwt/internal/win32/WINTYPES.d
diffstat 7 files changed, 278 insertions(+), 242 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/dnd/HTMLTransfer.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/dnd/HTMLTransfer.d	Fri Jul 11 23:01:25 2008 +0200
@@ -134,7 +134,7 @@
 
     auto wstrz = StrToTCHARz(OS.CP_UTF8,buffer.toString);
     cchMultiByte = OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, null, 0, null, null);
-    auto lpMultiByteStr = cast(CHAR*) OS.GlobalAlloc(OS.GMEM_FIXED | OS.GMEM_ZEROINIT, cchMultiByte);
+    auto lpMultiByteStr = cast(PCHAR) OS.GlobalAlloc(OS.GMEM_FIXED | OS.GMEM_ZEROINIT, cchMultiByte);
     OS.WideCharToMultiByte(OS.CP_UTF8, 0, wstrz, -1, lpMultiByteStr, cchMultiByte, null, null);
     transferData.stgmedium = new STGMEDIUM();
     transferData.stgmedium.tymed = COM.TYMED_HGLOBAL;
@@ -167,7 +167,7 @@
     auto hMem = stgmedium.unionField;
 
     try {
-        auto lpMultiByteStr = cast(CHAR*) OS.GlobalLock(hMem);
+        auto lpMultiByteStr = cast(PCHAR) OS.GlobalLock(hMem);
         if (lpMultiByteStr is null) return null;
         try {
             /* NOTE: CF_HTML uses UTF-8 encoding.
--- a/dwt/dnd/RTFTransfer.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/dnd/RTFTransfer.d	Fri Jul 11 23:01:25 2008 +0200
@@ -91,7 +91,7 @@
         transferData.result = COM.DV_E_STGMEDIUM;
         return;
     }
-    auto lpMultiByteStr = cast(CHAR*)OS.GlobalAlloc(COM.GMEM_FIXED | COM.GMEM_ZEROINIT, cchMultiByte);
+    auto lpMultiByteStr = cast(PCHAR)OS.GlobalAlloc(COM.GMEM_FIXED | COM.GMEM_ZEROINIT, cchMultiByte);
     OS.WideCharToMultiByte(codePage, 0, chars, -1, lpMultiByteStr, cchMultiByte, null, null);
     transferData.stgmedium = new STGMEDIUM();
     transferData.stgmedium.tymed = COM.TYMED_HGLOBAL;
--- a/dwt/events/SelectionListener.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/events/SelectionListener.d	Fri Jul 11 23:01:25 2008 +0200
@@ -63,3 +63,62 @@
  */
 public void widgetDefaultSelected(SelectionEvent e);
 }
+
+
+
+/// Helper class for the dgListener template function
+private class _DgSelectionListenerWidgetSelectedT(Dg,T...) : SelectionListener {
+
+    alias ParameterTupleOf!(DgSel) DgArgs;
+    static assert( is(DgArgs == Tuple!(SelectionEvent,T)),
+                "Delegate args not correct" );
+
+    Dg dg;
+    T  t;
+
+    private this( Dg dg, T t ){
+        this.dg = dg;
+        static if( T.length > 0 ){
+            this.t = t;
+        }
+    }
+
+    public void widgetSelected(SelectionEvent e){
+        dg(e,t);
+    }
+    public void widgetDefaultSelected(SelectionEvent e){
+    }
+}
+
+private class _DgSelectionListenerWidgetDefaultSelectedT(Dg,T...) : SelectionListener {
+
+    alias ParameterTupleOf!(DgSel) DgArgs;
+    static assert( is(DgArgs == Tuple!(SelectionEvent,T)),
+                "Delegate args not correct" );
+
+    Dg dg;
+    T  t;
+
+    private this( Dg dg, T t ){
+        this.dg = dg;
+        static if( T.length > 0 ){
+            this.t = t;
+        }
+    }
+
+    public void widgetSelected(SelectionEvent e){
+    }
+    public void widgetDefaultSelected(SelectionEvent e){
+        dg(e,t);
+    }
+}
+
+SelectionListener dgSelectionListenerWidgetSelected( Dg, T... )( Dg dg, T args ){
+    return new _DgSelectionListenerWidgetSelectedT!( Dg, T )( dg, args );
+}
+SelectionListener dgSelectionListenerWidgetDefaultSelected( Dg, T... )( Dg dg, T args ){
+    return new _DgSelectionListenerWidgetDefaultSelectedT!( Dg, T )( dg, args );
+}
+
+
+
--- a/dwt/internal/gdip/Gdip.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/internal/gdip/Gdip.d	Fri Jul 11 23:01:25 2008 +0200
@@ -21,6 +21,9 @@
 import dwt.internal.win32.WINTYPES;
 import dwt.internal.win32.WINAPI;
 import dwt.internal.win32.OS;
+version(TANGOSVN){
+import tango.sys.win32.UserGdi;
+}
 
 import tango.util.log.Trace;
 void trace(int line ){
--- a/dwt/internal/win32/OS.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/internal/win32/OS.d	Fri Jul 11 23:01:25 2008 +0200
@@ -13,8 +13,17 @@
 module dwt.internal.win32.OS;
 
 public import dwt.internal.win32.WINTYPES;
-private import dwt.internal.win32.WINAPI;
-alias dwt.internal.win32.WINAPI WINAPI;
+version(TANGOSVN){
+    private import dwt.internal.win32.WINAPI;
+    alias dwt.internal.win32.WINAPI DWTWINAPI;
+    private import tango.sys.win32.UserGdi;
+    alias tango.sys.win32.UserGdi WINAPI;
+}
+else{
+    private import dwt.internal.win32.WINAPI;
+    alias dwt.internal.win32.WINAPI WINAPI;
+    alias dwt.internal.win32.WINAPI USERGDIAPI;
+}
 
 import dwt.internal.C;
 import dwt.internal.Library;
@@ -2433,8 +2442,8 @@
     alias WINAPI.UnregisterClassA UnregisterClass;
     alias WINAPI.VkKeyScanA VkKeyScan;
 }else{
-    alias WINAPI.AddFontResourceExW AddFontResourceEx;
-    alias WINAPI.AssocQueryStringW AssocQueryString;
+    alias DWTWINAPI.AddFontResourceExW AddFontResourceEx;
+    alias DWTWINAPI.AssocQueryStringW AssocQueryString;
     alias WINAPI.CallWindowProcW CallWindowProc;
     alias WINAPI.CharLowerW CharLower;
     alias WINAPI.CharUpperW CharUpper;
@@ -2457,11 +2466,11 @@
     alias WINAPI.DrawTextW DrawText;
     alias WINAPI.EnumFontFamiliesExW EnumFontFamiliesEx;
     alias WINAPI.EnumFontFamiliesW EnumFontFamilies;
-    alias WINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroups;
+    alias DWTWINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroups;
     alias WINAPI.EnumSystemLocalesW EnumSystemLocales;
     alias WINAPI.ExpandEnvironmentStringsW ExpandEnvironmentStrings;
     alias WINAPI.ExtTextOutW ExtTextOut;
-    alias WINAPI.ExtractIconExW ExtractIconEx;
+    alias DWTWINAPI.ExtractIconExW ExtractIconEx;
     alias WINAPI.FindResourceW FindResource;
     alias WINAPI.FindWindowW FindWindow;
     alias WINAPI.FormatMessageW FormatMessage;
@@ -2479,7 +2488,7 @@
     alias WINAPI.GetMessageW GetMessage;
     alias WINAPI.GetModuleFileNameW GetModuleFileName;
     alias WINAPI.GetModuleHandleW GetModuleHandle;
-    alias WINAPI.GetMonitorInfoW GetMonitorInfo;
+    alias DWTWINAPI.GetMonitorInfoW GetMonitorInfo;
     alias WINAPI.GetObjectW GetObject;
     alias WINAPI.GetOpenFileNameW GetOpenFileName;
     alias WINAPI.GetOutlineTextMetricsW GetOutlineTextMetrics;
@@ -2523,8 +2532,8 @@
     alias WINAPI.RegOpenKeyExW RegOpenKeyEx;
     alias WINAPI.RegisterWindowMessageW RegisterWindowMessage;
     alias WINAPI.RemovePropW RemoveProp;
-    alias WINAPI.SHBrowseForFolderW SHBrowseForFolder;
-    alias WINAPI.SHGetPathFromIDListW SHGetPathFromIDList;
+    alias DWTWINAPI.SHBrowseForFolderW SHBrowseForFolder;
+    alias DWTWINAPI.SHGetPathFromIDListW SHGetPathFromIDList;
     alias WINAPI.SendMessageW SendMessage;
     alias WINAPI.SetMenuItemInfoW SetMenuItemInfo;
     alias WINAPI.SetWindowLongW SetWindowLong;
@@ -2532,8 +2541,8 @@
     alias WINAPI.SetWindowTextW SetWindowText;
     alias WINAPI.SetWindowsHookExW SetWindowsHookEx;
     alias WINAPI.SetPropW SetProp;
-    alias WINAPI.ShellExecuteExW ShellExecuteEx;
-    alias WINAPI.Shell_NotifyIconW Shell_NotifyIcon;
+    alias DWTWINAPI.ShellExecuteExW ShellExecuteEx;
+    alias DWTWINAPI.Shell_NotifyIconW Shell_NotifyIcon;
     alias WINAPI.StartDocW StartDoc;
     alias WINAPI.SystemParametersInfoW SystemParametersInfo;
     alias WINAPI.TranslateAcceleratorW TranslateAccelerator;
@@ -2812,7 +2821,7 @@
 alias WINAPI.AbortDoc AbortDoc;
 alias WINAPI.ActivateKeyboardLayout ActivateKeyboardLayout;
 alias WINAPI.AdjustWindowRectEx AdjustWindowRectEx;
-alias WINAPI.AlphaBlend AlphaBlend;
+alias DWTWINAPI.AlphaBlend AlphaBlend;
 alias WINAPI.Arc Arc;
 alias WINAPI.BeginDeferWindowPos BeginDeferWindowPos;
 alias WINAPI.BeginPaint BeginPaint;
@@ -2837,7 +2846,7 @@
 alias WINAPI.CloseEnhMetaFile CloseEnhMetaFile;
 alias WINAPI.CloseMetaFile CloseMetaFile;
 alias WINAPI.CombineRgn CombineRgn;
-alias WINAPI.CommDlgExtendedError CommDlgExtendedError;
+alias DWTWINAPI.CommDlgExtendedError CommDlgExtendedError;
 
 version(WinCE){
 alias WINAPI.CommandBar_AddAdornments CommandBar_AddAdornments;
@@ -2924,19 +2933,19 @@
 alias WINAPI.EnumFontFamiliesExA EnumFontFamiliesExA;
 alias WINAPI.EnumFontFamiliesExW EnumFontFamiliesExW;
 alias WINAPI.EnumFontFamiliesW EnumFontFamiliesW;
-alias WINAPI.EnumSystemLanguageGroupsA EnumSystemLanguageGroupsA;
-alias WINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroupsW;
+alias DWTWINAPI.EnumSystemLanguageGroupsA EnumSystemLanguageGroupsA;
+alias DWTWINAPI.EnumSystemLanguageGroupsW EnumSystemLanguageGroupsW;
 alias WINAPI.EnumSystemLocalesA EnumSystemLocalesA;
-alias WINAPI.EnumSystemLocalesW EnumSystemLocalesW;
-alias WINAPI.EqualRect EqualRect;
+alias DWTWINAPI.EnumSystemLocalesW EnumSystemLocalesW;
+alias DWTWINAPI.EqualRect EqualRect;
 alias WINAPI.EqualRgn EqualRgn;
 alias WINAPI.ExcludeClipRect ExcludeClipRect;
 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 DWTWINAPI.ExtractIconExA ExtractIconExA;
+alias DWTWINAPI.ExtractIconExW ExtractIconExW;
 alias WINAPI.ExtCreatePen ExtCreatePen;
 alias WINAPI.ExtCreateRegion ExtCreateRegion;
 alias WINAPI.FillRect FillRect;
@@ -2968,7 +2977,7 @@
 alias WINAPI.GetClipboardData GetClipboardData;
 alias WINAPI.GetClipboardFormatNameA GetClipboardFormatNameA;
 alias WINAPI.GetClipboardFormatNameW GetClipboardFormatNameW;
-alias WINAPI.GetComboBoxInfo GetComboBoxInfo;
+alias DWTWINAPI.GetComboBoxInfo GetComboBoxInfo;
 alias WINAPI.GetCurrentObject GetCurrentObject;
 alias WINAPI.GetCurrentProcessId GetCurrentProcessId;
 alias WINAPI.GetCurrentThreadId GetCurrentThreadId;
@@ -2985,7 +2994,7 @@
 alias WINAPI.GetDoubleClickTime GetDoubleClickTime;
 alias WINAPI.GetFocus GetFocus;
 alias WINAPI.GetFontLanguageInfo GetFontLanguageInfo;
-alias WINAPI.GetGUIThreadInfo GetGUIThreadInfo;
+alias DWTWINAPI.GetGUIThreadInfo GetGUIThreadInfo;
 alias WINAPI.GetIconInfo GetIconInfo;
 alias WINAPI.GetKeyNameTextA GetKeyNameTextA;
 alias WINAPI.GetKeyNameTextW GetKeyNameTextW;
@@ -2995,13 +3004,13 @@
 alias WINAPI.GetKeyboardState GetKeyboardState;
 alias WINAPI.GetLastActivePopup GetLastActivePopup;
 alias WINAPI.GetLastError GetLastError;
-alias WINAPI.GetLayout GetLayout;
+alias DWTWINAPI.GetLayout GetLayout;
 alias WINAPI.GetLocaleInfoA GetLocaleInfoA;
 alias WINAPI.GetLocaleInfoW GetLocaleInfoW;
 alias WINAPI.GetMenu GetMenu;
-alias WINAPI.GetMenuBarInfo GetMenuBarInfo;
+alias DWTWINAPI.GetMenuBarInfo GetMenuBarInfo;
 alias WINAPI.GetMenuDefaultItem GetMenuDefaultItem;
-alias WINAPI.GetMenuInfo GetMenuInfo;
+alias DWTWINAPI.GetMenuInfo GetMenuInfo;
 alias WINAPI.GetMenuItemCount GetMenuItemCount;
 alias WINAPI.GetMenuItemInfoA GetMenuItemInfoA;
 alias WINAPI.GetMenuItemInfoW GetMenuItemInfoW;
@@ -3016,7 +3025,7 @@
 alias WINAPI.GetModuleHandleA GetModuleHandleA;
 alias WINAPI.GetModuleHandleW GetModuleHandleW;
 alias WINAPI.GetMonitorInfoA GetMonitorInfoA;
-alias WINAPI.GetMonitorInfoW GetMonitorInfoW;
+alias DWTWINAPI.GetMonitorInfoW GetMonitorInfoW;
 alias WINAPI.GetNearestPaletteIndex GetNearestPaletteIndex;
 alias WINAPI.GetPath GetPath;
 alias WINAPI.GetObjectA GetObjectA;
@@ -3032,7 +3041,7 @@
 alias WINAPI.GetProfileStringA GetProfileStringA;
 alias WINAPI.GetProfileStringW GetProfileStringW;
 alias WINAPI.GetROP2 GetROP2;
-alias WINAPI.GetRandomRgn GetRandomRgn;
+alias DWTWINAPI.GetRandomRgn GetRandomRgn;
 alias WINAPI.GetRegionData GetRegionData;
 alias WINAPI.GetRgnBox GetRgnBox;
 alias WINAPI.GetSaveFileNameA GetSaveFileNameA;
@@ -3041,7 +3050,7 @@
 alias WINAPI.GetStockObject GetStockObject;
 alias WINAPI.GetSysColor GetSysColor;
 alias WINAPI.GetSysColorBrush GetSysColorBrush;
-alias WINAPI.GetSystemDefaultUILanguage GetSystemDefaultUILanguage;
+alias DWTWINAPI.GetSystemDefaultUILanguage GetSystemDefaultUILanguage;
 alias WINAPI.GetSystemMenu GetSystemMenu;
 alias WINAPI.GetSystemMetrics GetSystemMetrics;
 alias WINAPI.GetSystemPaletteEntries GetSystemPaletteEntries;
@@ -3075,11 +3084,11 @@
 alias WINAPI.GlobalLock GlobalLock;
 alias WINAPI.GlobalSize GlobalSize;
 alias WINAPI.GlobalUnlock GlobalUnlock;
-alias WINAPI.GradientFill GradientFill;
+alias DWTWINAPI.GradientFill GradientFill;
 alias WINAPI.HeapAlloc HeapAlloc;
 alias WINAPI.HeapFree HeapFree;
 alias WINAPI.HideCaret HideCaret;
-alias WINAPI.IIDFromString IIDFromString;
+alias DWTWINAPI.IIDFromString IIDFromString;
 alias WINAPI.ImageList_Add ImageList_Add;
 alias WINAPI.ImageList_AddMasked ImageList_AddMasked;
 alias WINAPI.ImageList_BeginDrag ImageList_BeginDrag;
@@ -3114,7 +3123,7 @@
 // alias WINAPI.ImmSetCompositionFontW ImmSetCompositionFontW;
 // alias WINAPI.ImmSetOpenStatus ImmSetOpenStatus;
 alias WINAPI.InitCommonControls InitCommonControls;
-alias WINAPI.InitCommonControlsEx InitCommonControlsEx;
+alias DWTWINAPI.InitCommonControlsEx InitCommonControlsEx;
 alias WINAPI.InsertMenuA InsertMenuA;
 alias WINAPI.InsertMenuItemA InsertMenuItemA;
 alias WINAPI.InsertMenuItemW InsertMenuItemW;
@@ -3126,7 +3135,7 @@
 alias WINAPI.InvalidateRect InvalidateRect;
 alias WINAPI.InvalidateRgn InvalidateRgn;
 alias WINAPI.IsDBCSLeadByte IsDBCSLeadByte;
-alias WINAPI.IsHungAppWindow IsHungAppWindow;
+alias DWTWINAPI.IsHungAppWindow IsHungAppWindow;
 alias WINAPI.IsIconic IsIconic;
 alias WINAPI.IsWindow IsWindow;
 alias WINAPI.IsWindowEnabled IsWindowEnabled;
@@ -3155,11 +3164,11 @@
 alias WINAPI.MessageBeep MessageBeep;
 alias WINAPI.MessageBoxA MessageBoxA;
 alias WINAPI.MessageBoxW MessageBoxW;
-alias WINAPI.MonitorFromWindow MonitorFromWindow;
+alias DWTWINAPI.MonitorFromWindow MonitorFromWindow;
 alias WINAPI.MoveToEx MoveToEx;
-alias WINAPI.MsgWaitForMultipleObjectsEx MsgWaitForMultipleObjectsEx;
+alias DWTWINAPI.MsgWaitForMultipleObjectsEx MsgWaitForMultipleObjectsEx;
 alias WINAPI.MultiByteToWideChar MultiByteToWideChar;
-alias WINAPI.NotifyWinEvent NotifyWinEvent;
+alias DWTWINAPI.NotifyWinEvent NotifyWinEvent;
 alias WINAPI.OffsetRect OffsetRect;
 alias WINAPI.OffsetRgn OffsetRgn;
 //alias WINAPI.OleInitialize OleInitialize;
@@ -3207,15 +3216,15 @@
 alias WINAPI.RemoveMenu RemoveMenu;
 alias WINAPI.RestoreDC RestoreDC;
 alias WINAPI.RoundRect RoundRect;
-alias WINAPI.RtlMoveMemory MoveMemory;
-alias WINAPI.SHBrowseForFolderA SHBrowseForFolderA;
-alias WINAPI.SHBrowseForFolderW SHBrowseForFolderW;
+alias DWTWINAPI.RtlMoveMemory MoveMemory;
+alias DWTWINAPI.SHBrowseForFolderA SHBrowseForFolderA;
+alias DWTWINAPI.SHBrowseForFolderW SHBrowseForFolderW;
 version(WinCE){
     alias WINAPI.SHCreateMenuBar SHCreateMenuBar;
 }
-alias WINAPI.SHGetMalloc SHGetMalloc;
-alias WINAPI.SHGetPathFromIDListA SHGetPathFromIDListA;
-alias WINAPI.SHGetPathFromIDListW SHGetPathFromIDListW;
+alias DWTWINAPI.SHGetMalloc SHGetMalloc;
+alias DWTWINAPI.SHGetPathFromIDListA SHGetPathFromIDListA;
+alias DWTWINAPI.SHGetPathFromIDListW SHGetPathFromIDListW;
 version(WinCE)
 {
     alias WINAPI.SHHandleWMSettingChange SHHandleWMSettingChange;
@@ -3226,31 +3235,31 @@
 }
 alias WINAPI.SaveDC SaveDC;
 alias WINAPI.ScreenToClient ScreenToClient;
-alias WINAPI.ScriptApplyDigitSubstitution ScriptApplyDigitSubstitution;
-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.ScriptJustify ScriptJustify;
-alias WINAPI.ScriptLayout ScriptLayout;
-alias WINAPI.ScriptPlace ScriptPlace;
-alias WINAPI.ScriptRecordDigitSubstitution ScriptRecordDigitSubstitution;
-alias WINAPI.ScriptGetCMap ScriptGetCMap;
-alias WINAPI.ScriptShape ScriptShape;
-alias WINAPI.ScriptStringAnalyse ScriptStringAnalyse;
-alias WINAPI.ScriptStringOut ScriptStringOut;
-alias WINAPI.ScriptStringFree ScriptStringFree;
-alias WINAPI.ScriptTextOut ScriptTextOut;
-alias WINAPI.ScriptXtoCP ScriptXtoCP;
+alias DWTWINAPI.ScriptApplyDigitSubstitution ScriptApplyDigitSubstitution;
+alias DWTWINAPI.ScriptBreak ScriptBreak;
+alias DWTWINAPI.ScriptCPtoX ScriptCPtoX;
+alias DWTWINAPI.ScriptCacheGetHeight ScriptCacheGetHeight;
+alias DWTWINAPI.ScriptFreeCache ScriptFreeCache;
+alias DWTWINAPI.ScriptGetFontProperties ScriptGetFontProperties;
+alias DWTWINAPI.ScriptGetLogicalWidths ScriptGetLogicalWidths;
+alias DWTWINAPI.ScriptGetProperties ScriptGetProperties;
+alias DWTWINAPI.ScriptItemize ScriptItemize;
+alias DWTWINAPI.ScriptJustify ScriptJustify;
+alias DWTWINAPI.ScriptLayout ScriptLayout;
+alias DWTWINAPI.ScriptPlace ScriptPlace;
+alias DWTWINAPI.ScriptRecordDigitSubstitution ScriptRecordDigitSubstitution;
+alias DWTWINAPI.ScriptGetCMap ScriptGetCMap;
+alias DWTWINAPI.ScriptShape ScriptShape;
+alias DWTWINAPI.ScriptStringAnalyse ScriptStringAnalyse;
+alias DWTWINAPI.ScriptStringOut ScriptStringOut;
+alias DWTWINAPI.ScriptStringFree ScriptStringFree;
+alias DWTWINAPI.ScriptTextOut ScriptTextOut;
+alias DWTWINAPI.ScriptXtoCP ScriptXtoCP;
 alias WINAPI.ScrollWindowEx ScrollWindowEx;
 alias WINAPI.SelectClipRgn SelectClipRgn;
 alias WINAPI.SelectObject SelectObject;
 alias WINAPI.SelectPalette SelectPalette;
-alias WINAPI.SendInput SendInput;
+alias DWTWINAPI.SendInput SendInput;
 alias WINAPI.SendMessageA SendMessageA;
 alias WINAPI.SendMessageW SendMessageW;
 alias WINAPI.SetActiveWindow SetActiveWindow;
@@ -3269,10 +3278,10 @@
 alias WINAPI.SetForegroundWindow SetForegroundWindow;
 alias WINAPI.SetGraphicsMode SetGraphicsMode;
 alias WINAPI.SetLastError SetLastError;
-alias WINAPI.SetLayout SetLayout;
+alias DWTWINAPI.SetLayout SetLayout;
 alias WINAPI.SetMenu SetMenu;
 alias WINAPI.SetMenuDefaultItem SetMenuDefaultItem;
-alias WINAPI.SetMenuInfo SetMenuInfo;
+alias DWTWINAPI.SetMenuInfo SetMenuInfo;
 alias WINAPI.SetMenuItemInfoA SetMenuItemInfoA;
 alias WINAPI.SetMenuItemInfoW SetMenuItemInfoW;
 alias WINAPI.SetMetaRgn SetMetaRgn;
@@ -3299,10 +3308,10 @@
 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 DWTWINAPI.ShellExecuteExA ShellExecuteExA;
+alias DWTWINAPI.ShellExecuteExW ShellExecuteExW;
+alias DWTWINAPI.Shell_NotifyIconA Shell_NotifyIconA;
+alias DWTWINAPI.Shell_NotifyIconW Shell_NotifyIconW;
 alias WINAPI.SHGetFileInfo SHGetFileInfo;
 alias WINAPI.ShowCaret ShowCaret;
 alias WINAPI.ShowOwnedPopups ShowOwnedPopups;
@@ -3321,14 +3330,14 @@
 alias WINAPI.SystemParametersInfoW SystemParametersInfoW;
 alias WINAPI.ToAscii ToAscii;
 alias WINAPI.ToUnicode ToUnicode;
-alias WINAPI.TrackMouseEvent TrackMouseEvent;
+alias DWTWINAPI.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;
-alias WINAPI.TransparentBlt TransparentBlt;
+alias DWTWINAPI.TransparentBlt TransparentBlt;
 version(WinCE){
     alias WINAPI.TransparentImage TransparentImage;
 }
@@ -3345,7 +3354,7 @@
 alias WINAPI.WideCharToMultiByte WideCharToMultiByte;
 alias WINAPI.WindowFromDC WindowFromDC;
 alias WINAPI.WindowFromPoint WindowFromPoint;
-alias WINAPI.wcslen wcslen;
+alias DWTWINAPI.wcslen wcslen;
 
 public static int VERSION (int major, int minor) {  return major << 16 | minor;}
 
@@ -3455,9 +3464,9 @@
 }
 
 
-alias WINAPI.OleInitialize OleInitialize;
-alias WINAPI.OleUninitialize OleUninitialize;
-alias WINAPI.CoCreateInstance CoCreateInstance;
+alias DWTWINAPI.OleInitialize OleInitialize;
+alias DWTWINAPI.OleUninitialize OleUninitialize;
+alias DWTWINAPI.CoCreateInstance CoCreateInstance;
 
 /**
  * <Shawn Liu>
@@ -3547,7 +3556,7 @@
     *cast(HTREEITEM *)prc = hitem;
     return cast(bool) SendMessage( hwnd, TVM_GETITEMRECT, code, cast(int)prc );
 }
-static int strlen( CHAR* ptr ){
+static int strlen( PCHAR ptr ){
     return tango.stdc.string.strlen( cast(char*)ptr );
 }
 
@@ -3556,7 +3565,7 @@
     pt.y = cast(SHORT) HIWORD(pts);
 }
 
-alias WINAPI.GetScrollBarInfo GetScrollBarInfo;
+alias DWTWINAPI.GetScrollBarInfo GetScrollBarInfo;
 } // END of OS
 //-----------------------------------------------------------------------------
 import tango.sys.win32.CodePage : CodePage;
--- a/dwt/internal/win32/WINAPI.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/internal/win32/WINAPI.d	Fri Jul 11 23:01:25 2008 +0200
@@ -10,11 +10,12 @@
 //import tango_sys_win32.Types;
 //import STDWIN = tango_sys_win32.UserGdi;
 
+version(TANGOSVN){
+}
+else{ // !TANGOSVN
 
 extern(Windows)
 {
-    HRESULT AssocQueryStringA(ASSOCF flags, int str, LPCTSTR pszAssoc, LPCTSTR pszExtra, LPTSTR pszOut, DWORD *pcchOut);
-    HRESULT AssocQueryStringW(ASSOCF flags, int str, LPCTSTR pszAssoc, LPCTSTR pszExtra, LPTSTR pszOut, DWORD *pcchOut);
 
 //     BOOL GetWindowInfo(HWND, PWINDOWINFO);
 //     BOOL EnumDisplayMonitors(HDC, RECT*, MONITORENUMPROC, LPARAM);
@@ -1749,11 +1750,13 @@
 //         BOOL SetWaitableTimer(HANDLE hTimer, LARGE_INTEGER* pDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, BOOL fResume);
 }
 
-
+} // !TANGOSVN
 ////////////////////////////////////////////////////////////////////////////////////////
 // dwt
 ////////////////////////////////////////////////////////////////////////////////////////
 
+    HRESULT AssocQueryStringA(ASSOCF flags, int str, LPCTSTR pszAssoc, LPCTSTR pszExtra, LPTSTR pszOut, DWORD *pcchOut);
+    HRESULT AssocQueryStringW(ASSOCF flags, int str, LPCTSTR pszAssoc, LPCTSTR pszExtra, LPTSTR pszOut, DWORD *pcchOut);
 alias HANDLE HPAINTBUFFER;
 
 extern (Windows){
@@ -3238,12 +3241,6 @@
     WPARAM wParam,
     LPARAM lParam
 );
-BOOL PrintDlgA(
-    LPPRINTDLGA lppd
-);
-BOOL PrintDlgW(
-    LPPRINTDLGW lppd
-);
 BOOL PtInRect(
     RECT *lprc,  // rectangle
     POINT pt           // point
--- a/dwt/internal/win32/WINTYPES.d	Sun Jul 06 18:45:41 2008 +0200
+++ b/dwt/internal/win32/WINTYPES.d	Fri Jul 11 23:01:25 2008 +0200
@@ -8,7 +8,10 @@
     adopted form tango
     Author:     Trevor Parscal
 */
-
+version(TANGOSVN){
+    public import tango.sys.win32.Types;
+}
+else{ // !TANGOSVN
 /+ Aliases, Types, and Constants +/
 const void* NULL = null;
 alias int SCODE;
@@ -19,11 +22,11 @@
 alias WINBOOL BOOL;
 alias uint CALTYPE;
 alias uint CALID;
-alias ubyte CCHAR;
-alias ubyte* PCHAR;
+alias char CCHAR;
+alias char* PCHAR;
 alias uint COLORREF;
 alias uint TCOLORREF;
-alias ubyte CHAR;
+alias char CHAR;
 alias ubyte BYTE;
 alias short INT16;
 alias ushort UINT16;
@@ -37,10 +40,11 @@
 alias uint UINT_PTR;
 alias int LONG_PTR;
 alias uint ULONG_PTR;
+alias DWORD DWORD_PTR;
 alias uint PROPID;
 const BOOL FALSE = 0;
 const BOOL TRUE = -1;
-alias ubyte* PANSICHAR;
+alias char* PANSICHAR;
 alias wchar* PWIDECHAR;
 alias int* PINTEGER;
 alias long LONGLONG;
@@ -156,7 +160,10 @@
 alias ubyte TBYTE;
 
 version(Win32SansUnicode){
-    alias ubyte  TCHAR;
+    // Strictly speaking this should be ubyte since char is UTF-8, but that
+    // fills code with so many casts that it's just not sensible.
+    // (See also DMD Issue 2193.)
+    alias  char TCHAR;
 }else{
     alias wchar TCHAR;
 }
@@ -2877,7 +2884,7 @@
     RDW_ALLCHILDREN = (128),
     RDW_NOCHILDREN = (64),
 /*
-   //
+    //
     HKEY_CLASSES_ROOT = (0x80000000),
     HKEY_CURRENT_USER = (0x80000001),
     HKEY_LOCAL_MACHINE = (0x80000002),
@@ -6827,28 +6834,52 @@
     alias LOGFONTW* LPLOGFONT;
 }
 
-struct TCHOOSEFONT
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HDC hDC;
-    LPLOGFONT lpLogFont;
-    INT iPointSize;
-    DWORD Flags;
-    DWORD rgbColors;
-    LPARAM lCustData;
+struct CHOOSEFONTA {
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HDC          hDC;
+    LPLOGFONTA   lpLogFont;
+    INT          iPointSize;
+    DWORD        Flags;
+    DWORD        rgbColors;
+    LPARAM       lCustData;
     LPCFHOOKPROC lpfnHook;
-    LPCTSTR lpTemplateName;
-    HINST hInstance;
-    LPTSTR lpszStyle;
-    ushort nFontType;
-    ushort ___MISSING_ALIGNMENT__;
-    INT nSizeMin;
-    INT nSizeMax;
-}
-
-alias TCHOOSEFONT* LPCHOOSEFONT;
-alias TCHOOSEFONT* PCHOOSEFONT;
+    LPCSTR      lpTemplateName;
+    HINSTANCE    hInstance;
+    LPSTR       lpszStyle;
+    WORD         nFontType;
+    WORD         ___MISSING_ALIGNMENT__;
+    INT          nSizeMin;
+    INT          nSizeMax;
+}alias CHOOSEFONTA* PCHOOSEFONTA, LPCHOOSEFONTA;
+
+struct CHOOSEFONTW {
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HDC          hDC;
+    LOGFONTW*    lpLogFont;
+    INT          iPointSize;
+    DWORD        Flags;
+    DWORD        rgbColors;
+    LPARAM       lCustData;
+    LPCFHOOKPROC lpfnHook;
+    LPCWSTR      lpTemplateName;
+    HINSTANCE    hInstance;
+    LPWSTR       lpszStyle;
+    WORD         nFontType;
+    WORD         ___MISSING_ALIGNMENT__;
+    INT          nSizeMin;
+    INT          nSizeMax;
+}alias CHOOSEFONTW* PCHOOSEFONTW, LPCHOOSEFONTW;
+version(Win32SansUnicode){
+    alias CHOOSEFONTA CHOOSEFONT;
+}else{
+    alias CHOOSEFONTW CHOOSEFONT;
+}
+
+alias CHOOSEFONT* LPCHOOSEFONT;
+alias CHOOSEFONT* PCHOOSEFONT;
+alias CHOOSEFONT TCHOOSEFONT;
 
 struct CIDA
 {
@@ -8002,6 +8033,7 @@
 alias DOCINFO* LPDOCINFO;
 alias DOCINFO* PDOCINFO;
 
+
 struct DRAGLISTINFO
 {
     UINT uNotification;
@@ -11582,34 +11614,67 @@
 alias PREVENT_MEDIA_REMOVAL TPREVENTMEDIAREMOVAL;
 alias PREVENT_MEDIA_REMOVAL* PPREVENTMEDIAREMOVAL;
 
-align(1) struct TPRINTDLG
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HANDLE hDevMode;
-    HANDLE hDevNames;
-    HDC hDC;
-    DWORD Flags;
-    ushort nFromPage;
-    ushort nToPage;
-    ushort nMinPage;
-    ushort nMaxPage;
-    ushort nCopies;
-    HINST hInstance;
-    DWORD lCustData;
+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 lpfnPrintHook;
     LPSETUPHOOKPROC lpfnSetupHook;
-    LPCTSTR lpPrintTemplateName;
-    LPCTSTR lpSetupTemplateName;
-    HANDLE hPrintTemplate;
-    HANDLE hSetupTemplate;
-}
-
-alias TPRINTDLG* LPPRINTDLG;
-alias TPRINTDLG* PPRINTDLG;
-alias TPRINTDLG TAGPD;
-alias TPRINTDLG TPD;
-alias TPRINTDLG* PPD;
+    LPCSTR    lpPrintTemplateName;
+    LPCSTR    lpSetupTemplateName;
+    HANDLE    hPrintTemplate;
+    HANDLE    hSetupTemplate;
+}
+alias PRINTDLGA* PPRINTDLGA;
+alias PRINTDLGA* 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 lpfnPrintHook;
+    LPSETUPHOOKPROC lpfnSetupHook;
+    LPCWSTR    lpPrintTemplateName;
+    LPCWSTR    lpSetupTemplateName;
+    HANDLE    hPrintTemplate;
+    HANDLE    hSetupTemplate;
+}
+alias PRINTDLGW* PPRINTDLGW;
+alias PRINTDLGW* LPPRINTDLGW;
+
+version(Win32SansUnicode){
+    alias PRINTDLGA PRINTDLG;
+}else{
+    alias PRINTDLGW PRINTDLG;
+}
+
+
+alias PRINTDLG* LPPRINTDLG;
+alias PRINTDLG* PPRINTDLG;
+alias PRINTDLG TAGPD;
+alias PRINTDLG TPD;
+alias PRINTDLG* PPD;
 
 struct PRINTER_DEFAULTS
 {
@@ -13453,7 +13518,7 @@
 alias NETCONNECTINFOSTRUCT TNETCONNECTINFOSTRUCT;
 alias NETCONNECTINFOSTRUCT* PNETCONNECTINFOSTRUCT;
 extern(Windows){
-alias int (*ENUMMETAFILEPROC)(HDC, HANDLETABLE, METARECORD, int, LPARAM);
+alias int (*ENUMMETAFILEPROC)(HDC, HANDLETABLE*, METARECORD*, int, LPARAM);
 alias int (*ENHMETAFILEPROC)(HDC, HANDLETABLE*, ENHMETARECORD*, int, LPARAM);
 alias int (*ENUMFONTSPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
 alias int (*FONTENUMPROC)(ENUMLOGFONT*, NEWTEXTMETRIC*, int, LPARAM);
@@ -13914,6 +13979,8 @@
 int CO_E_RELEASED = (DWORD)((0x800401FF));
 */
 
+} // !TANGOSVN
+
 ///////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////////////////
 
@@ -14062,7 +14129,7 @@
 alias DWORD LGRPID;
 //alias LONG LONG_PTR;
 //alias ULONG ULONG_PTR;
-alias DWORD DWORD_PTR;
+//alias DWORD DWORD_PTR;
 //alias int INT_PTR;
 //alias uint UINT_PTR;
 // alias DWORD LCID;
@@ -14208,53 +14275,6 @@
 
 
 
-struct CHOOSEFONTA {
-    // sizeof = 60 ???
-//  align(2):
-    DWORD        lStructSize;
-    HWND         hwndOwner;
-    HDC          hDC;
-    LPLOGFONTA   lpLogFont;
-    INT          iPointSize;
-    DWORD        Flags;
-    DWORD        rgbColors;
-    LPARAM       lCustData;
-    LPCFHOOKPROC 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 lpfnHook;
-    LPCWSTR      lpTemplateName;
-    HINSTANCE    hInstance;
-    LPWSTR       lpszStyle;
-    WORD         nFontType;
-    WORD         ___MISSING_ALIGNMENT__;
-    INT          nSizeMin;
-    INT          nSizeMax;
-}alias CHOOSEFONTW* PCHOOSEFONTW, LPCHOOSEFONTW;
-version(Win32SansUnicode){
-    alias CHOOSEFONTA CHOOSEFONT;
-}else{
-    alias CHOOSEFONTW CHOOSEFONT;
-}
-
 struct COMBOBOXINFO {
     DWORD cbSize;
     RECT rcItem;
@@ -15086,58 +15106,6 @@
 //}
 
 
-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 lpfnPrintHook;
-    LPSETUPHOOKPROC 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 lpfnPrintHook;
-    LPSETUPHOOKPROC lpfnSetupHook;
-    LPCWSTR    lpPrintTemplateName;
-    LPCWSTR    lpSetupTemplateName;
-    HANDLE    hPrintTemplate;
-    HANDLE    hSetupTemplate;
-}
-alias PRINTDLGW* PPRINTDLGW, LPPRINTDLGW;
-version(Win32SansUnicode){
-    alias PRINTDLGA PRINTDLG;
-}else{
-    alias PRINTDLGW PRINTDLG;
-}
-
 struct REBARBANDINFOA {
     UINT        cbSize;
     UINT        fMask;