diff dwt/widgets/Tree.d @ 237:e2affbeb686d

Making tango.sys.win32.Types and dwt.internal.win32.WINTYPES to match common declaration. Make ansi charactars of type ubyte.
author Frank Benoit <benoit@tionex.de>
date Thu, 19 Jun 2008 03:25:36 +0200
parents 9c2ceaa48046
children ecb80b2a89e1
line wrap: on
line diff
--- a/dwt/widgets/Tree.d	Sun Jun 08 15:12:40 2008 +0200
+++ b/dwt/widgets/Tree.d	Thu Jun 19 03:25:36 2008 +0200
@@ -276,7 +276,7 @@
 TreeItem _getItem (HANDLE hItem) {
     TVITEM tvItem;
     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
-    tvItem.hItem = hItem;
+    tvItem.hItem = cast(HTREEITEM)hItem;
     if (OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem) !is 0) {
         return _getItem (tvItem.hItem, tvItem.lParam);
     }
@@ -1248,7 +1248,7 @@
                         OS.SetRect (&rect, nmcd.nmcd.rc.left, nmcd.nmcd.rc.top, nmcd.nmcd.rc.left + hdItem.cxy, nmcd.nmcd.rc.bottom);
                         if (OS.COMCTL32_MAJOR < 6 || !OS.IsAppThemed ()) {
                             RECT itemRect;
-                            if (OS.TreeView_GetItemRect (handle, item.handle, &itemRect, true)) {
+                            if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)item.handle, &itemRect, true)) {
                                 rect.left = Math.min (itemRect.left, rect.right);
                             }
                         }
@@ -1385,7 +1385,7 @@
                         }
                         if (hItem !is null) {
                             RECT rect;
-                            if (OS.TreeView_GetItemRect (handle, hItem, &rect, false)) {
+                            if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false)) {
                                 top = rect.bottom;
                             }
                         }
@@ -1440,7 +1440,7 @@
                 hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_LASTVISIBLE, 0);
             }
             if (hItem !is null) {
-                if (OS.TreeView_GetItemRect (handle, hItem, &rect, false)) {
+                if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false)) {
                     height = rect.bottom - rect.top;
                 }
             }
@@ -1496,7 +1496,7 @@
                 if (hItem !is null) {
                     TVITEM tvItem;
                     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
-                    tvItem.hItem = hItem;
+                    tvItem.hItem = cast(HTREEITEM)hItem;
                     OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                     hSelect = hItem;
                     ignoreDeselect = ignoreSelect = lockSelection = true;
@@ -1743,7 +1743,7 @@
 }
 
 void clear (HANDLE hItem, TVITEM* tvItem) {
-    tvItem.hItem = hItem;
+    tvItem.hItem = cast(HTREEITEM)hItem;
     TreeItem item = null;
     if (OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem) !is 0) {
         item = tvItem.lParam !is -1 ? items [tvItem.lParam] : null;
@@ -1835,13 +1835,13 @@
         if ((style & DWT.VIRTUAL) is 0 && !painted) {
             TVITEM tvItem;
             tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_TEXT;
-            tvItem.hItem = hItem;
+            tvItem.hItem = cast(HTREEITEM)hItem;
             tvItem.pszText = OS.LPSTR_TEXTCALLBACK;
             ignoreCustomDraw = true;
             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
             ignoreCustomDraw = false;
         }
-        if (OS.TreeView_GetItemRect (handle, hItem, &rect, true)) {
+        if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, true)) {
             width = Math.max (width, rect.right);
             height += rect.bottom - rect.top;
         }
@@ -2113,8 +2113,8 @@
     bool fixParent = hFirstItem is null;
     if (hItem is null) {
         TVINSERTSTRUCT tvInsert;
-        tvInsert.hParent = hParent;
-        tvInsert.hInsertAfter = hInsertAfter;
+        tvInsert.hParent = cast(HTREEITEM)hParent;
+        tvInsert.hInsertAfter = cast(HTREEITEM)hInsertAfter;
         tvInsert.item.lParam = id;
         tvInsert.item.pszText = OS.LPSTR_TEXTCALLBACK;
         tvInsert.item.iImage = tvInsert.item.iSelectedImage = cast(HBITMAP) OS.I_IMAGECALLBACK;
@@ -2139,7 +2139,7 @@
     } else {
         TVITEM tvItem;
         tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
-        tvItem.hItem = hNewItem = hItem;
+        tvItem.hItem = cast(HTREEITEM)( hNewItem = hItem );
         tvItem.lParam = id;
         OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
     }
@@ -2165,7 +2165,7 @@
         if (fixParent) {
             if (drawCount is 0 && OS.IsWindowVisible (handle)) {
                 RECT rect;
-                if (OS.TreeView_GetItemRect (handle, hParent, &rect, false)) {
+                if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hParent, &rect, false)) {
                     OS.InvalidateRect (handle, &rect, true);
                 }
             }
@@ -2180,7 +2180,7 @@
         if ((style & DWT.VIRTUAL) !is 0) {
             if (currentItem !is null) {
                 RECT rect;
-                if (OS.TreeView_GetItemRect (handle, hNewItem, &rect, false)) {
+                if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hNewItem, &rect, false)) {
                     RECT damageRect;
                     bool damaged = cast(bool) OS.GetUpdateRect (handle, &damageRect, true);
                     if (damaged && damageRect.top < rect.bottom) {
@@ -2348,7 +2348,7 @@
 void deselect (HANDLE hItem, TVITEM* tvItem, HANDLE hIgnoreItem) {
     while (hItem !is null) {
         if (hItem !is hIgnoreItem) {
-            tvItem.hItem = hItem;
+            tvItem.hItem = cast(HTREEITEM)hItem;
             OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem);
         }
         auto hFirstItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hItem);
@@ -2381,7 +2381,7 @@
     TVITEM tvItem;
     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
     tvItem.stateMask = OS.TVIS_SELECTED;
-    tvItem.hItem = item.handle;
+    tvItem.hItem = cast(HTREEITEM)item.handle;
     OS.SendMessage (handle, OS.TVM_SETITEM, 0, cast(int)&tvItem);
 }
 
@@ -2401,7 +2401,7 @@
     if ((style & DWT.SINGLE) !is 0) {
         HANDLE hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CARET, 0);
         if (hItem !is null) {
-            tvItem.hItem = hItem;
+            tvItem.hItem = cast(HTREEITEM)hItem;
             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
         }
     } else {
@@ -2414,7 +2414,7 @@
             for (int i=0; i<items.length; i++) {
                 TreeItem item = items [i];
                 if (item !is null) {
-                    tvItem.hItem = item.handle;
+                    tvItem.hItem = cast(HTREEITEM)item.handle;
                     OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                 }
             }
@@ -2584,7 +2584,7 @@
     if ((style & DWT.DOUBLE_BUFFERED) is 0) {
         if (drawCount is 0 && OS.IsWindowVisible (handle)) {
             RECT rect;
-            fixRedraw = !OS.TreeView_GetItemRect (handle, hItem, &rect, false);
+            fixRedraw = !OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false);
         }
     }
     if (fixRedraw) {
@@ -2630,7 +2630,7 @@
         */
         if (OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hParent) is 0) {
             RECT rect;
-            if (OS.TreeView_GetItemRect (handle, hParent, &rect, false)) {
+            if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hParent, &rect, false)) {
                 OS.InvalidateRect (handle, &rect, true);
             }
         }
@@ -3146,7 +3146,7 @@
         if (id is -1) {
             TVITEM tvItem;
             tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
-            tvItem.hItem = cast(HANDLE) nmcd.nmcd.dwItemSpec;
+            tvItem.hItem = cast(HTREEITEM) nmcd.nmcd.dwItemSpec;
             OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
             id = tvItem.lParam;
         }
@@ -3288,7 +3288,7 @@
     TreeItem [] result = new TreeItem [count];
     TVITEM tvItem;
     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
-    tvItem.hItem = hTreeItem;
+    tvItem.hItem = cast(HTREEITEM)hTreeItem;
     /*
     * Feature in Windows.  In some cases an expand or collapse message
     * can occur from within TVM_DELETEITEM.  When this happens, the item
@@ -3300,7 +3300,7 @@
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         TreeItem item = _getItem (tvItem.hItem, tvItem.lParam);
         if (item !is null) result [index++] = item;
-        tvItem.hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXT, tvItem.hItem);
+        tvItem.hItem = cast(HTREEITEM) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXT, tvItem.hItem);
     }
     if (index !is count) {
         TreeItem [] newResult = new TreeItem [index];
@@ -3373,7 +3373,7 @@
 int getSelection (HANDLE hItem, TVITEM* tvItem, TreeItem [] selection, int index, int count, bool bigSelection, bool all) {
     while (hItem !is null) {
         if (OS.IsWinCE || bigSelection) {
-            tvItem.hItem = hItem;
+            tvItem.hItem = cast(HTREEITEM)hItem;
             OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
             if ((tvItem.state & OS.TVIS_SELECTED) !is 0) {
                 if (selection !is null && index < selection.length) {
@@ -3385,7 +3385,7 @@
             int state = OS.SendMessage (handle, OS.TVM_GETITEMSTATE, hItem, OS.TVIS_SELECTED);
             if ((state & OS.TVIS_SELECTED) !is 0) {
                 if (tvItem !is null && selection !is null && index < selection.length) {
-                    tvItem.hItem = hItem;
+                    tvItem.hItem = cast(HTREEITEM)hItem;
                     OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem);
                     selection [index] = _getItem (hItem, tvItem.lParam);
                 }
@@ -3429,7 +3429,7 @@
         if (hItem is null) return new TreeItem [0];
         TVITEM tvItem;
         tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM | OS.TVIF_STATE;
-        tvItem.hItem = hItem;
+        tvItem.hItem = cast(HTREEITEM)hItem;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         if ((tvItem.state & OS.TVIS_SELECTED) is 0) return new TreeItem [0];
         return [_getItem (tvItem.hItem, tvItem.lParam)];
@@ -3761,7 +3761,7 @@
     if (OS.IsWindowEnabled (handle)) {
         TVITEM tvItem;
         tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
-        tvItem.hItem = cast(HANDLE) nmcd.nmcd.dwItemSpec;
+        tvItem.hItem = cast(HTREEITEM)nmcd.nmcd.dwItemSpec;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         if ((tvItem.state & (OS.TVIS_SELECTED | OS.TVIS_DROPHILITED)) !is 0) {
             selected = true;
@@ -3825,7 +3825,7 @@
         HANDLE hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CARET, 0);
         if (hItem !is null) {
             RECT rect;
-            if (OS.TreeView_GetItemRect (handle, hItem, &rect, false)) {
+            if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false)) {
                 OS.InvalidateRect (handle, &rect, true);
             }
         }
@@ -3849,7 +3849,7 @@
                     state = OS.SendMessage (handle, OS.TVM_GETITEMSTATE, hItem, OS.TVIS_SELECTED);
                 }
                 if ((state & OS.TVIS_SELECTED) !is 0) {
-                    if (OS.TreeView_GetItemRect (handle, hItem, &rect, false)) {
+                    if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false)) {
                         OS.InvalidateRect (handle, &rect, true);
                     }
                 }
@@ -3869,7 +3869,7 @@
 void releaseItem (HANDLE hItem, TVITEM* tvItem, bool release) {
     if (hItem is hAnchor) hAnchor = null;
     if (hItem is hInsert) hInsert = null;
-    tvItem.hItem = hItem;
+    tvItem.hItem = cast(HTREEITEM)hItem;
     if (OS.SendMessage (handle, OS.TVM_GETITEM, 0, tvItem) !is 0) {
         if (tvItem.lParam !is -1) {
             if (tvItem.lParam < lastID) lastID = tvItem.lParam;
@@ -4110,7 +4110,7 @@
     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
     if (!redraw && (style & DWT.VIRTUAL) !is 0) {
         if (OS.IsWinCE) {
-            tvItem.hItem = hParent;
+            tvItem.hItem = cast(HTREEITEM)hParent;
             tvItem.mask = OS.TVIF_STATE;
             OS.SendMessage (handle, OS.TVM_GETITEM, 0, cast(int)&tvItem);
             expanded = (tvItem.state & OS.TVIS_EXPANDED) !is 0;
@@ -4126,7 +4126,7 @@
         }
     }
     while (hItem !is null) {
-        tvItem.hItem = hItem;
+        tvItem.hItem = cast(HTREEITEM)hItem;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXT, hItem);
         TreeItem item = tvItem.lParam !is -1 ? items [tvItem.lParam] : null;
@@ -4140,7 +4140,7 @@
     if ((style & DWT.VIRTUAL) !is 0) {
         for (int i=itemCount; i<count; i++) {
             if (expanded) ignoreShrink = true;
-            createItem (null, hParent, cast(HANDLE) OS.TVI_LAST, null);
+            createItem (null, hParent, cast(HTREEITEM) OS.TVI_LAST, null);
             if (expanded) ignoreShrink = false;
         }
     } else {
@@ -4150,7 +4150,7 @@
         System.arraycopy (items, 0, newItems, 0, items.length);
         items = newItems;
         for (int i=itemCount; i<count; i++) {
-            new TreeItem (this, DWT.NONE, hParent, cast(HANDLE) OS.TVI_LAST, null);
+            new TreeItem (this, DWT.NONE, hParent, cast(HTREEITEM) OS.TVI_LAST, null);
         }
     }
     if (redraw) {
@@ -4211,7 +4211,7 @@
 
 void select (HANDLE hItem, TVITEM* tvItem) {
     while (hItem !is null) {
-        tvItem.hItem = hItem;
+        tvItem.hItem = cast(HTREEITEM)hItem;
         OS.SendMessage (handle, OS.TVM_SETITEM, 0, tvItem);
         auto hFirstItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CHILD, hItem);
         select (hFirstItem, tvItem);
@@ -4303,7 +4303,7 @@
     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
     tvItem.stateMask = OS.TVIS_SELECTED;
     tvItem.state = OS.TVIS_SELECTED;
-    tvItem.hItem = item.handle;
+    tvItem.hItem = cast(HTREEITEM)item.handle;
     OS.SendMessage (handle, OS.TVM_SETITEM, 0, cast(int)&tvItem);
 }
 
@@ -4334,7 +4334,7 @@
         for (int i=0; i<items.length; i++) {
             TreeItem item = items [i];
             if (item !is null) {
-                tvItem.hItem = item.handle;
+                tvItem.hItem = cast(HTREEITEM)item.handle;
                 OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
             }
         }
@@ -4755,7 +4755,7 @@
             int count = OS.SendMessage (handle, OS.TVM_GETCOUNT, 0, 0);
             if (count is 0) {
                 TVINSERTSTRUCT tvInsert;
-                tvInsert.hInsertAfter = cast(HANDLE) OS.TVI_FIRST;
+                tvInsert.hInsertAfter = cast(HTREEITEM) OS.TVI_FIRST;
                 hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_INSERTITEM, 0, &tvInsert);
             }
             OS.DefWindowProc (handle, OS.WM_SETREDRAW, 1, 0);
@@ -4843,7 +4843,7 @@
             if (item !is null && item.handle is hItem) break;
             index++;
         }
-        tvItem.hItem = hItem;
+        tvItem.hItem = cast(HTREEITEM)hItem;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         if ((tvItem.state & OS.TVIS_SELECTED) !is 0) {
             if (index is selection.length) {
@@ -4968,7 +4968,7 @@
             tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
             tvItem.state = OS.TVIS_SELECTED;
             tvItem.stateMask = OS.TVIS_SELECTED;
-            tvItem.hItem = hNewItem;
+            tvItem.hItem = cast(HTREEITEM)hNewItem;
             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
             showItem (hNewItem);
         }
@@ -4993,7 +4993,7 @@
                     if (items [index] is item) break;
                     index++;
                 }
-                tvItem.hItem = item.handle;
+                tvItem.hItem = cast(HTREEITEM)item.handle;
                 OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                 if ((tvItem.state & OS.TVIS_SELECTED) !is 0) {
                     if (index is length) {
@@ -5141,7 +5141,7 @@
     } else {
         bool scroll = true;
         RECT itemRect;
-        if (OS.TreeView_GetItemRect (handle, hItem, &itemRect, true)) {
+        if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &itemRect, true)) {
             forceResize ();
             RECT rect;
             OS.GetClientRect (handle, &rect);
@@ -5168,7 +5168,7 @@
     }
     if (hwndParent !is null) {
         RECT itemRect;
-        if (OS.TreeView_GetItemRect (handle, hItem, &itemRect, true)) {
+        if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &itemRect, true)) {
             forceResize ();
             RECT rect;
             OS.GetClientRect (hwndParent, &rect);
@@ -5336,7 +5336,7 @@
 /*public*/ void sort () {
     checkWidget ();
     if ((style & DWT.VIRTUAL) !is 0) return;
-    sort ( cast(HANDLE) OS.TVI_ROOT, false);
+    sort ( cast(HTREEITEM) OS.TVI_ROOT, false);
 }
 
 void sort (HANDLE hParent, bool all) {
@@ -5351,7 +5351,7 @@
         //int lpfnCompare = compareCallback.getAddress ();
         sThis = this;
         TVSORTCB psort;
-        psort.hParent = hParent;
+        psort.hParent = cast(HTREEITEM)hParent;
         psort.lpfnCompare = &CompareFunc;
         psort.lParam = sortColumn is null ? 0 : indexOf (sortColumn);
         OS.SendMessage (handle, OS.TVM_SORTCHILDRENCB, all ? 1 : 0, &psort);
@@ -5781,7 +5781,7 @@
                 OS.SendMessage (handle, OS.TVM_ENSUREVISIBLE, 0, hItem);
                 TVITEM tvItem;
                 tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE | OS.TVIF_PARAM;
-                tvItem.hItem = hItem;
+                tvItem.hItem = cast(HTREEITEM)hItem;
                 if ((style & DWT.CHECK) !is 0) {
                     tvItem.stateMask = OS.TVIS_STATEIMAGEMASK;
                     OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
@@ -5937,32 +5937,32 @@
                     tvItem.stateMask = OS.TVIS_SELECTED;
                     auto hDeselectItem = hItem;
                     RECT rect1;
-                    if (!OS.TreeView_GetItemRect (handle, hAnchor, &rect1, false)) {
+                    if (!OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hAnchor, &rect1, false)) {
                         hAnchor = hItem;
-                        OS.TreeView_GetItemRect (handle, hAnchor, &rect1, false);
+                        OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hAnchor, &rect1, false);
                     }
                     RECT rect2;
-                    OS.TreeView_GetItemRect (handle, hDeselectItem, &rect2, false);
+                    OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hDeselectItem, &rect2, false);
                     int flags = rect1.top < rect2.top ? OS.TVGN_PREVIOUSVISIBLE : OS.TVGN_NEXTVISIBLE;
                     while (hDeselectItem !is hAnchor) {
-                        tvItem.hItem = hDeselectItem;
+                        tvItem.hItem = cast(HTREEITEM)hDeselectItem;
                         OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                         hDeselectItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, flags, hDeselectItem);
                     }
                     auto hSelectItem = hAnchor;
-                    OS.TreeView_GetItemRect (handle, hNewItem, &rect1, false);
-                    OS.TreeView_GetItemRect (handle, hSelectItem, &rect2, false);
+                    OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hNewItem, &rect1, false);
+                    OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hSelectItem, &rect2, false);
                     tvItem.state = OS.TVIS_SELECTED;
                     flags = rect1.top < rect2.top ? OS.TVGN_PREVIOUSVISIBLE : OS.TVGN_NEXTVISIBLE;
                     while (hSelectItem !is hNewItem) {
-                        tvItem.hItem = hSelectItem;
+                        tvItem.hItem = cast(HTREEITEM)hSelectItem;
                         OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                         hSelectItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, flags, hSelectItem);
                     }
-                    tvItem.hItem = hNewItem;
+                    tvItem.hItem = cast(HTREEITEM)hNewItem;
                     OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
-                    tvItem.hItem = hNewItem;
+                    tvItem.hItem = cast(HTREEITEM)hNewItem;
                     OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                     Event event = new Event ();
                     event.item = _getItem (hNewItem, tvItem.lParam);
@@ -5976,7 +5976,7 @@
                     TVITEM tvItem;
                     tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
                     tvItem.stateMask = OS.TVIS_SELECTED;
-                    tvItem.hItem = hItem;
+                    tvItem.hItem = cast(HTREEITEM)hItem;
                     OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                     bool oldSelected = (tvItem.state & OS.TVIS_SELECTED) !is 0;
                     HANDLE hNewItem;
@@ -6004,7 +6004,7 @@
                             do {
                                 auto hVisible = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXTVISIBLE, hNewItem);
                                 if (hVisible is null) break;
-                                if (!OS.TreeView_GetItemRect (handle, hVisible, &rect, false)) break;
+                                if (!OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hVisible, &rect, false)) break;
                                 if (rect.bottom > clientRect.bottom) break;
                                 if ((hNewItem = hVisible) is hItem) {
                                     OS.SendMessage (handle, OS.WM_VSCROLL, OS.SB_PAGEDOWN, 0);
@@ -6018,7 +6018,7 @@
                     }
                     if (hNewItem !is null) {
                         OS.SendMessage (handle, OS.TVM_ENSUREVISIBLE, 0, hNewItem);
-                        tvItem.hItem = hNewItem;
+                        tvItem.hItem = cast(HTREEITEM)hNewItem;
                         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                         bool newSelected = (tvItem.state & OS.TVIS_SELECTED) !is 0;
                         bool redraw = !newSelected && drawCount is 0 && OS.IsWindowVisible (handle);
@@ -6033,12 +6033,12 @@
                         hSelect = null;
                         if (oldSelected) {
                             tvItem.state = OS.TVIS_SELECTED;
-                            tvItem.hItem = hItem;
+                            tvItem.hItem = cast(HTREEITEM)hItem;
                             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                         }
                         if (!newSelected) {
                             tvItem.state = 0;
-                            tvItem.hItem = hNewItem;
+                            tvItem.hItem = cast(HTREEITEM)hNewItem;
                             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                         }
                         if (redraw) {
@@ -6046,8 +6046,8 @@
                             bool fItemRect = (style & DWT.FULL_SELECTION) is 0;
                             if (hooks (DWT.EraseItem) || hooks (DWT.PaintItem)) fItemRect = false;
                             if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION (6, 0)) fItemRect = false;
-                            OS.TreeView_GetItemRect (handle, hItem, &rect1, fItemRect);
-                            OS.TreeView_GetItemRect (handle, hNewItem, &rect2, fItemRect);
+                            OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect1, fItemRect);
+                            OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hNewItem, &rect2, fItemRect);
                             OS.DefWindowProc (handle, OS.WM_SETREDRAW, 1, 0);
                             OS.InvalidateRect (handle, &rect1, true);
                             OS.InvalidateRect (handle, &rect2, true);
@@ -6203,7 +6203,7 @@
                     auto hNext = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_NEXTVISIBLE, lpht.hItem);
                     while (hNext !is null) {
                         if (hNext is hAnchor) hAnchor = null;
-                        tvItem.hItem = hNext;
+                        tvItem.hItem = cast(HTREEITEM)hNext;
                         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
                         if ((tvItem.state & OS.TVIS_SELECTED) !is 0) deselected = true;
                         tvItem.state = 0;
@@ -6245,7 +6245,7 @@
                     auto hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CARET, 0);
                     if (hItem !is null) {
                         RECT rect;
-                        if (OS.TreeView_GetItemRect (handle, hItem, &rect, false)) {
+                        if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hItem, &rect, false)) {
                             OS.InvalidateRect (handle, &rect, true);
                         }
                     }
@@ -6359,7 +6359,7 @@
     /* Get the selected state of the last selected item */
     auto hOldItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, OS.TVGN_CARET, 0);
     if ((style & DWT.MULTI) !is 0) {
-        tvItem.hItem = hOldItem;
+        tvItem.hItem = cast(HTREEITEM)hOldItem;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
 
         /* Check for CONTROL or drag selection */
@@ -6442,7 +6442,7 @@
             tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_STATE;
             tvItem.state = OS.TVIS_SELECTED;
             tvItem.stateMask = OS.TVIS_SELECTED;
-            tvItem.hItem = hNewItem;
+            tvItem.hItem = cast(HTREEITEM)hNewItem;
             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
         }
     }
@@ -6475,8 +6475,8 @@
             bool fItemRect = (style & DWT.FULL_SELECTION) is 0;
             if (hooks (DWT.EraseItem) || hooks (DWT.PaintItem)) fItemRect = false;
             if (!OS.IsWinCE && OS.WIN32_VERSION >= OS.VERSION (6, 0)) fItemRect = false;
-            OS.TreeView_GetItemRect (handle, hOldItem, &rect1, fItemRect);
-            OS.TreeView_GetItemRect (handle, hNewItem, &rect2, fItemRect);
+            OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hOldItem, &rect1, fItemRect);
+            OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hNewItem, &rect2, fItemRect);
             OS.DefWindowProc (handle, OS.WM_SETREDRAW, 1, 0);
             OS.InvalidateRect (handle, &rect1, true);
             OS.InvalidateRect (handle, &rect2, true);
@@ -6496,29 +6496,29 @@
                     for (int i=0; i<items.length; i++) {
                         TreeItem item = items [i];
                         if (item !is null && item.handle !is hNewItem) {
-                            tvItem.hItem = item.handle;
+                            tvItem.hItem = cast(HTREEITEM)item.handle;
                             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                         }
                     }
                 }
-                tvItem.hItem = hNewItem;
+                tvItem.hItem = cast(HTREEITEM)hNewItem;
                 tvItem.state = OS.TVIS_SELECTED;
                 OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                 OS.SetWindowLongPtr (handle, OS.GWLP_WNDPROC, oldProc);
                 if ((wParam & OS.MK_SHIFT) !is 0) {
                     RECT rect1;
                     if (hAnchor is null) hAnchor = hNewItem;
-                    if (OS.TreeView_GetItemRect (handle, hAnchor, &rect1, false)) {
+                    if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hAnchor, &rect1, false)) {
                         RECT rect2;
-                        if (OS.TreeView_GetItemRect (handle, hNewItem, &rect2, false)) {
+                        if (OS.TreeView_GetItemRect (handle, cast(HTREEITEM)hNewItem, &rect2, false)) {
                             int flags = rect1.top < rect2.top ? OS.TVGN_NEXTVISIBLE : OS.TVGN_PREVIOUSVISIBLE;
                             tvItem.state = OS.TVIS_SELECTED;
-                            auto hItem = tvItem.hItem = hAnchor;
+                            auto hItem = tvItem.hItem = cast(HTREEITEM)hAnchor;
                             OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
                             while (hItem !is hNewItem) {
                                 tvItem.hItem = hItem;
                                 OS.SendMessage (handle, OS.TVM_SETITEM, 0, &tvItem);
-                                hItem = cast(HANDLE) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, flags, hItem);
+                                hItem = cast(HTREEITEM) OS.SendMessage (handle, OS.TVM_GETNEXTITEM, flags, hItem);
                             }
                         }
                     }
@@ -6530,7 +6530,7 @@
 
     /* Issue notification */
     if (!gestureCompleted) {
-        tvItem.hItem = hNewItem;
+        tvItem.hItem = cast(HTREEITEM)hNewItem;
         tvItem.mask = OS.TVIF_HANDLE | OS.TVIF_PARAM;
         OS.SendMessage (handle, OS.TVM_GETITEM, 0, &tvItem);
         Event event = new Event ();
@@ -6683,6 +6683,7 @@
 }
 
 override LRESULT WM_PAINT (int wParam, int lParam) {
+
     if (shrink && !ignoreShrink) {
         /* Resize the item array to fit the last item */
         int count = items.length - 1;