New drag list control.

diff --git a/include/commctrl.h b/include/commctrl.h
index 7ecd9ce..8513c6b 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -115,6 +115,8 @@
     sizeof(((name*)0)->member))
 #endif
 
+
+/* This is only for Winelib applications. DON't use it wine itself!!! */
 #define SNDMSG WINELIB_NAME_AW(SendMessage)
 
 
@@ -171,8 +173,8 @@
 
 typedef struct tagNMTTCUSTOMDRAW
 {
-	NMCUSTOMDRAW nmcd;
-	UINT32		 uDrawFlags;
+    NMCUSTOMDRAW nmcd;
+    UINT32       uDrawFlags;
 } NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW;
 
 
@@ -234,12 +236,15 @@
 VOID WINAPI MenuHelp (UINT32, WPARAM32, LPARAM, HMENU32,
                       HINSTANCE32, HWND32, LPUINT32);
 
-/* Drag List */
+/**************************************************************************
+ *  Drag List control
+ */
 
-typedef struct tagDRAGLISTINFO {
-	UINT32 uNotification;
-	HWND32 hWnd;
-	POINT32 ptCursor;
+typedef struct tagDRAGLISTINFO
+{
+    UINT32  uNotification;
+    HWND32  hWnd;
+    POINT32 ptCursor;
 } DRAGLISTINFO, *LPDRAGLISTINFO;
 
 #define DL_BEGINDRAG            (WM_USER+133)
@@ -254,9 +259,10 @@
 
 #define DRAGLISTMSGSTRING       TEXT("commctrl_DragListMsg")
 
-BOOL32 WINAPI MakeDragList(HWND32 hLB);
-void WINAPI DrawInsert(HWND32 handParent, HWND32 hLB, int nItem);
-int WINAPI LBItemFromPt(HWND32 hLB, POINT32 pt, BOOL32 bAutoScroll);
+BOOL32 WINAPI MakeDragList (HWND32);
+VOID   WINAPI DrawInsert (HWND32, HWND32, INT32);
+INT32  WINAPI LBItemFromPt (HWND32, POINT32, BOOL32);
+
   
 /* UpDown */
 
@@ -477,7 +483,6 @@
 HRESULT WINAPI UninitializeFlatSB(HWND32);
 
 
-
 /* Header control */
 
 #define WC_HEADER16		"SysHeader" 
@@ -1200,6 +1205,7 @@
 #define LPTOOLTIPTEXTA  LPNMTTDISPINFOA
 #define LPTOOLTIPTEXT   LPNMTTDISPINFO
 
+
 /* Rebar control */
 
 #define REBARCLASSNAME16        "ReBarWindow"
@@ -1283,7 +1289,7 @@
 #define RB_GETBANDINFO          WINELIB_NAME_AW(RB_GETBANDINFO)
 #define RB_MINIMIZEBAND         (WM_USER+30)
 #define RB_MAXIMIZEBAND         (WM_USER+31)
-#define RB_GETBANDORDERS        (WM_USER+34)
+#define RB_GETBANDBORDERS       (WM_USER+34)
 #define RB_SHOWBAND             (WM_USER+35)
 #define RB_SETPALETTE           (WM_USER+37)
 #define RB_GETPALETTE           (WM_USER+38)
@@ -1613,6 +1619,8 @@
 #define TVM_GETTEXTCOLOR        (TV_FIRST+32)
 #define TVM_SETSCROLLTIME       (TV_FIRST+33)
 #define TVM_GETSCROLLTIME       (TV_FIRST+34)
+#define TVM_UNKNOWN35           (TV_FIRST+35)
+#define TVM_UNKNOWN36           (TV_FIRST+36)
 #define TVM_SETINSERTMARKCOLOR  (TV_FIRST+37)
 #define TVM_GETINSERTMARKCOLOR  (TV_FIRST+38)
 #define TVM_SETUNICODEFORMAT    CCM_SETUNICODEFORMAT
@@ -1741,11 +1749,11 @@
       HTREEITEM hItem;
       UINT32 state;
       UINT32 stateMask;
-      LPSTR pszText;
-      int cchTextMax;
-      int iImage;
-      int iSelectedImage;
-      int cChildren;
+      LPSTR  pszText;
+      INT32  cchTextMax;
+      INT32  iImage;
+      INT32  iSelectedImage;
+      INT32  cChildren;
       LPARAM lParam;
 } TV_ITEM, *LPTVITEM;
 
@@ -1754,13 +1762,13 @@
       HTREEITEM hItem;
       UINT32 state;
       UINT32 stateMask;
-      LPSTR pszText;
-      int cchTextMax;
-      int iImage;
-      int iSelectedImage;
-      int cChildren;
+      LPSTR  pszText;
+      INT32  cchTextMax;
+      INT32  iImage;
+      INT32  iSelectedImage;
+      INT32  cChildren;
       LPARAM lParam;
-      int iIntegral;
+      INT32  iIntegral;
 } TV_ITEMEX, *LPTVITEMEX;
 
 #define TVITEM TV_ITEM
@@ -2437,8 +2445,8 @@
     UINT32 dwState;
     UINT32 dwStateMask;
     LPSTR  pszText;
-    int    cchTextMax;
-    int    iImage;
+    INT32  cchTextMax;
+    INT32  iImage;
     LPARAM lParam;
 } TCITEM32A, *LPTCITEM32A;
 
@@ -2667,114 +2675,14 @@
 
 
 
-/**************************************************************************
- *  UNDOCUMENTED functions
- */
-
-/* private heap memory functions */
-
-LPVOID WINAPI COMCTL32_Alloc (DWORD);
-LPVOID WINAPI COMCTL32_ReAlloc (LPVOID, DWORD);
-BOOL32 WINAPI COMCTL32_Free (LPVOID);
-DWORD  WINAPI COMCTL32_GetSize (LPVOID);
-
-
-INT32  WINAPI Str_GetPtr32A (LPCSTR, LPSTR, INT32);
-BOOL32 WINAPI Str_SetPtr32A (LPSTR *, LPCSTR);
-INT32  WINAPI Str_GetPtr32W (LPCWSTR, LPWSTR, INT32);
-BOOL32 WINAPI Str_SetPtr32W (LPWSTR *, LPCWSTR);
-#define Str_GetPtr WINELIB_NAME_AW(Str_GetPtr)
-#define Str_SetPtr WINELIB_NAME_AW(Str_SetPtr)
-
-
-/* Dynamic Storage Array */
-
-typedef struct _DSA
-{
-    INT32  nItemCount;
-    LPVOID pData;
-    INT32  nMaxCount;
-    INT32  nItemSize;
-    INT32  nGrow;
-} DSA, *HDSA;
-
-HDSA   WINAPI DSA_Create (INT32, INT32);
-BOOL32 WINAPI DSA_DeleteAllItems (const HDSA);
-INT32  WINAPI DSA_DeleteItem (const HDSA, INT32);
-BOOL32 WINAPI DSA_Destroy (const HDSA);
-BOOL32 WINAPI DSA_GetItem (const HDSA, INT32, LPVOID);
-LPVOID WINAPI DSA_GetItemPtr (const HDSA, INT32);
-INT32  WINAPI DSA_InsertItem (const HDSA, INT32, LPVOID);
-BOOL32 WINAPI DSA_SetItem (const HDSA, INT32, LPVOID);
-
-typedef INT32 (CALLBACK *DSAENUMPROC)(LPVOID, DWORD);
-VOID   WINAPI DSA_EnumCallback (const HDSA, DSAENUMPROC, LPARAM);
-BOOL32 WINAPI DSA_DestroyCallback (const HDSA, DSAENUMPROC, LPARAM);
-
-
-/* Dynamic Pointer Array */
-
-typedef struct _DPA
-{
-    INT32    nItemCount;
-    LPVOID   *ptrs; 
-    HANDLE32 hHeap;
-    INT32    nGrow;
-    INT32    nMaxCount;
-} DPA, *HDPA;
-
-HDPA   WINAPI DPA_Create (INT32);
-HDPA   WINAPI DPA_CreateEx (INT32, HANDLE32);
-BOOL32 WINAPI DPA_Destroy (const HDPA);
-HDPA   WINAPI DPA_Clone (const HDPA, const HDPA);
-LPVOID WINAPI DPA_GetPtr (const HDPA, INT32);
-INT32  WINAPI DPA_GetPtrIndex (const HDPA, LPVOID);
-BOOL32 WINAPI DPA_Grow (const HDPA, INT32);
-BOOL32 WINAPI DPA_SetPtr (const HDPA, INT32, LPVOID);
-INT32  WINAPI DPA_InsertPtr (const HDPA, INT32, LPVOID);
-LPVOID WINAPI DPA_DeletePtr (const HDPA, INT32);
-BOOL32 WINAPI DPA_DeleteAllPtrs (const HDPA);
-
-typedef INT32 (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
-BOOL32 WINAPI DPA_Sort (const HDPA, PFNDPACOMPARE, LPARAM);
-
-#define DPAS_SORTED             0x0001
-#define DPAS_INSERTBEFORE       0x0002
-#define DPAS_INSERTAFTER        0x0004
- 
-INT32  WINAPI DPA_Search (const HDPA, LPVOID, INT32, PFNDPACOMPARE, LPARAM, UINT32);
-
-#define DPAM_SORT               0x0001
-
-BOOL32 WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, LPVOID, LPARAM);
-
-typedef INT32 (CALLBACK *DPAENUMPROC)(LPVOID, DWORD);
-VOID   WINAPI DPA_EnumCallback (const HDPA, DPAENUMPROC, LPARAM);
-BOOL32 WINAPI DPA_DestroyCallback (const HDPA, DPAENUMPROC, LPARAM);
-
-
-#define DPA_GetPtrCount(hdpa)  (*(INT32*)(hdpa))
-#define DPA_GetPtrPtr(hdpa)    (*((LPVOID**)((BYTE*)(hdpa)+sizeof(INT32))))
-#define DPA_FastGetPtr(hdpa,i) (DPA_GetPtrPtr(hdpa)[i])
-
-
-/* notification helper functions */
-
-LRESULT WINAPI COMCTL32_SendNotify (HWND32, HWND32, UINT32, LPNMHDR);
-
-/* type and functionality of last parameter is still unknown */
-LRESULT WINAPI COMCTL32_SendNotifyEx (HWND32, HWND32, UINT32, LPNMHDR, DWORD);
-
 /*
  * Property sheet support (callback procs)
  */
 
-
-#define WC_PROPSHEET32A      "SysPager"
-#define WC_PROPSHEET32W      L"SysPager"
+#define WC_PROPSHEET32A      "SysPropertySheet"
+#define WC_PROPSHEET32W      L"SysPropertySheet"
 #define WC_PROPSHEET         WINELIB_NAME_AW(WC_PROPSHEET)
 
-
 struct _PROPSHEETPAGE32A;  /** need to forward declare those structs **/
 struct _PROPSHEETPAGE32W;
 struct _PSP;
@@ -2945,7 +2853,7 @@
 INT32 WINAPI PropertySheet32W(LPCPROPSHEETHEADER32W);
 #define PropertySheet WINELIB_NAME_AW(PropertySheet)
 HPROPSHEETPAGE WINAPI CreatePropertySheetPage32A(LPCPROPSHEETPAGE32A);
-HPROPSHEETPAGE WINAPI  CreatePropertySheetPage32W(LPCPROPSHEETPAGE32W);
+HPROPSHEETPAGE WINAPI CreatePropertySheetPage32W(LPCPROPSHEETPAGE32W);
 #define CreatePropertySheetPage WINELIB_NAME_AW(CreatePropertySheetPage)
 BOOL32 WINAPI DestroyPropertySheetPage32(HPROPSHEETPAGE hPropPage);
 #define DestroyPropertySheetPage WINELIB_NAME(DestroyPropertySheetPage)
@@ -2953,6 +2861,7 @@
 /*
  * Property sheet support (UNICODE-WineLib)
  */
+
 DECL_WINELIB_TYPE_AW(PROPSHEETPAGE) 
 DECL_WINELIB_TYPE_AW(LPPROPSHEETPAGE) 
 DECL_WINELIB_TYPE_AW(LPCPROPSHEETPAGE) 
@@ -2962,6 +2871,7 @@
 DECL_WINELIB_TYPE_AW(LPFNPSPCALLBACK) 
 DECL_WINELIB_TYPE(PFNPROPSHEETCALLBACK) 
 
+
 /*
  * Property sheet support (defines)
  */
@@ -3080,7 +2990,7 @@
  */
 
 #define PropSheet_SetCurSel(hDlg, hpage, index) \
-	SNDMSG(hDlg, PSM_SETCURSEL, (WPARAM)index, (LPARAM)hpage)
+	SeandMessage32A(hDlg, PSM_SETCURSEL, (WPARAM32)index, (LPARAM)hpage)
 	 
 #define PropSheet_RemovePage(hDlg, index, hpage) \
 	SNDMSG(hDlg, PSM_REMOVEPAGE, index, (LPARAM)hpage)
@@ -3134,6 +3044,104 @@
 	(HWND)SNDMSG(hDlg, PSM_GETCURRENTPAGEHWND, 0, 0L)
 	 
 
+/**************************************************************************
+ *  UNDOCUMENTED functions
+ */
+
+/* private heap memory functions */
+
+LPVOID WINAPI COMCTL32_Alloc (DWORD);
+LPVOID WINAPI COMCTL32_ReAlloc (LPVOID, DWORD);
+BOOL32 WINAPI COMCTL32_Free (LPVOID);
+DWORD  WINAPI COMCTL32_GetSize (LPVOID);
+
+
+INT32  WINAPI Str_GetPtr32A (LPCSTR, LPSTR, INT32);
+BOOL32 WINAPI Str_SetPtr32A (LPSTR *, LPCSTR);
+INT32  WINAPI Str_GetPtr32W (LPCWSTR, LPWSTR, INT32);
+BOOL32 WINAPI Str_SetPtr32W (LPWSTR *, LPCWSTR);
+#define Str_GetPtr WINELIB_NAME_AW(Str_GetPtr)
+#define Str_SetPtr WINELIB_NAME_AW(Str_SetPtr)
+
+
+/* Dynamic Storage Array */
+
+typedef struct _DSA
+{
+    INT32  nItemCount;
+    LPVOID pData;
+    INT32  nMaxCount;
+    INT32  nItemSize;
+    INT32  nGrow;
+} DSA, *HDSA;
+
+HDSA   WINAPI DSA_Create (INT32, INT32);
+BOOL32 WINAPI DSA_DeleteAllItems (const HDSA);
+INT32  WINAPI DSA_DeleteItem (const HDSA, INT32);
+BOOL32 WINAPI DSA_Destroy (const HDSA);
+BOOL32 WINAPI DSA_GetItem (const HDSA, INT32, LPVOID);
+LPVOID WINAPI DSA_GetItemPtr (const HDSA, INT32);
+INT32  WINAPI DSA_InsertItem (const HDSA, INT32, LPVOID);
+BOOL32 WINAPI DSA_SetItem (const HDSA, INT32, LPVOID);
+
+typedef INT32 (CALLBACK *DSAENUMPROC)(LPVOID, DWORD);
+VOID   WINAPI DSA_EnumCallback (const HDSA, DSAENUMPROC, LPARAM);
+BOOL32 WINAPI DSA_DestroyCallback (const HDSA, DSAENUMPROC, LPARAM);
+
+
+/* Dynamic Pointer Array */
+
+typedef struct _DPA
+{
+    INT32    nItemCount;
+    LPVOID   *ptrs; 
+    HANDLE32 hHeap;
+    INT32    nGrow;
+    INT32    nMaxCount;
+} DPA, *HDPA;
+
+HDPA   WINAPI DPA_Create (INT32);
+HDPA   WINAPI DPA_CreateEx (INT32, HANDLE32);
+BOOL32 WINAPI DPA_Destroy (const HDPA);
+HDPA   WINAPI DPA_Clone (const HDPA, const HDPA);
+LPVOID WINAPI DPA_GetPtr (const HDPA, INT32);
+INT32  WINAPI DPA_GetPtrIndex (const HDPA, LPVOID);
+BOOL32 WINAPI DPA_Grow (const HDPA, INT32);
+BOOL32 WINAPI DPA_SetPtr (const HDPA, INT32, LPVOID);
+INT32  WINAPI DPA_InsertPtr (const HDPA, INT32, LPVOID);
+LPVOID WINAPI DPA_DeletePtr (const HDPA, INT32);
+BOOL32 WINAPI DPA_DeleteAllPtrs (const HDPA);
+
+typedef INT32 (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
+BOOL32 WINAPI DPA_Sort (const HDPA, PFNDPACOMPARE, LPARAM);
+
+#define DPAS_SORTED             0x0001
+#define DPAS_INSERTBEFORE       0x0002
+#define DPAS_INSERTAFTER        0x0004
+ 
+INT32  WINAPI DPA_Search (const HDPA, LPVOID, INT32, PFNDPACOMPARE, LPARAM, UINT32);
+
+#define DPAM_SORT               0x0001
+
+BOOL32 WINAPI DPA_Merge (const HDPA, const HDPA, DWORD, PFNDPACOMPARE, LPVOID, LPARAM);
+
+typedef INT32 (CALLBACK *DPAENUMPROC)(LPVOID, DWORD);
+VOID   WINAPI DPA_EnumCallback (const HDPA, DPAENUMPROC, LPARAM);
+BOOL32 WINAPI DPA_DestroyCallback (const HDPA, DPAENUMPROC, LPARAM);
+
+
+#define DPA_GetPtrCount(hdpa)  (*(INT32*)(hdpa))
+#define DPA_GetPtrPtr(hdpa)    (*((LPVOID**)((BYTE*)(hdpa)+sizeof(INT32))))
+#define DPA_FastGetPtr(hdpa,i) (DPA_GetPtrPtr(hdpa)[i])
+
+
+/* notification helper functions */
+
+LRESULT WINAPI COMCTL32_SendNotify (HWND32, HWND32, UINT32, LPNMHDR);
+
+/* type and functionality of last parameter is still unknown */
+LRESULT WINAPI COMCTL32_SendNotifyEx (HWND32, HWND32, UINT32, LPNMHDR, DWORD);
+
 #ifdef __cplusplus
 }
 #endif