Implemented TVM_GETITEMW.

diff --git a/dlls/comctl32/treeview.c b/dlls/comctl32/treeview.c
index 23517a6..20b49b7 100644
--- a/dlls/comctl32/treeview.c
+++ b/dlls/comctl32/treeview.c
@@ -1306,6 +1306,71 @@
 }
 
 
+static LRESULT
+TREEVIEW_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
+{
+  TREEVIEW_INFO *infoPtr = TREEVIEW_GetInfoPtr(hwnd);
+  LPTVITEMEXA    tvItem;
+  TREEVIEW_ITEM *wineItem;
+  INT         iItem;
+
+  tvItem=(LPTVITEMEXA) lParam;
+  iItem=(INT)tvItem->hItem;
+
+  wineItem = TREEVIEW_ValidItem (infoPtr, (HTREEITEM)iItem);
+  if (!wineItem) return FALSE;
+
+   if (tvItem->mask & TVIF_CHILDREN) {
+		if (TVIF_CHILDREN==I_CHILDRENCALLBACK)
+			FIXME("I_CHILDRENCALLBACK not supported\n");
+        tvItem->cChildren=wineItem->cChildren;
+   }
+
+   if (tvItem->mask & TVIF_HANDLE) {
+        tvItem->hItem=wineItem->hItem;
+   }
+
+   if (tvItem->mask & TVIF_IMAGE) {
+        tvItem->iImage=wineItem->iImage;
+   }
+
+   if (tvItem->mask & TVIF_INTEGRAL) {
+        tvItem->iIntegral=wineItem->iIntegral;
+   }
+
+   /* undocumented: windows ignores TVIF_PARAM and
+	 * always sets lParam
+	 */
+   tvItem->lParam=wineItem->lParam;
+
+   if (tvItem->mask & TVIF_SELECTEDIMAGE) {
+        tvItem->iSelectedImage=wineItem->iSelectedImage;
+   }
+
+   if (tvItem->mask & TVIF_STATE) {
+        tvItem->state=wineItem->state & tvItem->stateMask;
+   }
+
+#if 0
+   if (tvItem->mask & TVIF_TEXT) {
+	if (wineItem->pszText == LPSTR_TEXTCALLBACKW) {
+	    tvItem->pszText = LPSTR_TEXTCALLBACKW;  /* FIXME:send notification? */
+		ERR(" GetItem called with LPSTR_TEXTCALLBACK\n");
+	}
+	else if (wineItem->pszText) {
+	    lstrcpynAtoW (tvItem->pszText, wineItem->pszText, tvItem->cchTextMax);
+	}
+   }
+#endif
+  wineItem->pszText = NULL;
+
+  TRACE("item %d<%p>, txt %p, img %p, action %x\n",
+    iItem, tvItem, tvItem->pszText, &tvItem->iImage, tvItem->mask);
+
+  return TRUE;
+}
+
+
 
 /* FIXME: check implementation of TVGN_NEXT/TVGN_NEXTVISIBLE */
 
@@ -3959,8 +4024,7 @@
       		return TREEVIEW_GetItemA (hwnd, wParam, lParam);
 
     	case TVM_GETITEMW:
-      		FIXME("Unimplemented msg TVM_GETITEMW\n");
-      		return 0;
+      		return TREEVIEW_GetItemW (hwnd, wParam, lParam);
 
     	case TVM_SETITEMA:
       		return TREEVIEW_SetItemA (hwnd, wParam, lParam);