- (final?) update of TreeView_* macro's.
- implementation of TVM_SETINSERTMARK & TVM_SETINSERTMARKCOLOR
- fixed some typo's
- custom draw enhancements
- implementation of state images
- implementation of TVS_CHECKBOXES

diff --git a/include/commctrl.h b/include/commctrl.h
index 9e047c9..7ed5286 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -387,6 +387,7 @@
 #define ILD_BLEND        ILD_BLEND50
 
 #define INDEXTOOVERLAYMASK(i)  ((i)<<8)
+#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
 
 #define ILCF_MOVE        (0x00000000)
 #define ILCF_SWAP        (0x00000001)
@@ -1705,26 +1706,6 @@
 #define TVM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
 #define TVM_GETUNICODEFORMAT    CCM_GETUNICODEFORMAT
 
-#define TreeView_GetItemState(hwndTV, hti, mask) \
-   (UINT)SendMessageA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
-#define TreeView_GetCheckState(hwndTV, hti) \
-   ((((UINT)(SendMessageA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti),  \
-                     TVIS_STATEIMAGEMASK))) >> 12) -1)
-#define TreeView_SetLineColor(hwnd, clr) \
-    (COLORREF)SendMessageA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
-#define TreeView_GetLineColor(hwnd) \
-    (COLORREF)SendMessageA((hwnd), TVM_GETLINECOLOR, 0, 0)
-#define TreeView_SetItemState(hwndTV, hti, data, _mask) \
-{ TVITEM _TVi; \
-  _TVi.mask = TVIF_STATE; \
-  _TVi.hItem = hti; \
-  _TVi.stateMask = _mask; \
-  _TVi.state = data; \
-  SendMessageA((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_TVi); \
-}
-
-
-
 
 
 #define TVN_FIRST               (0U-400U)
@@ -1815,6 +1796,7 @@
 #define TVS_FULLROWSELECT	  0x1000
 #define TVS_NOSCROLL     	  0x2000
 #define TVS_NONEVENHEIGHT	  0x4000
+#define TVS_NOHSCROLL         0x8000 
 
 #define TVS_SHAREDIMAGELISTS  0x0000
 #define TVS_PRIVATEIMAGELISTS 0x0400
@@ -2061,7 +2043,7 @@
 (LPARAM)(HTREEITEM) (hitem))
 
 #define TreeView_GetChild(hwnd, hitem) \
-	 	 TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
+	 	TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
 #define TreeView_GetNextSibling(hwnd, hitem) \
 		TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
 #define TreeView_GetPrevSibling(hwnd, hitem) \
@@ -2094,22 +2076,24 @@
 #define TreeView_SelectItem(hwnd, hitem) \
 		TreeView_Select(hwnd, hitem, TVGN_CARET)
 #define TreeView_SelectDropTarget(hwnd, hitem) \
-        	TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
-/* FIXME
-#define TreeView_SelectSetFirstVisible(hwnd, hitem)  \ 
-		TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
-*/
+       	TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(hwnd, hitem) \
+       	TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+
 
 #define TreeView_GetItemA(hwnd, pitem) \
  (BOOL)SendMessageA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
+#define TreeView_GetItemW(hwnd, pitem) \
+ (BOOL)SendMessageW((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
 
 #define TreeView_SetItemA(hwnd, pitem) \
  (BOOL)SendMessageA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem)) 
+#define TreeView_SetItemW(hwnd, pitem) \
+ (BOOL)SendMessageW((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem)) 
 
 #define TreeView_EditLabel(hwnd, hitem) \
     (HWND)SendMessageA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
 
-
 #define TreeView_GetEditControl(hwnd) \
     (HWND)SendMessageA((hwnd), TVM_GETEDITCONTROL, 0, 0)
 
@@ -2138,12 +2122,19 @@
 #define TreeView_EndEditLabelNow(hwnd, fCancel) \
     (BOOL)SendMessageA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
 
-#define TreeView_GetISearchString(hwndTV, lpsz) \
-    (BOOL)SendMessageA((hwndTV), TVM_GETISEARCHSTRING, 0, \
+#define TreeView_GetISearchString(hwnd, lpsz) \
+    (BOOL)SendMessageA((hwnd), TVM_GETISEARCHSTRING, 0, \
 							(LPARAM)(LPTSTR)lpsz)
 
+#define TreeView_SetToolTips(hwnd,  hwndTT) \
+    (BOOL)SendMessageA((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
+
+#define TreeView_GetToolTips(hwnd) \
+    (BOOL)SendMessageA((hwnd), TVM_GETTOOLTIPS, 0, 0)
+
 #define TreeView_SetItemHeight(hwnd,  iHeight) \
     (INT)SendMessageA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
+
 #define TreeView_GetItemHeight(hwnd) \
     (INT)SendMessageA((hwnd), TVM_GETITEMHEIGHT, 0, 0)
 
@@ -2165,11 +2156,37 @@
 #define TreeView_GetScrollTime(hwnd) \
     (UINT)SendMessageA((hwnd), TVM_GETSCROLLTIME, 0, 0)
 
+#define TreeView_SetInsertMark(hwnd, hItem, fAfter) \
+    (BOOL)SendMessageA((hwnd), TVM_SETINSERTMARK, (WPARAM)(fAfter), \
+                       (LPARAM) (hItem))
+
 #define TreeView_SetInsertMarkColor(hwnd, clr) \
     (COLORREF)SendMessageA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
+
 #define TreeView_GetInsertMarkColor(hwnd) \
     (COLORREF)SendMessageA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
 
+#define TreeView_GetItemState(hwndTV, hti, mask) \
+   (UINT)SendMessageA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
+#define TreeView_GetCheckState(hwndTV, hti) \
+   ((((UINT)(SendMessageA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti),  \
+                     TVIS_STATEIMAGEMASK))) >> 12) -1)
+
+#define TreeView_SetLineColor(hwnd, clr) \
+    (COLORREF)SendMessageA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
+
+#define TreeView_GetLineColor(hwnd) \
+    (COLORREF)SendMessageA((hwnd), TVM_GETLINECOLOR, 0, 0)
+
+#define TreeView_SetItemState(hwndTV, hti, data, _mask) \
+{ TVITEM _TVi; \
+  _TVi.mask = TVIF_STATE; \
+  _TVi.hItem = hti; \
+  _TVi.stateMask = _mask; \
+  _TVi.state = data; \
+  SendMessageA((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_TVi); \
+}
+