- Make the ListView control Unicode ready.
- Support both ANSI & Unicode ListView notifications.
- Fixed a few bugs.

diff --git a/include/commctrl.h b/include/commctrl.h
index c18dc1d..34111f0 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -2925,16 +2925,26 @@
 #define _LV_HITTESTINFO tagLVHITTESTINFO
 #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
 
-typedef struct tagLVFINDINFO
+typedef struct tagLVFINDINFOA
 {
 	UINT flags;
 	LPCSTR psz;
 	LPARAM lParam;
 	POINT pt;
 	UINT vkDirection;
-} LVFINDINFO, *LPLVFINDINFO;
+} LVFINDINFOA, *LPLVFINDINFOA;
 
-#define LV_FINDINFO LVFINDINFO
+typedef struct tagLVFINDINFOW
+{
+	UINT flags;
+	LPCWSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOW, *LPLVFINDINFOW;
+
+#define LVFINDINFO WINELIB_NAME_AW(LVFINDINFO)
+#define LPLVFINDINFO WINELIB_NAME_AW(LPLVFINDINFO)
 
 typedef struct tagTCHITTESTINFO
 {
@@ -2967,16 +2977,23 @@
 #define PNM_CACHEHINT  LPNMLVCACHEHINT
 #define NM_CACHEHINT   NMLVCACHEHINT
 
-typedef struct tagNMLVFINDITEM
+typedef struct tagNMLVFINDITEMA
 {
     NMHDR hdr;
     int iStart;
-    LVFINDINFO lvfi;
-} NMLVFINDITEM, *LPNMLVFINDITEM;
+    LVFINDINFOA lvfi;
+} NMLVFINDITEMA, *LPNMLVFINDITEMA;
 
-#define NM_FINDITEM NMLVFINDITEM
-#define PNM_FINDITEM LPNMLVFINDITEM
-#define LPNM_FINDITEM LPNMLVFINDITEM
+typedef struct tagNMLVFINDITEMW
+{
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOW lvfi;
+} NMLVFINDITEMW, *LPNMLVFINDITEMW;
+
+#define NMFINDITEM WINELIB_NAME_AW(NMLVFINDITEM)
+#define PNMFINDITEM LPNMLVFINDITEM
+#define LPNMFINDITEM WINELIB_NAME_AW(LPNMLVFINDITEM)
 
 typedef struct tagNMLVODSTATECHANGE
 {
@@ -3011,8 +3028,10 @@
 
 #define ListView_GetNextItem(hwnd,nItem,flags) \
     (INT)SendMessageA((hwnd),LVM_GETNEXTITEM,(WPARAM)(INT)(nItem),(LPARAM)(MAKELPARAM(flags,0)))
-#define ListView_FindItem(hwnd,nItem,plvfi) \
-    (INT)SendMessageA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFO*)(plvfi))
+#define ListView_FindItemA(hwnd,nItem,plvfi) \
+    (INT)SendMessageA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi))
+#define ListView_FindItemW(hwnd,nItem,plvfi) \
+    (INT)SendMessageW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi))
 #define ListView_Arrange(hwnd,code) \
     (INT)SendMessageA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L)
 #define ListView_GetItemPosition(hwnd,i,ppt) \