Replaced direct access to the WND structure by corresponding calls to
Win32 functions.

diff --git a/dlls/comctl32/animate.c b/dlls/comctl32/animate.c
index d8ac4af..23a3d95 100644
--- a/dlls/comctl32/animate.c
+++ b/dlls/comctl32/animate.c
@@ -1,7 +1,7 @@
 /*
  * Animation control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -19,7 +19,7 @@
 #include "animate.h"
 #include "debug.h"
 
-#define ANIMATE_GetInfoPtr(wndPtr) ((ANIMATE_INFO *)wndPtr->wExtra[0])
+#define ANIMATE_GetInfoPtr(hwnd) ((ANIMATE_INFO *)GetWindowLongA (hwnd, 0))
 
 
 static BOOL
@@ -99,9 +99,9 @@
 
 
 static LRESULT
-ANIMATE_OpenA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_OpenA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(wndPtr);
+    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(hwnd);
     HINSTANCE hInstance = (HINSTANCE)wParam;
 
     ANIMATE_Free (infoPtr);
@@ -153,9 +153,9 @@
 
 
 static LRESULT
-ANIMATE_Play (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_Play (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(wndPtr); */
+    /* ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(hwnd); */
     INT nFrom   = (INT)LOWORD(lParam);
     INT nTo     = (INT)HIWORD(lParam);
     INT nRepeat = (INT)wParam;
@@ -185,9 +185,9 @@
 
 
 static LRESULT
-ANIMATE_Stop (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_Stop (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(wndPtr); */
+    /* ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(hwnd); */
 
 #if 0
     /* nothing opened */
@@ -201,23 +201,20 @@
 
 
 static LRESULT
-ANIMATE_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     ANIMATE_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (ANIMATE_INFO *)COMCTL32_Alloc (sizeof(ANIMATE_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
+    if (!infoPtr) {
 	ERR (animate, "could not allocate info memory!\n");
 	return 0;
     }
 
-    if ((ANIMATE_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (animate, "pointer assignment error!\n");
-	return 0;
-    }
+    /* store pointer to info structure */
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
+
 
     /* set default settings */
 
@@ -227,9 +224,9 @@
 
 
 static LRESULT
-ANIMATE_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(wndPtr);
+    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(hwnd);
 
 
     /* free avi data */
@@ -244,9 +241,9 @@
 
 #if 0
 static LRESULT
-ANIMATE_EraseBackground (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+ANIMATE_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(wndPtr);
+    ANIMATE_INFO *infoPtr = ANIMATE_GetInfoPtr(hwnd);
 /*
     HBRUSH32 hBrush = CreateSolidBrush32 (infoPtr->clrBk);
     RECT32 rect;
@@ -264,31 +261,29 @@
 LRESULT WINAPI
 ANIMATE_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 	case ACM_OPENA:
-	    return ANIMATE_OpenA (wndPtr, wParam, lParam);
+	    return ANIMATE_OpenA (hwnd, wParam, lParam);
 
 /*	case ACM_OPEN32W: */
-/*	    return ANIMATE_Open32W (wndPtr, wParam, lParam); */
+/*	    return ANIMATE_Open32W (hwnd, wParam, lParam); */
 
         case ACM_PLAY:
-            return ANIMATE_Play (wndPtr, wParam, lParam);
+            return ANIMATE_Play (hwnd, wParam, lParam);
 
 	case ACM_STOP:
-	    return ANIMATE_Stop (wndPtr, wParam, lParam);
+	    return ANIMATE_Stop (hwnd, wParam, lParam);
 
 
 	case WM_CREATE:
-	    return ANIMATE_Create (wndPtr, wParam, lParam);
+	    return ANIMATE_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return ANIMATE_Destroy (wndPtr, wParam, lParam);
+	    return ANIMATE_Destroy (hwnd, wParam, lParam);
 
 /*	case WM_ERASEBKGND: */
-/*	    return ANIMATE_EraseBackground (wndPtr, wParam, lParam); */
+/*	    return ANIMATE_EraseBackground (hwnd, wParam, lParam); */
 
 /*	case WM_NCCREATE: */
 /*	case WM_NCHITTEST: */
diff --git a/dlls/comctl32/comboex.c b/dlls/comctl32/comboex.c
index c3d3c0e..7c101ff 100644
--- a/dlls/comctl32/comboex.c
+++ b/dlls/comctl32/comboex.c
@@ -1,7 +1,7 @@
 /*
  * ComboBoxEx control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -23,16 +23,16 @@
 
 #define ID_CB_EDIT    1001
 
-#define COMBOEX_GetInfoPtr(wndPtr) ((COMBOEX_INFO *)wndPtr->wExtra[0])
+#define COMBOEX_GetInfoPtr(wndPtr) ((COMBOEX_INFO *)GetWindowLongA (hwnd, 0))
 
 
 /* << COMBOEX_DeleteItem >> */
 
 
 __inline__ static LRESULT
-COMBOEX_GetComboControl (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_GetComboControl (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
     TRACE (comboex, "\n");
 
@@ -41,11 +41,11 @@
 
 
 __inline__ static LRESULT
-COMBOEX_GetEditControl (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_GetEditControl (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
-    if ((wndPtr->dwStyle & CBS_DROPDOWNLIST) != CBS_DROPDOWN)
+    if ((GetWindowLongA (hwnd, GWL_STYLE) & CBS_DROPDOWNLIST) != CBS_DROPDOWN)
 	return 0;
 
     TRACE (comboex, "-- 0x%x\n", GetDlgItem (infoPtr->hwndCombo, ID_CB_EDIT));
@@ -55,18 +55,18 @@
 
 
 __inline__ static LRESULT
-COMBOEX_GetExtendedStyle (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_GetExtendedStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->dwExtStyle;
 }
 
 
 __inline__ static LRESULT
-COMBOEX_GetImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_GetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
     TRACE (comboex, "(0x%08x 0x%08lx)\n", wParam, lParam);
 
@@ -77,9 +77,9 @@
 
 
 static LRESULT
-COMBOEX_InsertItemA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr); */
+    /* COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd); */
 
     FIXME (comboex, "(0x%08x 0x%08lx)\n", wParam, lParam);
 
@@ -89,9 +89,9 @@
 
 
 static LRESULT
-COMBOEX_SetExtendedStyle (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_SetExtendedStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
     DWORD dwTemp;
 
     TRACE (comboex, "(0x%08x 0x%08lx)\n", wParam, lParam);
@@ -111,9 +111,9 @@
 
 
 __inline__ static LRESULT
-COMBOEX_SetImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_SetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
     HIMAGELIST himlTemp;
 
     TRACE (comboex, "(0x%08x 0x%08lx)\n", wParam, lParam);
@@ -126,9 +126,9 @@
 
 
 static LRESULT
-COMBOEX_SetItemA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr); */
+    /* COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd); */
 
     FIXME (comboex, "(%p): stub\n", (LPVOID)lParam);
 
@@ -140,9 +140,9 @@
 
 
 __inline__ static LRESULT
-COMBOEX_Forward (WND *wndPtr, UINT uMsg, WPARAM wParam, LPARAM lParam)
+COMBOEX_Forward (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
     FIXME (comboex, "(0x%x 0x%x 0x%lx): stub\n", uMsg, wParam, lParam);
 
@@ -154,48 +154,41 @@
 
 
 static LRESULT
-COMBOEX_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     COMBOEX_INFO *infoPtr;
     DWORD dwComboStyle;
 
     /* allocate memory for info structure */
     infoPtr = (COMBOEX_INFO *)COMCTL32_Alloc (sizeof(COMBOEX_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
     if (infoPtr == NULL) {
 	ERR (listview, "could not allocate info memory!\n");
 	return 0;
     }
 
-    if ((COMBOEX_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (listview, "pointer assignment error!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
 
     /* initialize info structure */
 
 
     /* create combo box */
-    dwComboStyle = 
-	wndPtr->dwStyle & (CBS_SIMPLE|CBS_DROPDOWN|CBS_DROPDOWNLIST|WS_CHILD);
+    dwComboStyle = GetWindowLongA (hwnd, GWL_STYLE) &
+			(CBS_SIMPLE|CBS_DROPDOWN|CBS_DROPDOWNLIST|WS_CHILD);
 
-    infoPtr->hwndCombo =
-	CreateWindowA ("ComboBox", "",
+    infoPtr->hwndCombo = CreateWindowA ("ComboBox", "",
 			 WS_CHILD | WS_VISIBLE | CBS_OWNERDRAWFIXED | dwComboStyle,
-			 0, 0, 0, 0, wndPtr->hwndSelf, (HMENU)1,
-			 wndPtr->hInstance, NULL);
-
+			0, 0, 0, 0, hwnd, (HMENU)1,
+			GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
 
     return 0;
 }
 
 
 static LRESULT
-COMBOEX_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
 
 
     if (infoPtr->hwndCombo)
@@ -212,12 +205,12 @@
 
 
 static LRESULT
-COMBOEX_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+COMBOEX_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr(wndPtr);
+    COMBOEX_INFO *infoPtr = COMBOEX_GetInfoPtr (hwnd);
     RECT rect;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     MoveWindow (infoPtr->hwndCombo, 0, 0, rect.right -rect.left,
 		  rect.bottom - rect.top, TRUE);
@@ -229,23 +222,21 @@
 LRESULT WINAPI
 COMBOEX_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 /*	case CBEM_DELETEITEM: */
 
 	case CBEM_GETCOMBOCONTROL:
-	    return COMBOEX_GetComboControl (wndPtr, wParam, lParam);
+	    return COMBOEX_GetComboControl (hwnd, wParam, lParam);
 
 	case CBEM_GETEDITCONTROL:
-	    return COMBOEX_GetEditControl (wndPtr, wParam, lParam);
+	    return COMBOEX_GetEditControl (hwnd, wParam, lParam);
 
 	case CBEM_GETEXTENDEDSTYLE:
-	    return COMBOEX_GetExtendedStyle (wndPtr, wParam, lParam);
+	    return COMBOEX_GetExtendedStyle (hwnd, wParam, lParam);
 
 	case CBEM_GETIMAGELIST:
-	    return COMBOEX_GetImageList (wndPtr, wParam, lParam);
+	    return COMBOEX_GetImageList (hwnd, wParam, lParam);
 
 /*	case CBEM_GETITEM32A:
 	case CBEM_GETITEM32W:
@@ -254,18 +245,18 @@
 */
 
 	case CBEM_INSERTITEMA:
-	    return COMBOEX_InsertItemA (wndPtr, wParam, lParam);
+	    return COMBOEX_InsertItemA (hwnd, wParam, lParam);
 
 /*	case CBEM_INSERTITEM32W: */
 
 	case CBEM_SETEXTENDEDSTYLE:
-	    return COMBOEX_SetExtendedStyle (wndPtr, wParam, lParam);
+	    return COMBOEX_SetExtendedStyle (hwnd, wParam, lParam);
 
 	case CBEM_SETIMAGELIST:
-	    return COMBOEX_SetImageList (wndPtr, wParam, lParam);
+	    return COMBOEX_SetImageList (hwnd, wParam, lParam);
 
 	case CBEM_SETITEMA:
-	    return COMBOEX_SetItemA (wndPtr, wParam, lParam);
+	    return COMBOEX_SetItemA (hwnd, wParam, lParam);
 
 /*	case CBEM_SETITEM32W:
 	case CBEM_SETUNICODEFORMAT:
@@ -291,17 +282,17 @@
 	case CB_SETITEMDATA:
 	case CB_SETITEMHEIGHT:
 	case CB_SHOWDROPDOWN:
-	    return COMBOEX_Forward (wndPtr, uMsg, wParam, lParam);
+	    return COMBOEX_Forward (hwnd, uMsg, wParam, lParam);
 
 
 	case WM_CREATE:
-	    return COMBOEX_Create (wndPtr, wParam, lParam);
+	    return COMBOEX_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return COMBOEX_Destroy (wndPtr, wParam, lParam);
+	    return COMBOEX_Destroy (hwnd, wParam, lParam);
 
 	case WM_SIZE:
-	    return COMBOEX_Size (wndPtr, wParam, lParam);
+	    return COMBOEX_Size (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index bb5a016..b994976 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -1,7 +1,7 @@
 /*
  * Date and time picker control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -20,7 +20,7 @@
 #include "debug.h"
 
 
-#define DATETIME_GetInfoPtr(wndPtr) ((DATETIME_INFO *)wndPtr->wExtra[0])
+#define DATETIME_GetInfoPtr(hwnd) ((DATETIME_INFO *)GetWindowLongA (hwnd, 0))
 
 
 
@@ -28,23 +28,19 @@
 
 
 static LRESULT
-DATETIME_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+DATETIME_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     DATETIME_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (DATETIME_INFO *)COMCTL32_Alloc (sizeof(DATETIME_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
     if (infoPtr == NULL) {
 	ERR (datetime, "could not allocate info memory!\n");
 	return 0;
     }
 
-    if ((DATETIME_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (datetime, "pointer assignment error!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
+
 
     /* initialize info structure */
 
@@ -55,9 +51,9 @@
 
 
 static LRESULT
-DATETIME_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+DATETIME_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    DATETIME_INFO *infoPtr = DATETIME_GetInfoPtr(wndPtr);
+    DATETIME_INFO *infoPtr = DATETIME_GetInfoPtr (hwnd);
 
     /* free datetime info data */
     COMCTL32_Free (infoPtr);
@@ -71,8 +67,6 @@
 LRESULT WINAPI
 DATETIME_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 
@@ -121,10 +115,10 @@
         return 0;
 
 	case WM_CREATE:
-	    return DATETIME_Create (wndPtr, wParam, lParam);
+	    return DATETIME_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return DATETIME_Destroy (wndPtr, wParam, lParam);
+	    return DATETIME_Destroy (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/flatsb.c b/dlls/comctl32/flatsb.c
index ad484a3..02105a8 100644
--- a/dlls/comctl32/flatsb.c
+++ b/dlls/comctl32/flatsb.c
@@ -1,7 +1,7 @@
 /*
  * Flat Scrollbar control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  * Copyright 1998 Alex Priem
  *
  * NOTES
@@ -21,7 +21,7 @@
 #include "debug.h"
 
 
-#define FlatSB_GetInfoPtr(wndPtr) ((FLATSB_INFO*)wndPtr->wExtra[0])
+#define FlatSB_GetInfoPtr(hwnd) ((FLATSB_INFO*)GetWindowLongA (hwnd, 0))
 
 
 BOOL WINAPI 
@@ -111,14 +111,14 @@
 
 
 static LRESULT
-FlatSB_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+FlatSB_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     return 0;
 }
 
 
 static LRESULT
-FlatSB_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+FlatSB_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     return 0;
 }
@@ -129,16 +129,14 @@
 LRESULT WINAPI
 FlatSB_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 
 	case WM_CREATE:
-	    return FlatSB_Create (wndPtr, wParam, lParam);
+	    return FlatSB_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return FlatSB_Destroy (wndPtr, wParam, lParam);
+	    return FlatSB_Destroy (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/header.c b/dlls/comctl32/header.c
index f7dc5bf..73bbc7c 100644
--- a/dlls/comctl32/header.c
+++ b/dlls/comctl32/header.c
@@ -33,13 +33,13 @@
 #define VERT_BORDER     4
 #define DIVIDER_WIDTH  10
 
-#define HEADER_GetInfoPtr(wndPtr) ((HEADER_INFO *)wndPtr->wExtra[0])
+#define HEADER_GetInfoPtr(hwnd) ((HEADER_INFO *)GetWindowLongA(hwnd,0))
 
 
 static INT
-HEADER_DrawItem (WND *wndPtr, HDC hdc, INT iItem, BOOL bHotTrack)
+HEADER_DrawItem (HWND hwnd, HDC hdc, INT iItem, BOOL bHotTrack)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HEADER_ITEM *phdi = &infoPtr->items[iItem];
     RECT r;
     INT  oldBkMode;
@@ -48,7 +48,7 @@
     if (r.right - r.left == 0)
 	return phdi->rect.right;
 
-    if (wndPtr->dwStyle & HDS_BUTTONS) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & HDS_BUTTONS) {
 	if (phdi->bDown) {
 	    DrawEdge (hdc, &r, BDR_RAISEDOUTER,
 			BF_RECT | BF_FLAT | BF_MIDDLE | BF_ADJUST);
@@ -65,16 +65,16 @@
     if (phdi->fmt & HDF_OWNERDRAW) {
 	DRAWITEMSTRUCT dis;
 	dis.CtlType    = ODT_HEADER;
-	dis.CtlID      = wndPtr->wIDmenu;
+	dis.CtlID      = GetWindowLongA (hwnd, GWL_ID);
 	dis.itemID     = iItem;
 	dis.itemAction = ODA_DRAWENTIRE;
 	dis.itemState  = phdi->bDown ? ODS_SELECTED : 0;
-	dis.hwndItem   = wndPtr->hwndSelf;
+	dis.hwndItem   = hwnd;
 	dis.hDC        = hdc;
 	dis.rcItem     = r;
 	dis.itemData   = phdi->lParam;
-	SendMessageA (GetParent (wndPtr->hwndSelf), WM_DRAWITEM,
-			(WPARAM)wndPtr->wIDmenu, (LPARAM)&dis);
+	SendMessageA (GetParent (hwnd), WM_DRAWITEM,
+			(WPARAM)dis.CtlID, (LPARAM)&dis);
     }
     else {
         UINT uTextJustify = DT_LEFT;
@@ -189,21 +189,22 @@
                 SetBkMode(hdc, oldBkMode);
         }
     }
+
     return phdi->rect.right;
 }
 
 
 static void 
-HEADER_Refresh (WND *wndPtr, HDC hdc)
+HEADER_Refresh (HWND hwnd, HDC hdc)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HFONT hFont, hOldFont;
     RECT rect;
     HBRUSH hbrBk;
     INT i, x;
 
     /* get rect for the bar, adjusted for the border */
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     hFont = infoPtr->hFont ? infoPtr->hFont : GetStockObject (SYSTEM_FONT);
     hOldFont = SelectObject (hdc, hFont);
@@ -214,12 +215,12 @@
 
     x = rect.left;
     for (i = 0; i < infoPtr->uNumItem; i++) {
-        x = HEADER_DrawItem (wndPtr, hdc, i, FALSE);
+        x = HEADER_DrawItem (hwnd, hdc, i, FALSE);
     }
 
     if ((x <= rect.right) && (infoPtr->uNumItem > 0)) {
         rect.left = x;
-        if (wndPtr->dwStyle & HDS_BUTTONS)
+        if (GetWindowLongA (hwnd, GWL_STYLE) & HDS_BUTTONS)
             DrawEdge (hdc, &rect, EDGE_RAISED, BF_TOP|BF_LEFT|BF_BOTTOM|BF_SOFT);
         else
             DrawEdge (hdc, &rect, EDGE_ETCHED, BF_BOTTOM);
@@ -230,22 +231,22 @@
 
 
 static void
-HEADER_RefreshItem (WND *wndPtr, HDC hdc, INT iItem)
+HEADER_RefreshItem (HWND hwnd, HDC hdc, INT iItem)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HFONT hFont, hOldFont;
 
     hFont = infoPtr->hFont ? infoPtr->hFont : GetStockObject (SYSTEM_FONT);
     hOldFont = SelectObject (hdc, hFont);
-    HEADER_DrawItem (wndPtr, hdc, iItem, FALSE);
+    HEADER_DrawItem (hwnd, hdc, iItem, FALSE);
     SelectObject (hdc, hOldFont);
 }
 
 
 static void
-HEADER_SetItemBounds (WND *wndPtr)
+HEADER_SetItemBounds (HWND hwnd)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HEADER_ITEM *phdi;
     RECT rect;
     int i, x;
@@ -253,7 +254,7 @@
     if (infoPtr->uNumItem == 0)
         return;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     x = rect.left;
     for (i = 0; i < infoPtr->uNumItem; i++) {
@@ -268,9 +269,9 @@
 
 
 static void
-HEADER_ForceItemBounds (WND *wndPtr, INT cy)
+HEADER_ForceItemBounds (HWND hwnd, INT cy)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HEADER_ITEM *phdi;
     int i, x;
 
@@ -290,14 +291,14 @@
 
 
 static void
-HEADER_InternalHitTest (WND *wndPtr, LPPOINT lpPt, UINT *pFlags, INT *pItem)
+HEADER_InternalHitTest (HWND hwnd, LPPOINT lpPt, UINT *pFlags, INT *pItem)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     RECT rect, rcTest;
     INT  iCount, width;
     BOOL bNoWidth;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     *pFlags = 0;
     bNoWidth = FALSE;
@@ -411,13 +412,13 @@
 
 
 static void
-HEADER_DrawTrackLine (WND *wndPtr, HDC hdc, INT x)
+HEADER_DrawTrackLine (HWND hwnd, HDC hdc, INT x)
 {
     RECT rect;
     HPEN hOldPen;
     INT  oldRop;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     hOldPen = SelectObject (hdc, GetStockObject (BLACK_PEN));
     oldRop = SetROP2 (hdc, R2_XORPEN);
@@ -429,28 +430,28 @@
 
 
 static BOOL
-HEADER_SendSimpleNotify (WND *wndPtr, UINT code)
+HEADER_SendSimpleNotify (HWND hwnd, UINT code)
 {
     NMHDR nmhdr;
 
-    nmhdr.hwndFrom = wndPtr->hwndSelf;
-    nmhdr.idFrom   = wndPtr->wIDmenu;
+    nmhdr.hwndFrom = hwnd;
+    nmhdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
     nmhdr.code     = code;
 
-    return (BOOL)SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
+    return (BOOL)SendMessageA (GetParent (hwnd), WM_NOTIFY,
 				   (WPARAM)nmhdr.idFrom, (LPARAM)&nmhdr);
 }
 
 
 static BOOL
-HEADER_SendHeaderNotify (WND *wndPtr, UINT code, INT iItem)
+HEADER_SendHeaderNotify (HWND hwnd, UINT code, INT iItem)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);   
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     NMHEADERA nmhdr;
     HDITEMA nmitem;
 
-    nmhdr.hdr.hwndFrom = wndPtr->hwndSelf;
-    nmhdr.hdr.idFrom = wndPtr->wIDmenu;
+    nmhdr.hdr.hwndFrom = hwnd;
+    nmhdr.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
     nmhdr.hdr.code = code;
     nmhdr.iItem = iItem;
     nmhdr.iButton = 0;
@@ -467,30 +468,30 @@
     nmitem.iOrder = infoPtr->items[iItem].iOrder;
     nmitem.iImage = infoPtr->items[iItem].iImage;
 
-    return (BOOL)SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-				   (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmhdr);
+    return (BOOL)SendMessageA (GetParent (hwnd), WM_NOTIFY,
+			       (WPARAM)nmhdr.hdr.idFrom, (LPARAM)&nmhdr);
 }
 
 
 static BOOL
-HEADER_SendClickNotify (WND *wndPtr, UINT code, INT iItem)
+HEADER_SendClickNotify (HWND hwnd, UINT code, INT iItem)
 {
     NMHEADERA nmhdr;
 
-    nmhdr.hdr.hwndFrom = wndPtr->hwndSelf;
-    nmhdr.hdr.idFrom = wndPtr->wIDmenu;
+    nmhdr.hdr.hwndFrom = hwnd;
+    nmhdr.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
     nmhdr.hdr.code = code;
     nmhdr.iItem = iItem;
     nmhdr.iButton = 0;
     nmhdr.pitem = NULL;
 
-    return (BOOL)SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-				   (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmhdr);
+    return (BOOL)SendMessageA (GetParent (hwnd), WM_NOTIFY,
+			       (WPARAM)nmhdr.hdr.idFrom, (LPARAM)&nmhdr);
 }
 
 
 static LRESULT
-HEADER_CreateDragImage (WND *wndPtr, WPARAM wParam)
+HEADER_CreateDragImage (HWND hwnd, WPARAM wParam)
 {
     FIXME (header, "empty stub!\n");
     return 0;
@@ -498,9 +499,9 @@
 
 
 static LRESULT
-HEADER_DeleteItem (WND *wndPtr, WPARAM wParam)
+HEADER_DeleteItem (HWND hwnd, WPARAM wParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(hwnd);
     INT iItem = (INT)wParam;
     HDC hdc;
 
@@ -541,29 +542,29 @@
         COMCTL32_Free (oldItems);
     }
 
-    HEADER_SetItemBounds (wndPtr);
+    HEADER_SetItemBounds (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    HEADER_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    HEADER_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
     
     return TRUE;
 }
 
 
 static LRESULT
-HEADER_GetImageList (WND *wndPtr)
+HEADER_GetImageList (HWND hwnd)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->himl;
 }
 
 
 static LRESULT
-HEADER_GetItemA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_GetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMA   *phdi = (HDITEMA*)lParam;
     INT       nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -609,9 +610,9 @@
 
 
 static LRESULT
-HEADER_GetItemW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_GetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMW   *phdi = (HDITEMW*)lParam;
     INT       nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -657,17 +658,17 @@
 
 
 __inline__ static LRESULT
-HEADER_GetItemCount (WND *wndPtr)
+HEADER_GetItemCount (HWND hwnd)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     return infoPtr->uNumItem;
 }
 
 
 static LRESULT
-HEADER_GetItemRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_GetItemRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     INT iItem = (INT)wParam;
     LPRECT lpRect = (LPRECT)lParam;
 
@@ -687,28 +688,28 @@
 
 
 __inline__ static LRESULT
-HEADER_GetUnicodeFormat (WND *wndPtr)
+HEADER_GetUnicodeFormat (HWND hwnd)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     return infoPtr->bUnicode;
 }
 
 
 static LRESULT
-HEADER_HitTest (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     LPHDHITTESTINFO phti = (LPHDHITTESTINFO)lParam;
 
-    HEADER_InternalHitTest (wndPtr, &phti->pt, &phti->flags, &phti->iItem);
+    HEADER_InternalHitTest (hwnd, &phti->pt, &phti->flags, &phti->iItem);
 
     return phti->flags;
 }
 
 
 static LRESULT
-HEADER_InsertItemA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_InsertItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMA   *phdi = (HDITEMA*)lParam;
     INT       nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -786,20 +787,20 @@
     if (phdi->mask & HDI_ORDER)
         lpItem->iOrder = phdi->iOrder;
 
-    HEADER_SetItemBounds (wndPtr);
+    HEADER_SetItemBounds (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    HEADER_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    HEADER_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return nItem;
 }
 
 
 static LRESULT
-HEADER_InsertItemW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_InsertItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMW   *phdi = (HDITEMW*)lParam;
     INT       nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -870,28 +871,28 @@
     if (phdi->mask & HDI_ORDER)
         lpItem->iOrder = phdi->iOrder;
 
-    HEADER_SetItemBounds (wndPtr);
+    HEADER_SetItemBounds (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    HEADER_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    HEADER_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return nItem;
 }
 
 
 static LRESULT
-HEADER_Layout (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_Layout (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     LPHDLAYOUT lpLayout = (LPHDLAYOUT)lParam;
 
-    lpLayout->pwpos->hwnd = wndPtr->hwndSelf;
+    lpLayout->pwpos->hwnd = hwnd;
     lpLayout->pwpos->hwndInsertAfter = 0;
     lpLayout->pwpos->x = lpLayout->prc->left;
     lpLayout->pwpos->y = lpLayout->prc->top;
     lpLayout->pwpos->cx = lpLayout->prc->right - lpLayout->prc->left;
-    if (wndPtr->dwStyle & HDS_HIDDEN)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & HDS_HIDDEN)
         lpLayout->pwpos->cy = 0;
     else
         lpLayout->pwpos->cy = infoPtr->nHeight;
@@ -901,7 +902,7 @@
            lpLayout->pwpos->x, lpLayout->pwpos->y,
            lpLayout->pwpos->cx, lpLayout->pwpos->cy);
 
-    HEADER_ForceItemBounds (wndPtr, lpLayout->pwpos->cy);
+    HEADER_ForceItemBounds (hwnd, lpLayout->pwpos->cy);
 
     /* hack */
 #ifdef __HDM_LAYOUT_HACK__
@@ -914,9 +915,9 @@
 
 
 static LRESULT
-HEADER_SetImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_SetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HIMAGELIST himlOld;
 
     himlOld = infoPtr->himl;
@@ -929,9 +930,9 @@
 
 
 static LRESULT
-HEADER_SetItemA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_SetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMA *phdi = (HDITEMA*)lParam;
     INT nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -944,7 +945,7 @@
 
     TRACE (header, "[nItem=%d]\n", nItem);
 
-    if (HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGINGA, nItem))
+    if (HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGINGA, nItem))
 	return FALSE;
 
     lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];
@@ -982,21 +983,21 @@
     if (phdi->mask & HDI_ORDER)
 	lpItem->iOrder = phdi->iOrder;
 
-    HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGEDA, nItem);
+    HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGEDA, nItem);
 
-    HEADER_SetItemBounds (wndPtr);
-    hdc = GetDC (wndPtr->hwndSelf);
-    HEADER_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    HEADER_SetItemBounds (hwnd);
+    hdc = GetDC (hwnd);
+    HEADER_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-HEADER_SetItemW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_SetItemW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HDITEMW *phdi = (HDITEMW*)lParam;
     INT nItem = (INT)wParam;
     HEADER_ITEM *lpItem;
@@ -1009,7 +1010,7 @@
 
     TRACE (header, "[nItem=%d]\n", nItem);
 
-    if (HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGINGA, nItem))
+    if (HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGINGA, nItem))
 	return FALSE;
 
     lpItem = (HEADER_ITEM*)&infoPtr->items[nItem];
@@ -1047,12 +1048,12 @@
     if (phdi->mask & HDI_ORDER)
 	lpItem->iOrder = phdi->iOrder;
 
-    HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGEDA, nItem);
+    HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGEDA, nItem);
 
-    HEADER_SetItemBounds (wndPtr);
-    hdc = GetDC (wndPtr->hwndSelf);
-    HEADER_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    HEADER_SetItemBounds (hwnd);
+    hdc = GetDC (hwnd);
+    HEADER_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1062,9 +1063,9 @@
 
 
 __inline__ static LRESULT
-HEADER_SetUnicodeFormat (WND *wndPtr, WPARAM wParam)
+HEADER_SetUnicodeFormat (HWND hwnd, WPARAM wParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     BOOL bTemp = infoPtr->bUnicode;
 
     infoPtr->bUnicode = (BOOL)wParam;
@@ -1074,7 +1075,7 @@
 
 
 static LRESULT
-HEADER_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HEADER_INFO *infoPtr;
     TEXTMETRICA tm;
@@ -1082,7 +1083,7 @@
     HDC   hdc;
 
     infoPtr = (HEADER_INFO *)COMCTL32_Alloc (sizeof(HEADER_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     infoPtr->uNumItem = 0;
     infoPtr->nHeight = 20;
@@ -1096,7 +1097,7 @@
     infoPtr->iMoveItem = 0;
     infoPtr->himl = 0;
     infoPtr->iHotItem = -1;
-    infoPtr->bUnicode = IsWindowUnicode (wndPtr->hwndSelf);
+    infoPtr->bUnicode = IsWindowUnicode (hwnd);
 
     hdc = GetDC (0);
     hOldFont = SelectObject (hdc, GetStockObject (SYSTEM_FONT));
@@ -1110,9 +1111,9 @@
 
 
 static LRESULT
-HEADER_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     HEADER_ITEM *lpItem;
     INT nItem;
 
@@ -1135,16 +1136,16 @@
 
 
 static __inline__ LRESULT
-HEADER_GetFont (WND *wndPtr)
+HEADER_GetFont (HWND hwnd)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->hFont;
 }
 
 
 static LRESULT
-HEADER_LButtonDblClk (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_LButtonDblClk (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     POINT pt;
     UINT  flags;
@@ -1152,21 +1153,22 @@
 
     pt.x = (INT)LOWORD(lParam); 
     pt.y = (INT)HIWORD(lParam);
-    HEADER_InternalHitTest (wndPtr, &pt, &flags, &nItem);
+    HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem);
 
-    if ((wndPtr->dwStyle & HDS_BUTTONS) && (flags == HHT_ONHEADER))
-	HEADER_SendHeaderNotify (wndPtr, HDN_ITEMDBLCLICKA, nItem);
+    if ((GetWindowLongA (hwnd, GWL_STYLE) & HDS_BUTTONS) && (flags == HHT_ONHEADER))
+	HEADER_SendHeaderNotify (hwnd, HDN_ITEMDBLCLICKA, nItem);
     else if ((flags == HHT_ONDIVIDER) || (flags == HHT_ONDIVOPEN))
-	HEADER_SendHeaderNotify (wndPtr, HDN_DIVIDERDBLCLICKA, nItem);
+	HEADER_SendHeaderNotify (hwnd, HDN_DIVIDERDBLCLICKA, nItem);
 
     return 0;
 }
 
 
 static LRESULT
-HEADER_LButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     POINT pt;
     UINT  flags;
     INT   nItem;
@@ -1174,10 +1176,10 @@
 
     pt.x = (INT)LOWORD(lParam); 
     pt.y = (INT)HIWORD(lParam);
-    HEADER_InternalHitTest (wndPtr, &pt, &flags, &nItem);
+    HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem);
 
-    if ((wndPtr->dwStyle & HDS_BUTTONS) && (flags == HHT_ONHEADER)) {
-	SetCapture (wndPtr->hwndSelf);
+    if ((dwStyle & HDS_BUTTONS) && (flags == HHT_ONHEADER)) {
+	SetCapture (hwnd);
 	infoPtr->bCaptured = TRUE;   
 	infoPtr->bPressed  = TRUE;
 	infoPtr->iMoveItem = nItem;
@@ -1185,26 +1187,26 @@
 	infoPtr->items[nItem].bDown = TRUE;
 
 	/* Send WM_CUSTOMDRAW */
-	hdc = GetDC (wndPtr->hwndSelf);
-	HEADER_RefreshItem (wndPtr, hdc, nItem);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+	hdc = GetDC (hwnd);
+	HEADER_RefreshItem (hwnd, hdc, nItem);
+	ReleaseDC (hwnd, hdc);
 
 	TRACE (header, "Pressed item %d!\n", nItem);
     } 
     else if ((flags == HHT_ONDIVIDER) || (flags == HHT_ONDIVOPEN)) {
-	if (!(HEADER_SendHeaderNotify (wndPtr, HDN_BEGINTRACKA, nItem))) {
-	    SetCapture (wndPtr->hwndSelf);
+	if (!(HEADER_SendHeaderNotify (hwnd, HDN_BEGINTRACKA, nItem))) {
+	    SetCapture (hwnd);
 	    infoPtr->bCaptured = TRUE;   
 	    infoPtr->bTracking = TRUE;
 	    infoPtr->iMoveItem = nItem;
 	    infoPtr->nOldWidth = infoPtr->items[nItem].cxy;
 	    infoPtr->xTrackOffset = infoPtr->items[nItem].rect.right - pt.x;
 
-	    if (!(wndPtr->dwStyle & HDS_FULLDRAG)) {
+	    if (!(dwStyle & HDS_FULLDRAG)) {
 		infoPtr->xOldTrack = infoPtr->items[nItem].rect.right;
-		hdc = GetDC (wndPtr->hwndSelf);
-		HEADER_DrawTrackLine (wndPtr, hdc, infoPtr->xOldTrack);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		hdc = GetDC (hwnd);
+		HEADER_DrawTrackLine (hwnd, hdc, infoPtr->xOldTrack);
+		ReleaseDC (hwnd, hdc);
 	    }
 
 	    TRACE (header, "Begin tracking item %d!\n", nItem);
@@ -1216,9 +1218,10 @@
 
 
 static LRESULT
-HEADER_LButtonUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     POINT pt;
     UINT  flags;
     INT   nItem, nWidth;
@@ -1226,16 +1229,16 @@
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    HEADER_InternalHitTest (wndPtr, &pt, &flags, &nItem);
+    HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem);
 
     if (infoPtr->bPressed) {
 	if ((nItem == infoPtr->iMoveItem) && (flags == HHT_ONHEADER)) {
 	    infoPtr->items[infoPtr->iMoveItem].bDown = FALSE;
-	    hdc = GetDC (wndPtr->hwndSelf);
-	    HEADER_RefreshItem (wndPtr, hdc, infoPtr->iMoveItem);
-	    ReleaseDC (wndPtr->hwndSelf, hdc);
+	    hdc = GetDC (hwnd);
+	    HEADER_RefreshItem (hwnd, hdc, infoPtr->iMoveItem);
+	    ReleaseDC (hwnd, hdc);
 
-	    HEADER_SendClickNotify (wndPtr, HDN_ITEMCLICKA, infoPtr->iMoveItem);
+	    HEADER_SendClickNotify (hwnd, HDN_ITEMCLICKA, infoPtr->iMoveItem);
 	}
 	TRACE (header, "Released item %d!\n", infoPtr->iMoveItem);
 	infoPtr->bPressed = FALSE;
@@ -1244,33 +1247,33 @@
 	TRACE (header, "End tracking item %d!\n", infoPtr->iMoveItem);
 	infoPtr->bTracking = FALSE;
 
-	HEADER_SendHeaderNotify (wndPtr, HDN_ENDTRACKA, infoPtr->iMoveItem);
+	HEADER_SendHeaderNotify (hwnd, HDN_ENDTRACKA, infoPtr->iMoveItem);
 
-	if (!(wndPtr->dwStyle & HDS_FULLDRAG)) {
-	    hdc = GetDC (wndPtr->hwndSelf);
-	    HEADER_DrawTrackLine (wndPtr, hdc, infoPtr->xOldTrack);
-	    ReleaseDC (wndPtr->hwndSelf, hdc);
-	    if (HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGINGA, infoPtr->iMoveItem))
+	if (!(dwStyle & HDS_FULLDRAG)) {
+	    hdc = GetDC (hwnd);
+	    HEADER_DrawTrackLine (hwnd, hdc, infoPtr->xOldTrack);
+	    ReleaseDC (hwnd, hdc);
+	    if (HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGINGA, infoPtr->iMoveItem))
 		infoPtr->items[infoPtr->iMoveItem].cxy = infoPtr->nOldWidth;
 	    else {
 		nWidth = pt.x - infoPtr->items[infoPtr->iMoveItem].rect.left + infoPtr->xTrackOffset;
 		if (nWidth < 0)
 		    nWidth = 0;
 		infoPtr->items[infoPtr->iMoveItem].cxy = nWidth;
-		HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGEDA, infoPtr->iMoveItem);
+		HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGEDA, infoPtr->iMoveItem);
 	    }
 
-	    HEADER_SetItemBounds (wndPtr);
-	    hdc = GetDC (wndPtr->hwndSelf);
-	    HEADER_Refresh (wndPtr, hdc);
-	    ReleaseDC (wndPtr->hwndSelf, hdc);
+	    HEADER_SetItemBounds (hwnd);
+	    hdc = GetDC (hwnd);
+	    HEADER_Refresh (hwnd, hdc);
+	    ReleaseDC (hwnd, hdc);
 	}
     }
 
     if (infoPtr->bCaptured) {
 	infoPtr->bCaptured = FALSE;
 	ReleaseCapture ();
-	HEADER_SendSimpleNotify (wndPtr, NM_RELEASEDCAPTURE);
+	HEADER_SendSimpleNotify (hwnd, NM_RELEASEDCAPTURE);
     }
 
     return 0;
@@ -1278,9 +1281,10 @@
 
 
 static LRESULT
-HEADER_MouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     POINT pt;
     UINT  flags;
     INT   nItem, nWidth;
@@ -1288,16 +1292,16 @@
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    HEADER_InternalHitTest (wndPtr, &pt, &flags, &nItem);
+    HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem);
 
-    if ((wndPtr->dwStyle & HDS_BUTTONS) && (wndPtr->dwStyle & HDS_HOTTRACK)) {
+    if ((dwStyle & HDS_BUTTONS) && (dwStyle & HDS_HOTTRACK)) {
 	if (flags & (HHT_ONHEADER | HHT_ONDIVIDER | HHT_ONDIVOPEN))
 	    infoPtr->iHotItem = nItem;
 	else
 	    infoPtr->iHotItem = -1;
-	hdc = GetDC (wndPtr->hwndSelf);
-	HEADER_Refresh (wndPtr, hdc);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+	hdc = GetDC (hwnd);
+	HEADER_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     if (infoPtr->bCaptured) {
@@ -1306,47 +1310,47 @@
 		infoPtr->items[infoPtr->iMoveItem].bDown = TRUE;
 	    else
 		infoPtr->items[infoPtr->iMoveItem].bDown = FALSE;
-	    hdc = GetDC (wndPtr->hwndSelf);
-	    HEADER_RefreshItem (wndPtr, hdc, infoPtr->iMoveItem);
-	    ReleaseDC (wndPtr->hwndSelf, hdc);
+	    hdc = GetDC (hwnd);
+	    HEADER_RefreshItem (hwnd, hdc, infoPtr->iMoveItem);
+	    ReleaseDC (hwnd, hdc);
 
 	    TRACE (header, "Moving pressed item %d!\n", infoPtr->iMoveItem);
 	}
 	else if (infoPtr->bTracking) {
-	    if (wndPtr->dwStyle & HDS_FULLDRAG) {
-		if (HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGINGA, infoPtr->iMoveItem))
+	    if (dwStyle & HDS_FULLDRAG) {
+		if (HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGINGA, infoPtr->iMoveItem))
 		    infoPtr->items[infoPtr->iMoveItem].cxy = infoPtr->nOldWidth;
 		else {
 		    nWidth = pt.x - infoPtr->items[infoPtr->iMoveItem].rect.left + infoPtr->xTrackOffset;
 		    if (nWidth < 0)
 			nWidth = 0;
 		    infoPtr->items[infoPtr->iMoveItem].cxy = nWidth;
-		    HEADER_SendHeaderNotify (wndPtr, HDN_ITEMCHANGEDA,
+		    HEADER_SendHeaderNotify (hwnd, HDN_ITEMCHANGEDA,
 					     infoPtr->iMoveItem);
 		}
-		HEADER_SetItemBounds (wndPtr);
-		hdc = GetDC (wndPtr->hwndSelf);
-		HEADER_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HEADER_SetItemBounds (hwnd);
+		hdc = GetDC (hwnd);
+		HEADER_Refresh (hwnd, hdc);
+		ReleaseDC (hwnd, hdc);
 	    }
 	    else {
-		hdc = GetDC (wndPtr->hwndSelf);
-		HEADER_DrawTrackLine (wndPtr, hdc, infoPtr->xOldTrack);
+		hdc = GetDC (hwnd);
+		HEADER_DrawTrackLine (hwnd, hdc, infoPtr->xOldTrack);
 		infoPtr->xOldTrack = pt.x + infoPtr->xTrackOffset;
 		if (infoPtr->xOldTrack < infoPtr->items[infoPtr->iMoveItem].rect.left)
 		    infoPtr->xOldTrack = infoPtr->items[infoPtr->iMoveItem].rect.left;
 		infoPtr->items[infoPtr->iMoveItem].cxy = 
 		    infoPtr->xOldTrack - infoPtr->items[infoPtr->iMoveItem].rect.left;
-		HEADER_DrawTrackLine (wndPtr, hdc, infoPtr->xOldTrack);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HEADER_DrawTrackLine (hwnd, hdc, infoPtr->xOldTrack);
+		ReleaseDC (hwnd, hdc);
 	    }
 
-	    HEADER_SendHeaderNotify (wndPtr, HDN_TRACKA, infoPtr->iMoveItem);
+	    HEADER_SendHeaderNotify (hwnd, HDN_TRACKA, infoPtr->iMoveItem);
 	    TRACE (header, "Tracking item %d!\n", infoPtr->iMoveItem);
 	}
     }
 
-    if ((wndPtr->dwStyle & HDS_BUTTONS) && (wndPtr->dwStyle & HDS_HOTTRACK)) {
+    if ((dwStyle & HDS_BUTTONS) && (dwStyle & HDS_HOTTRACK)) {
 	FIXME (header, "hot track support!\n");
     }
 
@@ -1355,30 +1359,30 @@
 
 
 static LRESULT
-HEADER_Paint (WND *wndPtr, WPARAM wParam)
+HEADER_Paint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    HEADER_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    HEADER_Refresh (hwnd, hdc);
     if(!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-HEADER_RButtonUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_RButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    return HEADER_SendSimpleNotify (wndPtr, NM_RCLICK);
+    return HEADER_SendSimpleNotify (hwnd, NM_RCLICK);
 }
 
 
 static LRESULT
-HEADER_SetCursor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_SetCursor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     POINT pt;
     UINT  flags;
     INT   nItem;
@@ -1386,9 +1390,9 @@
     TRACE (header, "code=0x%X  id=0x%X\n", LOWORD(lParam), HIWORD(lParam));
 
     GetCursorPos (&pt);
-    ScreenToClient (wndPtr->hwndSelf, &pt);
+    ScreenToClient (hwnd, &pt);
 
-    HEADER_InternalHitTest (wndPtr, &pt, &flags, &nItem);
+    HEADER_InternalHitTest (hwnd, &pt, &flags, &nItem);
 
     if (flags == HHT_ONDIVIDER)
         SetCursor (infoPtr->hcurDivider);
@@ -1402,9 +1406,9 @@
 
 
 static LRESULT
-HEADER_SetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HEADER_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HEADER_INFO *infoPtr = HEADER_GetInfoPtr(wndPtr);
+    HEADER_INFO *infoPtr = HEADER_GetInfoPtr (hwnd);
     TEXTMETRICA tm;
     HFONT hFont, hOldFont;
     HDC hdc;
@@ -1421,10 +1425,10 @@
     ReleaseDC (0, hdc);
 
     if (lParam) {
-        HEADER_ForceItemBounds (wndPtr, infoPtr->nHeight);
-        hdc = GetDC (wndPtr->hwndSelf);
-        HEADER_Refresh (wndPtr, hdc);
-        ReleaseDC (wndPtr->hwndSelf, hdc);
+        HEADER_ForceItemBounds (hwnd, infoPtr->nHeight);
+        hdc = GetDC (hwnd);
+        HEADER_Refresh (hwnd, hdc);
+        ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -1434,67 +1438,65 @@
 LRESULT WINAPI
 HEADER_WindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (msg) {
 	case HDM_CREATEDRAGIMAGE:
-	    return HEADER_CreateDragImage (wndPtr, wParam);
+	    return HEADER_CreateDragImage (hwnd, wParam);
 
 	case HDM_DELETEITEM:
-	    return HEADER_DeleteItem (wndPtr, wParam);
+	    return HEADER_DeleteItem (hwnd, wParam);
 
 	case HDM_GETIMAGELIST:
-	    return HEADER_GetImageList (wndPtr);
+	    return HEADER_GetImageList (hwnd);
 
 	case HDM_GETITEMA:
-	    return HEADER_GetItemA (wndPtr, wParam, lParam);
+	    return HEADER_GetItemA (hwnd, wParam, lParam);
 
 	case HDM_GETITEMW:
-	    return HEADER_GetItemW (wndPtr, wParam, lParam);
+	    return HEADER_GetItemW (hwnd, wParam, lParam);
 
 	case HDM_GETITEMCOUNT:
-	    return HEADER_GetItemCount (wndPtr);
+	    return HEADER_GetItemCount (hwnd);
 
 	case HDM_GETITEMRECT:
-	    return HEADER_GetItemRect (wndPtr, wParam, lParam);
+	    return HEADER_GetItemRect (hwnd, wParam, lParam);
 
 /*	case HDM_GETORDERARRAY: */
 
 	case HDM_GETUNICODEFORMAT:
-	    return HEADER_GetUnicodeFormat (wndPtr);
+	    return HEADER_GetUnicodeFormat (hwnd);
 
 	case HDM_HITTEST:
-	    return HEADER_HitTest (wndPtr, wParam, lParam);
+	    return HEADER_HitTest (hwnd, wParam, lParam);
 
 	case HDM_INSERTITEMA:
-	    return HEADER_InsertItemA (wndPtr, wParam, lParam);
+	    return HEADER_InsertItemA (hwnd, wParam, lParam);
 
 	case HDM_INSERTITEMW:
-	    return HEADER_InsertItemW (wndPtr, wParam, lParam);
+	    return HEADER_InsertItemW (hwnd, wParam, lParam);
 
 	case HDM_LAYOUT:
-	    return HEADER_Layout (wndPtr, wParam, lParam);
+	    return HEADER_Layout (hwnd, wParam, lParam);
 
 	case HDM_SETIMAGELIST:
-	    return HEADER_SetImageList (wndPtr, wParam, lParam);
+	    return HEADER_SetImageList (hwnd, wParam, lParam);
 
 	case HDM_SETITEMA:
-	    return HEADER_SetItemA (wndPtr, wParam, lParam);
+	    return HEADER_SetItemA (hwnd, wParam, lParam);
 
 	case HDM_SETITEMW:
-	    return HEADER_SetItemW (wndPtr, wParam, lParam);
+	    return HEADER_SetItemW (hwnd, wParam, lParam);
 
 /*	case HDM_SETORDERARRAY: */
 
 	case HDM_SETUNICODEFORMAT:
-	    return HEADER_SetUnicodeFormat (wndPtr, wParam);
+	    return HEADER_SetUnicodeFormat (hwnd, wParam);
 
 
         case WM_CREATE:
-            return HEADER_Create (wndPtr, wParam, lParam);
+            return HEADER_Create (hwnd, wParam, lParam);
 
         case WM_DESTROY:
-            return HEADER_Destroy (wndPtr, wParam, lParam);
+            return HEADER_Destroy (hwnd, wParam, lParam);
 
         case WM_ERASEBKGND:
             return 1;
@@ -1503,33 +1505,33 @@
             return DLGC_WANTTAB | DLGC_WANTARROWS;
 
         case WM_GETFONT:
-            return HEADER_GetFont (wndPtr);
+            return HEADER_GetFont (hwnd);
 
         case WM_LBUTTONDBLCLK:
-            return HEADER_LButtonDblClk (wndPtr, wParam, lParam);
+            return HEADER_LButtonDblClk (hwnd, wParam, lParam);
 
         case WM_LBUTTONDOWN:
-            return HEADER_LButtonDown (wndPtr, wParam, lParam);
+            return HEADER_LButtonDown (hwnd, wParam, lParam);
 
         case WM_LBUTTONUP:
-            return HEADER_LButtonUp (wndPtr, wParam, lParam);
+            return HEADER_LButtonUp (hwnd, wParam, lParam);
 
         case WM_MOUSEMOVE:
-            return HEADER_MouseMove (wndPtr, wParam, lParam);
+            return HEADER_MouseMove (hwnd, wParam, lParam);
 
 /*	case WM_NOTIFYFORMAT: */
 
         case WM_PAINT:
-            return HEADER_Paint (wndPtr, wParam);
+            return HEADER_Paint (hwnd, wParam);
 
         case WM_RBUTTONUP:
-            return HEADER_RButtonUp (wndPtr, wParam, lParam);
+            return HEADER_RButtonUp (hwnd, wParam, lParam);
 
         case WM_SETCURSOR:
-            return HEADER_SetCursor (wndPtr, wParam, lParam);
+            return HEADER_SetCursor (hwnd, wParam, lParam);
 
         case WM_SETFONT:
-            return HEADER_SetFont (wndPtr, wParam, lParam);
+            return HEADER_SetFont (hwnd, wParam, lParam);
 
         default:
             if (msg >= WM_USER) 
diff --git a/dlls/comctl32/hotkey.c b/dlls/comctl32/hotkey.c
index b798248..d50fe25 100644
--- a/dlls/comctl32/hotkey.c
+++ b/dlls/comctl32/hotkey.c
@@ -1,7 +1,7 @@
 /*
  * Hotkey control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   Development in progress. An author is needed! Any volunteers?
@@ -19,7 +19,7 @@
 #include "debug.h"
 
 
-#define HOTKEY_GetInfoPtr(wndPtr) ((HOTKEY_INFO *)wndPtr->wExtra[0])
+#define HOTKEY_GetInfoPtr(hwnd) ((HOTKEY_INFO *)GetWindowLongA (hwnd, 0))
 
 
 /* << HOTHEY_GetHotKey >> */
@@ -32,7 +32,7 @@
 
 
 static LRESULT
-HOTKEY_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HOTKEY_INFO *infoPtr;
     TEXTMETRICA tm;
@@ -40,35 +40,25 @@
 
     /* allocate memory for info structure */
     infoPtr = (HOTKEY_INFO *)COMCTL32_Alloc (sizeof(HOTKEY_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
-	ERR (listview, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((HOTKEY_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (listview, "pointer assignment error!\n");
-	return 0;
-    }
-
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     /* initialize info structure */
 
+
     /* get default font height */
-    hdc = GetDC (wndPtr->hwndSelf);
+    hdc = GetDC (hwnd);
     GetTextMetricsA (hdc, &tm);
     infoPtr->nHeight = tm.tmHeight;
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return 0;
 }
 
 
 static LRESULT
-HOTKEY_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr);
+    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
 
 
 
@@ -80,18 +70,18 @@
 
 
 static LRESULT
-HOTKEY_EraseBackground (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
     HBRUSH hBrush;
     RECT   rc;
 
     hBrush =
-	(HBRUSH)SendMessageA (wndPtr->parent->hwndSelf, WM_CTLCOLOREDIT,
-				  wParam, (LPARAM)wndPtr->hwndSelf);
+	(HBRUSH)SendMessageA (GetParent (hwnd), WM_CTLCOLOREDIT,
+				wParam, (LPARAM)hwnd);
     if (hBrush)
 	hBrush = (HBRUSH)GetStockObject (WHITE_BRUSH);
-    GetClientRect (wndPtr->hwndSelf, &rc);
+    GetClientRect (hwnd, &rc);
 
     FillRect ((HDC)wParam, &rc, hBrush);
 
@@ -100,18 +90,18 @@
 
 
 __inline__ static LRESULT
-HOTKEY_GetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_GetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr);
+    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
 
     return infoPtr->hFont;
 }
 
 
 static LRESULT
-HOTKEY_KeyDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
 
     switch (wParam) {
 	case VK_RETURN:
@@ -120,7 +110,7 @@
 	case VK_DELETE:
 	case VK_ESCAPE:
 	case VK_BACK:
-	    return DefWindowProcA (wndPtr->hwndSelf, WM_KEYDOWN, wParam, lParam);
+	    return DefWindowProcA (hwnd, WM_KEYDOWN, wParam, lParam);
 
 	case VK_SHIFT:
 	case VK_CONTROL:
@@ -138,9 +128,9 @@
 
 
 static LRESULT
-HOTKEY_KeyUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_KeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
 
     FIXME (hotkey, " %d\n", wParam);
 
@@ -149,9 +139,9 @@
 
 
 static LRESULT
-HOTKEY_KillFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_KillFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr);
+    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
 
     infoPtr->bFocus = FALSE;
     DestroyCaret ();
@@ -161,22 +151,22 @@
 
 
 static LRESULT
-HOTKEY_LButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-/*    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+/*    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
 
-    SetFocus (wndPtr->hwndSelf);
+    SetFocus (hwnd);
 
     return 0;
 }
 
 
 __inline__ static LRESULT
-HOTKEY_NCCreate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    wndPtr->dwExStyle |= WS_EX_CLIENTEDGE;
-
-    return DefWindowProcA (wndPtr->hwndSelf, WM_NCCREATE, wParam, lParam);
+    DWORD dwExStyle = GetWindowLongA (hwnd, GWL_EXSTYLE);
+    SetWindowLongA (hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_CLIENTEDGE);
+    return DefWindowProcA (hwnd, WM_NCCREATE, wParam, lParam);
 }
 
 
@@ -184,18 +174,18 @@
 
 
 static LRESULT
-HOTKEY_SetFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_SetFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr);
+    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
 
     infoPtr->bFocus = TRUE;
 
 
-    CreateCaret (wndPtr->hwndSelf, (HBITMAP)0, 1, infoPtr->nHeight);
+    CreateCaret (hwnd, (HBITMAP)0, 1, infoPtr->nHeight);
 
     SetCaretPos (1, 1);
 
-    ShowCaret (wndPtr->hwndSelf);
+    ShowCaret (hwnd);
 
 
     return 0;
@@ -203,16 +193,16 @@
 
 
 __inline__ static LRESULT
-HOTKEY_SetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr);
+    HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd);
     TEXTMETRICA tm;
     HDC hdc;
     HFONT hOldFont = 0;
 
     infoPtr->hFont = (HFONT)wParam;
 
-    hdc = GetDC (wndPtr->hwndSelf);
+    hdc = GetDC (hwnd);
     if (infoPtr->hFont)
 	hOldFont = SelectObject (hdc, infoPtr->hFont);
 
@@ -221,7 +211,7 @@
 
     if (infoPtr->hFont)
 	SelectObject (hdc, hOldFont);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    ReleaseDC (hwnd, hdc);
 
     if (LOWORD(lParam)) {
 
@@ -234,9 +224,9 @@
 
 
 static LRESULT WINE_UNUSED
-HOTKEY_SysKeyDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_SysKeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
 
     switch (wParam) {
 	case VK_RETURN:
@@ -245,7 +235,7 @@
 	case VK_DELETE:
 	case VK_ESCAPE:
 	case VK_BACK:
-	    return DefWindowProcA (wndPtr->hwndSelf, WM_SYSKEYDOWN, wParam, lParam);
+	    return DefWindowProcA (hwnd, WM_SYSKEYDOWN, wParam, lParam);
 
 	case VK_SHIFT:
 	case VK_CONTROL:
@@ -263,9 +253,9 @@
 
 
 static LRESULT WINE_UNUSED
-HOTKEY_SysKeyUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+HOTKEY_SysKeyUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr(wndPtr); */
+    /* HOTKEY_INFO *infoPtr = HOTKEY_GetInfoPtr (hwnd); */
 
     FIXME (hotkey, " %d\n", wParam);
 
@@ -277,8 +267,6 @@
 LRESULT WINAPI
 HOTKEY_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 /*	case HKM_GETHOTKEY: */
@@ -288,44 +276,44 @@
 /*	case WM_CHAR: */
 
 	case WM_CREATE:
-	    return HOTKEY_Create (wndPtr, wParam, lParam);
+	    return HOTKEY_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return HOTKEY_Destroy (wndPtr, wParam, lParam);
+	    return HOTKEY_Destroy (hwnd, wParam, lParam);
 
 	case WM_ERASEBKGND:
-	    return HOTKEY_EraseBackground (wndPtr, wParam, lParam);
+	    return HOTKEY_EraseBackground (hwnd, wParam, lParam);
 
 	case WM_GETDLGCODE:
 	    return DLGC_WANTCHARS | DLGC_WANTARROWS;
 
 	case WM_GETFONT:
-	    return HOTKEY_GetFont (wndPtr, wParam, lParam);
+	    return HOTKEY_GetFont (hwnd, wParam, lParam);
 
 	case WM_KEYDOWN:
 	case WM_SYSKEYDOWN:
-	    return HOTKEY_KeyDown (wndPtr, wParam, lParam);
+	    return HOTKEY_KeyDown (hwnd, wParam, lParam);
 
 	case WM_KEYUP:
 	case WM_SYSKEYUP:
-	    return HOTKEY_KeyUp (wndPtr, wParam, lParam);
+	    return HOTKEY_KeyUp (hwnd, wParam, lParam);
 
 	case WM_KILLFOCUS:
-	    return HOTKEY_KillFocus (wndPtr, wParam, lParam);
+	    return HOTKEY_KillFocus (hwnd, wParam, lParam);
 
 	case WM_LBUTTONDOWN:
-	    return HOTKEY_LButtonDown (wndPtr, wParam, lParam);
+	    return HOTKEY_LButtonDown (hwnd, wParam, lParam);
 
 	case WM_NCCREATE:
-	    return HOTKEY_NCCreate (wndPtr, wParam, lParam);
+	    return HOTKEY_NCCreate (hwnd, wParam, lParam);
 
 /*	case WM_PAINT: */
 
 	case WM_SETFOCUS:
-	    return HOTKEY_SetFocus (wndPtr, wParam, lParam);
+	    return HOTKEY_SetFocus (hwnd, wParam, lParam);
 
 	case WM_SETFONT:
-	    return HOTKEY_SetFont (wndPtr, wParam, lParam);
+	    return HOTKEY_SetFont (hwnd, wParam, lParam);
 
 /*	case WM_SYSCHAR: */
 
diff --git a/dlls/comctl32/ipaddress.c b/dlls/comctl32/ipaddress.c
index 812b9fb..85a0893 100644
--- a/dlls/comctl32/ipaddress.c
+++ b/dlls/comctl32/ipaddress.c
@@ -1,6 +1,7 @@
-/* IP Address control
+/*
+ * IP Address control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  * Copyright 1998 Alex Priem <alexp@sci.kun.nl>
  *
  * NOTES
@@ -29,13 +30,13 @@
 #include "debug.h"
 
 
-#define IPADDRESS_GetInfoPtr(wndPtr) ((IPADDRESS_INFO *)wndPtr->wExtra[0])
+#define IPADDRESS_GetInfoPtr(hwnd) ((IPADDRESS_INFO *)GetWindowLongA (hwnd, 0))
 
 
 static BOOL 
-IPADDRESS_SendNotify (WND *wndPtr, UINT command);
+IPADDRESS_SendNotify (HWND hwnd, UINT command);
 static BOOL 
-IPADDRESS_SendIPAddressNotify (WND *wndPtr, UINT field, BYTE newValue);
+IPADDRESS_SendIPAddressNotify (HWND hwnd, UINT field, BYTE newValue);
 
 
 /* property name of tooltip window handle */
@@ -49,14 +50,14 @@
 
 
 static VOID
-IPADDRESS_Refresh (WND *wndPtr, HDC hdc)
+IPADDRESS_Refresh (HWND hwnd, HDC hdc)
 {
 	RECT rcClient;
 	HBRUSH hbr;
 	COLORREF clr=GetSysColor (COLOR_3DDKSHADOW);
     int i,x,fieldsize;
 
-    GetClientRect (wndPtr->hwndSelf, &rcClient);
+    GetClientRect (hwnd, &rcClient);
 	hbr =  CreateSolidBrush (RGB(255,255,255));
     DrawEdge (hdc, &rcClient, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
 	FillRect (hdc, &rcClient, hbr);
@@ -81,7 +82,7 @@
 
 
 static LRESULT
-IPADDRESS_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     IPADDRESS_INFO *infoPtr;
 	RECT rcClient, edit;
@@ -90,14 +91,9 @@
 	
 
     infoPtr = (IPADDRESS_INFO *)COMCTL32_Alloc (sizeof(IPADDRESS_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
-	if (infoPtr == NULL) {
-    	ERR (ipaddress, "could not allocate info memory!\n");
-    	return 0;
-    }
-
-    GetClientRect (wndPtr->hwndSelf, &rcClient);
+    GetClientRect (hwnd, &rcClient);
 
 	fieldsize=(rcClient.right-rcClient.left) /4;
 
@@ -105,12 +101,12 @@
 	edit.bottom=rcClient.bottom-2;
 
 	lpipsi=(LPIP_SUBCLASS_INFO)
-			GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+			GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 	if (lpipsi == NULL)  {
 		lpipsi= (LPIP_SUBCLASS_INFO) COMCTL32_Alloc (sizeof(IP_SUBCLASS_INFO));
-		lpipsi->wndPtr=wndPtr;
+		lpipsi->hwnd = hwnd;
 		lpipsi->uRefCount++;
-		SetPropA ((HWND)wndPtr->hwndSelf, IP_SUBCLASS_PROP,
+		SetPropA ((HWND)hwnd, IP_SUBCLASS_PROP,
 					(HANDLE)lpipsi);
 /*		infoPtr->lpipsi= lpipsi; */
 	} else 
@@ -124,7 +120,7 @@
 		lpipsi->hwndIP[i]= CreateWindowA ("edit", NULL, 
 				WS_CHILD | WS_VISIBLE | ES_LEFT,
 				edit.left, edit.top, edit.right-edit.left, edit.bottom-edit.top,
-				wndPtr->hwndSelf, (HMENU) 1, wndPtr->hInstance, NULL);
+				hwnd, (HMENU) 1, GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
 		lpipsi->wpOrigProc[i]= (WNDPROC)
 					SetWindowLongA (lpipsi->hwndIP[i],GWL_WNDPROC, (LONG)
 					IPADDRESS_SubclassProc);
@@ -139,12 +135,12 @@
 
 
 static LRESULT
-IPADDRESS_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
 	int i;
-    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr);
+    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd);
 	LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 
 	for (i=0; i<=3; i++) {
 		SetWindowLongA ((HWND)lpipsi->hwndIP[i], GWL_WNDPROC,
@@ -157,100 +153,99 @@
 
 
 static LRESULT
-IPADDRESS_KillFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_KillFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HDC hdc;
 
 	TRACE (ipaddress,"\n");
-    hdc = GetDC (wndPtr->hwndSelf);
-    IPADDRESS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    IPADDRESS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
-	IPADDRESS_SendIPAddressNotify (wndPtr, 0, 0);  /* FIXME: should use -1 */
-	IPADDRESS_SendNotify (wndPtr, EN_KILLFOCUS);       
-    InvalidateRect (wndPtr->hwndSelf, NULL, TRUE);
+    IPADDRESS_SendIPAddressNotify (hwnd, 0, 0);  /* FIXME: should use -1 */
+    IPADDRESS_SendNotify (hwnd, EN_KILLFOCUS);       
+    InvalidateRect (hwnd, NULL, TRUE);
 
     return 0;
 }
 
 
 static LRESULT
-IPADDRESS_Paint (WND *wndPtr, WPARAM wParam)
+IPADDRESS_Paint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    IPADDRESS_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    IPADDRESS_Refresh (hwnd, hdc);
     if(!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-IPADDRESS_SetFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_SetFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HDC hdc;
 
 	TRACE (ipaddress,"\n");
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    IPADDRESS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    IPADDRESS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return 0;
 }
 
 
 static LRESULT
-IPADDRESS_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr); */
+    /* IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd); */
 	TRACE (ipaddress,"\n");
     return 0;
 }
 
 
 static BOOL
-IPADDRESS_SendNotify (WND *wndPtr, UINT command)
+IPADDRESS_SendNotify (HWND hwnd, UINT command)
 
 {
     TRACE (ipaddress, "%x\n",command);
-    return (BOOL)SendMessageA (GetParent (wndPtr->hwndSelf), WM_COMMAND,
-              MAKEWPARAM (wndPtr->wIDmenu,command), (LPARAM) wndPtr->hwndSelf);
+    return (BOOL)SendMessageA (GetParent (hwnd), WM_COMMAND,
+              MAKEWPARAM (GetWindowLongA (hwnd, GWL_ID),command), (LPARAM)hwnd);
 }
 
 
 static BOOL
-IPADDRESS_SendIPAddressNotify (WND *wndPtr, UINT field, BYTE newValue)
-
+IPADDRESS_SendIPAddressNotify (HWND hwnd, UINT field, BYTE newValue)
 {
 	NMIPADDRESS nmip;
 
     TRACE (ipaddress, "%x %x\n",field,newValue);
-    nmip.hdr.hwndFrom = wndPtr->hwndSelf;
-    nmip.hdr.idFrom   = wndPtr->wIDmenu;
+    nmip.hdr.hwndFrom = hwnd;
+    nmip.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
     nmip.hdr.code     = IPN_FIELDCHANGED;
 
 	nmip.iField=field;
 	nmip.iValue=newValue;
 
-    return (BOOL)SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-                                   (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmip);
+    return (BOOL)SendMessageA (GetParent (hwnd), WM_NOTIFY,
+                               (WPARAM)nmip.hdr.idFrom, (LPARAM)&nmip);
 }
 
 
 
 
 static LRESULT
-IPADDRESS_ClearAddress (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_ClearAddress (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
 	int i;
 	HDC hdc;
 	char buf[1];
 	LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd,IP_SUBCLASS_PROP);
 
 	TRACE (ipaddress,"\n");
 
@@ -258,39 +253,41 @@
 	for (i=0; i<=3; i++) 
 		SetWindowTextA (lpipsi->hwndIP[i],buf);
 	
-  	hdc = GetDC (wndPtr->hwndSelf);
-    IPADDRESS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    IPADDRESS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
+	
 	return 0;
 }
 
 static LRESULT
-IPADDRESS_IsBlank (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_IsBlank (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
  int i;
  char buf[20];
  LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 
  TRACE (ipaddress,"\n");
 
  for (i=0; i<=3; i++) {
 		GetWindowTextA (lpipsi->hwndIP[i],buf,5);
-		if (buf[0]) return 0;
+	if (buf[0])
+	    return 0;
 	}
 
  return 1;
 }
 
 static LRESULT
-IPADDRESS_GetAddress (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_GetAddress (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
  char field[20];
  int i,valid,fieldvalue;
  DWORD ip_addr;
- IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr);
+ IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd);
  LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 
  TRACE (ipaddress,"\n");
 
@@ -316,11 +313,11 @@
  return valid;
 }
 
-static LRESULT
-IPADDRESS_SetRange (WND *wndPtr, WPARAM wParam, LPARAM lParam)
 
+static LRESULT
+IPADDRESS_SetRange (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr);
+    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd);
 	INT index;
 	
  	TRACE (ipaddress,"\n");
@@ -334,12 +331,12 @@
 }
 
 static LRESULT
-IPADDRESS_SetAddress (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_SetAddress (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
+    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd);
 	HDC hdc;
-    IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr);
 	LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 	int i,ip_address,value;
     char buf[20];
 
@@ -352,14 +349,14 @@
 			{
 			 sprintf (buf,"%d",value);
 			 SetWindowTextA (lpipsi->hwndIP[i],buf);
-			 IPADDRESS_SendNotify (wndPtr, EN_CHANGE);
+			 IPADDRESS_SendNotify (hwnd, EN_CHANGE);
 		}
 		ip_address/=256;
 	}
 
-	hdc = GetDC (wndPtr->hwndSelf);		/* & send notifications */
-    IPADDRESS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);		/* & send notifications */
+    IPADDRESS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
  return TRUE;
 }
@@ -368,11 +365,11 @@
 
 
 static LRESULT
-IPADDRESS_SetFocusToField (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_SetFocusToField (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr(wndPtr); */
+    /* IPADDRESS_INFO *infoPtr = IPADDRESS_GetInfoPtr (hwnd); */
 	LPIP_SUBCLASS_INFO lpipsi=(LPIP_SUBCLASS_INFO)
-            GetPropA ((HWND)wndPtr->hwndSelf,IP_SUBCLASS_PROP);
+            GetPropA ((HWND)hwnd, IP_SUBCLASS_PROP);
 	INT index;
 
 	index=(INT) wParam;
@@ -386,13 +383,13 @@
 
 
 static LRESULT
-IPADDRESS_LButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+IPADDRESS_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TRACE (ipaddress, "\n");
 
-	SetFocus (wndPtr->hwndSelf);
-	IPADDRESS_SendNotify (wndPtr, EN_SETFOCUS);
-	IPADDRESS_SetFocusToField (wndPtr, 0, 0);
+	SetFocus (hwnd);
+	IPADDRESS_SendNotify (hwnd, EN_SETFOCUS);
+	IPADDRESS_SetFocusToField (hwnd, 0, 0);
 
  	return TRUE;
 }
@@ -500,51 +497,49 @@
 LRESULT WINAPI
 IPADDRESS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 	case IPM_CLEARADDRESS:
-		return IPADDRESS_ClearAddress (wndPtr, wParam, lParam);
+		return IPADDRESS_ClearAddress (hwnd, wParam, lParam);
 
 	case IPM_SETADDRESS:
-	    return IPADDRESS_SetAddress (wndPtr, wParam, lParam);
+	    return IPADDRESS_SetAddress (hwnd, wParam, lParam);
 
 	case IPM_GETADDRESS:
-	    return IPADDRESS_GetAddress (wndPtr, wParam, lParam);
+	    return IPADDRESS_GetAddress (hwnd, wParam, lParam);
 
 	case IPM_SETRANGE:
-	    return IPADDRESS_SetRange (wndPtr, wParam, lParam);
+	    return IPADDRESS_SetRange (hwnd, wParam, lParam);
 
 	case IPM_SETFOCUS:
-	    return IPADDRESS_SetFocusToField (wndPtr, wParam, lParam);
+	    return IPADDRESS_SetFocusToField (hwnd, wParam, lParam);
 
 	case IPM_ISBLANK:
-		return IPADDRESS_IsBlank (wndPtr, wParam, lParam);
+		return IPADDRESS_IsBlank (hwnd, wParam, lParam);
 
 	case WM_CREATE:
-	    return IPADDRESS_Create (wndPtr, wParam, lParam);
+	    return IPADDRESS_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return IPADDRESS_Destroy (wndPtr, wParam, lParam);
+	    return IPADDRESS_Destroy (hwnd, wParam, lParam);
 
 	case WM_GETDLGCODE:
 	    return DLGC_WANTARROWS | DLGC_WANTCHARS;
 
 	case WM_KILLFOCUS:
-	    return IPADDRESS_KillFocus (wndPtr, wParam, lParam);
+	    return IPADDRESS_KillFocus (hwnd, wParam, lParam);
 
 	case WM_LBUTTONDOWN:
-        return IPADDRESS_LButtonDown (wndPtr, wParam, lParam);
+        return IPADDRESS_LButtonDown (hwnd, wParam, lParam);
 
 	case WM_PAINT:
-	    return IPADDRESS_Paint (wndPtr, wParam);
+	    return IPADDRESS_Paint (hwnd, wParam);
 
 	case WM_SETFOCUS:
-	    return IPADDRESS_SetFocus (wndPtr, wParam, lParam);
+	    return IPADDRESS_SetFocus (hwnd, wParam, lParam);
 
 	case WM_SIZE:
-	    return IPADDRESS_Size (wndPtr, wParam, lParam);
+	    return IPADDRESS_Size (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c
index c3a4455..2df8477 100644
--- a/dlls/comctl32/monthcal.c
+++ b/dlls/comctl32/monthcal.c
@@ -1,7 +1,7 @@
 /*
  * Month calendar control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -20,7 +20,7 @@
 #include "debug.h"
 
 
-#define MONTHCAL_GetInfoPtr(wndPtr) ((MONTHCAL_INFO *)wndPtr->wExtra[0])
+#define MONTHCAL_GetInfoPtr(hwnd) ((MONTHCAL_INFO *)GetWindowLongA (hwnd, 0))
 
 
 
@@ -28,23 +28,14 @@
 
 
 static LRESULT
-MONTHCAL_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+MONTHCAL_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     MONTHCAL_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (MONTHCAL_INFO *)COMCTL32_Alloc (sizeof(MONTHCAL_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
-    if (infoPtr == NULL) {
-	ERR (monthcal, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((MONTHCAL_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (monthcal, "pointer assignment error!\n");
-	return 0;
-    }
 
     /* initialize info structure */
 
@@ -55,9 +46,9 @@
 
 
 static LRESULT
-MONTHCAL_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+MONTHCAL_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr(wndPtr);
+    MONTHCAL_INFO *infoPtr = MONTHCAL_GetInfoPtr (hwnd);
 
 
 
@@ -76,17 +67,15 @@
 LRESULT WINAPI
 MONTHCAL_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 
 
 	case WM_CREATE:
-	    return MONTHCAL_Create (wndPtr, wParam, lParam);
+	    return MONTHCAL_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return MONTHCAL_Destroy (wndPtr, wParam, lParam);
+	    return MONTHCAL_Destroy (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/nativefont.c b/dlls/comctl32/nativefont.c
index 64d4afc..146e110 100644
--- a/dlls/comctl32/nativefont.c
+++ b/dlls/comctl32/nativefont.c
@@ -1,7 +1,7 @@
 /*
  * Native Font control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -19,29 +19,20 @@
 #include "debug.h"
 
 
-#define NATIVEFONT_GetInfoPtr(wndPtr) ((NATIVEFONT_INFO *)wndPtr->wExtra[0])
+#define NATIVEFONT_GetInfoPtr(hwnd) ((NATIVEFONT_INFO *)GetWindowLongA (hwnd, 0))
 
 
 
 
 static LRESULT
-NATIVEFONT_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+NATIVEFONT_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     NATIVEFONT_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (NATIVEFONT_INFO *)COMCTL32_Alloc (sizeof(NATIVEFONT_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
-    if (infoPtr == NULL) {
-	ERR (listview, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((NATIVEFONT_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (listview, "pointer assignment error!\n");
-	return 0;
-    }
 
     /* initialize info structure */
 
@@ -51,9 +42,9 @@
 
 
 static LRESULT
-NATIVEFONT_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+NATIVEFONT_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr(wndPtr);
+    NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr (hwnd);
 
 
 
@@ -69,16 +60,14 @@
 LRESULT WINAPI
 NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 
 	case WM_CREATE:
-	    return NATIVEFONT_Create (wndPtr, wParam, lParam);
+	    return NATIVEFONT_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return NATIVEFONT_Destroy (wndPtr, wParam, lParam);
+	    return NATIVEFONT_Destroy (hwnd, wParam, lParam);
 
 	default:
 	    ERR (nativefont, "unknown msg %04x wp=%08x lp=%08lx\n",
diff --git a/dlls/comctl32/pager.c b/dlls/comctl32/pager.c
index 1946268..4a1257b 100644
--- a/dlls/comctl32/pager.c
+++ b/dlls/comctl32/pager.c
@@ -1,7 +1,7 @@
 /*
  * Pager control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   This is just a dummy control. An author is needed! Any volunteers?
@@ -19,13 +19,13 @@
 #include "debug.h"
 
 
-#define PAGER_GetInfoPtr(wndPtr) ((PAGER_INFO *)wndPtr->wExtra[0])
+#define PAGER_GetInfoPtr(hwnd) ((PAGER_INFO *)GetWindowLongA(hwnd, 0))
 
 
 static __inline__ LRESULT
-PAGER_ForwardMouse (WND *wndPtr, WPARAM wParam)
+PAGER_ForwardMouse (HWND hwnd, WPARAM wParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     infoPtr->bForward = (BOOL)wParam;
 
@@ -34,36 +34,36 @@
 
 
 static __inline__ LRESULT
-PAGER_GetBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_GetBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->clrBk;
 }
 
 
 static __inline__ LRESULT
-PAGER_GetBorder (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_GetBorder (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->nBorder;
 }
 
 
 static __inline__ LRESULT
-PAGER_GetButtonSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_GetButtonSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->nButtonSize;
 }
 
 
 static LRESULT
-PAGER_GetButtonState (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_GetButtonState (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr); */
+    /* PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd); */
 
     FIXME (pager, "empty stub!\n");
 
@@ -75,32 +75,31 @@
 
 
 static __inline__ LRESULT
-PAGER_GetPos (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_GetPos (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     return infoPtr->nPos;
 }
 
 
 static LRESULT
-PAGER_RecalcSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_RecalcSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     NMPGCALCSIZE nmpgcs;
 
     if (infoPtr->hwndChild) {
 	ZeroMemory (&nmpgcs, sizeof (NMPGCALCSIZE));
-	nmpgcs.hdr.hwndFrom = wndPtr->hwndSelf;
-	nmpgcs.hdr.idFrom = wndPtr->wIDmenu;
+	nmpgcs.hdr.hwndFrom = hwnd;
+	nmpgcs.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
 	nmpgcs.hdr.code = PGN_CALCSIZE;
-	nmpgcs.dwFlag =
-	     (wndPtr->dwStyle & PGS_HORZ) ? PGF_CALCWIDTH : PGF_CALCHEIGHT;
-	SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-			(WPARAM)wndPtr->wIDmenu, (LPARAM)&nmpgcs);
+	nmpgcs.dwFlag = (dwStyle & PGS_HORZ) ? PGF_CALCWIDTH : PGF_CALCHEIGHT;
+	SendMessageA (GetParent (hwnd), WM_NOTIFY,
+			(WPARAM)nmpgcs.hdr.idFrom, (LPARAM)&nmpgcs);
 
-	infoPtr->nChildSize =
-	     (wndPtr->dwStyle & PGS_HORZ) ? nmpgcs.iWidth : nmpgcs.iHeight;
+	infoPtr->nChildSize = (dwStyle & PGS_HORZ) ? nmpgcs.iWidth : nmpgcs.iHeight;
 
 
         FIXME (pager, "Child size %d\n", infoPtr->nChildSize);
@@ -113,9 +112,9 @@
 
 
 static __inline__ LRESULT
-PAGER_SetBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_SetBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
     COLORREF clrTemp = infoPtr->clrBk;
 
     infoPtr->clrBk = (COLORREF)lParam;
@@ -127,9 +126,9 @@
 
 
 static __inline__ LRESULT
-PAGER_SetBorder (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_SetBorder (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
     INT nTemp = infoPtr->nBorder;
 
     infoPtr->nBorder = (INT)lParam;
@@ -141,9 +140,9 @@
 
 
 static __inline__ LRESULT
-PAGER_SetButtonSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_SetButtonSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
     INT nTemp = infoPtr->nButtonSize;
 
     infoPtr->nButtonSize = (INT)lParam;
@@ -157,9 +156,9 @@
 
 
 static __inline__ LRESULT
-PAGER_SetChild (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_SetChild (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     infoPtr->hwndChild = IsWindow ((HWND)lParam) ? (HWND)lParam : 0;
 
@@ -167,7 +166,7 @@
 
     /* FIXME: redraw */
     if (infoPtr->hwndChild) {
-	SetParent (infoPtr->hwndChild, wndPtr->hwndSelf);
+	SetParent (infoPtr->hwndChild, hwnd);
 	SetWindowPos (infoPtr->hwndChild, HWND_TOP,
 			0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE);
     }
@@ -177,9 +176,9 @@
 
 
 static __inline__ LRESULT
-PAGER_SetPos (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_SetPos (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
     infoPtr->nPos = (INT)lParam;
 
@@ -194,23 +193,13 @@
 
 
 static LRESULT
-PAGER_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     PAGER_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (PAGER_INFO *)COMCTL32_Alloc (sizeof(PAGER_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
-	ERR (pager, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((PAGER_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (pager, "pointer assignment error!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     /* set default settings */
     infoPtr->hwndChild = (HWND)NULL;
@@ -225,9 +214,9 @@
 
 
 static LRESULT
-PAGER_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
 
 
 
@@ -240,13 +229,13 @@
 
 
 static LRESULT
-PAGER_EraseBackground (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
     HBRUSH hBrush = CreateSolidBrush (infoPtr->clrBk);
     RECT rect;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
     FillRect ((HDC)wParam, &rect, hBrush);
     DeleteObject (hBrush);
 
@@ -256,9 +245,9 @@
 
 
 static LRESULT
-PAGER_MouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr); */
+    /* PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd); */
 
     TRACE (pager, "stub!\n");
 
@@ -270,12 +259,12 @@
 
 
 static LRESULT
-PAGER_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+PAGER_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PAGER_INFO *infoPtr = PAGER_GetInfoPtr(wndPtr);
+    PAGER_INFO *infoPtr = PAGER_GetInfoPtr (hwnd);
     RECT rect;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
     if (infoPtr->hwndChild) {
 	SetWindowPos (infoPtr->hwndChild, HWND_TOP, rect.left, rect.top,
 			rect.right - rect.left, rect.bottom - rect.top,
@@ -294,69 +283,67 @@
 LRESULT WINAPI
 PAGER_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 	case PGM_FORWARDMOUSE:
-	    return PAGER_ForwardMouse (wndPtr, wParam);
+	    return PAGER_ForwardMouse (hwnd, wParam);
 
 	case PGM_GETBKCOLOR:
-	    return PAGER_GetBkColor (wndPtr, wParam, lParam);
+	    return PAGER_GetBkColor (hwnd, wParam, lParam);
 
 	case PGM_GETBORDER:
-	    return PAGER_GetBorder (wndPtr, wParam, lParam);
+	    return PAGER_GetBorder (hwnd, wParam, lParam);
 
 	case PGM_GETBUTTONSIZE:
-	    return PAGER_GetButtonSize (wndPtr, wParam, lParam);
+	    return PAGER_GetButtonSize (hwnd, wParam, lParam);
 
 	case PGM_GETBUTTONSTATE:
-	    return PAGER_GetButtonState (wndPtr, wParam, lParam);
+	    return PAGER_GetButtonState (hwnd, wParam, lParam);
 
 /*	case PGM_GETDROPTARGET: */
 
 	case PGM_GETPOS:
-	    return PAGER_SetPos (wndPtr, wParam, lParam);
+	    return PAGER_SetPos (hwnd, wParam, lParam);
 
 	case PGM_RECALCSIZE:
-	    return PAGER_RecalcSize (wndPtr, wParam, lParam);
+	    return PAGER_RecalcSize (hwnd, wParam, lParam);
 
 	case PGM_SETBKCOLOR:
-	    return PAGER_SetBkColor (wndPtr, wParam, lParam);
+	    return PAGER_SetBkColor (hwnd, wParam, lParam);
 
 	case PGM_SETBORDER:
-	    return PAGER_SetBorder (wndPtr, wParam, lParam);
+	    return PAGER_SetBorder (hwnd, wParam, lParam);
 
 	case PGM_SETBUTTONSIZE:
-	    return PAGER_SetButtonSize (wndPtr, wParam, lParam);
+	    return PAGER_SetButtonSize (hwnd, wParam, lParam);
 
 	case PGM_SETCHILD:
-	    return PAGER_SetChild (wndPtr, wParam, lParam);
+	    return PAGER_SetChild (hwnd, wParam, lParam);
 
 	case PGM_SETPOS:
-	    return PAGER_SetPos (wndPtr, wParam, lParam);
+	    return PAGER_SetPos (hwnd, wParam, lParam);
 
 	case WM_CREATE:
-	    return PAGER_Create (wndPtr, wParam, lParam);
+	    return PAGER_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return PAGER_Destroy (wndPtr, wParam, lParam);
+	    return PAGER_Destroy (hwnd, wParam, lParam);
 
 	case WM_ERASEBKGND:
-	    return PAGER_EraseBackground (wndPtr, wParam, lParam);
+	    return PAGER_EraseBackground (hwnd, wParam, lParam);
 
 	case WM_MOUSEMOVE:
-	    return PAGER_MouseMove (wndPtr, wParam, lParam);
+	    return PAGER_MouseMove (hwnd, wParam, lParam);
 
 	case WM_NOTIFY:
 	case WM_COMMAND:
-	    return SendMessageA (wndPtr->parent->hwndSelf, uMsg, wParam, lParam);
+	    return SendMessageA (GetParent (hwnd), uMsg, wParam, lParam);
 
 /*	case WM_PAINT: */
-/*	    return PAGER_Paint (wndPtr, wParam); */
+/*	    return PAGER_Paint (hwnd, wParam); */
 
 	case WM_SIZE:
-	    return PAGER_Size (wndPtr, wParam, lParam);
+	    return PAGER_Size (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/rebar.c b/dlls/comctl32/rebar.c
index 9ce1941..9b4dc5c 100644
--- a/dlls/comctl32/rebar.c
+++ b/dlls/comctl32/rebar.c
@@ -1,7 +1,7 @@
 /*
  * Rebar control
  *
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  *
  * NOTES
  *   An author is needed! Any volunteers?
@@ -36,7 +36,7 @@
 #define GRIPPER_WIDTH   13
 
 
-#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)wndPtr->wExtra[0])
+#define REBAR_GetInfoPtr(wndPtr) ((REBAR_INFO *)GetWindowLongA (hwnd, 0))
 
 
 static VOID
@@ -79,9 +79,9 @@
 
 
 static VOID
-REBAR_Refresh (WND *wndPtr, HDC hdc)
+REBAR_Refresh (HWND hwnd, HDC hdc)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     REBAR_BAND *lpBand;
     UINT i;
 
@@ -89,7 +89,8 @@
 	lpBand = &infoPtr->bands[i];
 
 	if ((lpBand->fStyle & RBBS_HIDDEN) || 
-	    ((wndPtr->dwStyle & CCS_VERT) && (lpBand->fStyle & RBBS_NOVERT)))
+	    ((GetWindowLongA (hwnd, GWL_STYLE) & CCS_VERT) &&
+	     (lpBand->fStyle & RBBS_NOVERT)))
 	    continue;
 
 	REBAR_DrawBand (hdc, infoPtr, lpBand);
@@ -179,7 +180,7 @@
 
 
 static VOID
-REBAR_CalcVertBand (WND *wndPtr, REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
+REBAR_CalcVertBand (HWND hwnd, REBAR_INFO *infoPtr, REBAR_BAND *lpBand)
 {
     lpBand->fDraw = 0;
 
@@ -243,7 +244,7 @@
 	 (infoPtr->uNumBands > 1))) {
 	lpBand->fDraw |= DRAW_GRIPPER;
 
-	if (wndPtr->dwStyle & RBS_VERTICALGRIPPER) {
+	if (GetWindowLongA (hwnd, GWL_STYLE) & RBS_VERTICALGRIPPER) {
 	    /* adjust band width */
 	    lpBand->rcBand.right += GRIPPER_WIDTH;
 	    lpBand->uMinHeight += GRIPPER_WIDTH;
@@ -278,9 +279,10 @@
 
 
 static VOID
-REBAR_Layout (WND *wndPtr, LPRECT lpRect)
+REBAR_Layout (HWND hwnd, LPRECT lpRect)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     REBAR_BAND *lpBand;
     RECT rcClient;
     INT x, y, cx, cy;
@@ -289,12 +291,12 @@
     if (lpRect)
 	rcClient = *lpRect;
     else
-	GetClientRect (wndPtr->hwndSelf, &rcClient);
+	GetClientRect (hwnd, &rcClient);
 
     x = 0;
     y = 0;
 
-    if (wndPtr->dwStyle & CCS_VERT) {
+    if (dwStyle & CCS_VERT) {
 	cx = 20;    /* FIXME: fixed height */
 	cy = rcClient.bottom - rcClient.top;
     }
@@ -307,11 +309,11 @@
 	lpBand = &infoPtr->bands[i];
 
 	if ((lpBand->fStyle & RBBS_HIDDEN) || 
-	    ((wndPtr->dwStyle & CCS_VERT) && (lpBand->fStyle & RBBS_NOVERT)))
+	    ((dwStyle & CCS_VERT) && (lpBand->fStyle & RBBS_NOVERT)))
 	    continue;
 
 
-	if (wndPtr->dwStyle & CCS_VERT) {
+	if (dwStyle & CCS_VERT) {
 	    if (lpBand->fStyle & RBBS_VARIABLEHEIGHT)
 		cx = lpBand->cyMaxChild;
 	    else if (lpBand->fStyle & RBBIM_CHILDSIZE)
@@ -340,8 +342,8 @@
 	    lpBand->uMinHeight = cy;
 	}
 
-	if (wndPtr->dwStyle & CCS_VERT) {
-	    REBAR_CalcVertBand (wndPtr, infoPtr, lpBand);
+	if (dwStyle & CCS_VERT) {
+	    REBAR_CalcVertBand (hwnd, infoPtr, lpBand);
 	    x += lpBand->uMinHeight;
 	}
 	else {
@@ -350,7 +352,7 @@
 	}
     }
 
-    if (wndPtr->dwStyle & CCS_VERT) {
+    if (dwStyle & CCS_VERT) {
 	infoPtr->calcSize.cx = x;
 	infoPtr->calcSize.cy = rcClient.bottom - rcClient.top;
     }
@@ -362,9 +364,9 @@
 
 
 static VOID
-REBAR_ForceResize (WND *wndPtr)
+REBAR_ForceResize (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     RECT rc;
 
     TRACE (rebar, " to [%d x %d]!\n",
@@ -377,21 +379,22 @@
     rc.right  = infoPtr->calcSize.cx;
     rc.bottom = infoPtr->calcSize.cy;
 
-    if (wndPtr->dwStyle & WS_BORDER) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & WS_BORDER) {
 	InflateRect (&rc, sysMetrics[SM_CXEDGE], sysMetrics[SM_CYEDGE]);
     }
 
-    SetWindowPos (wndPtr->hwndSelf, 0, 0, 0,
+    SetWindowPos (hwnd, 0, 0, 0,
 		    rc.right - rc.left, rc.bottom - rc.top,
 		    SWP_NOMOVE | SWP_NOZORDER | SWP_SHOWWINDOW);
 }
 
 
 static VOID
-REBAR_MoveChildWindows (WND *wndPtr)
+REBAR_MoveChildWindows (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     REBAR_BAND *lpBand;
+    CHAR szClassName[40];
     UINT i;
 
     for (i = 0; i < infoPtr->uNumBands; i++) {
@@ -402,7 +405,8 @@
 	if (lpBand->hwndChild) {
 	    TRACE (rebar, "hwndChild = %x\n", lpBand->hwndChild);
 
-	    if (WIDGETS_IsControl (WIN_FindWndPtr(lpBand->hwndChild), BIC32_COMBO)) {
+	    GetClassNameA (lpBand->hwndChild, szClassName, 40);
+	    if (!lstrcmpA (szClassName, "ComboBox")) {
 		INT nEditHeight, yPos;
 		RECT rc;
 
@@ -422,7 +426,7 @@
 			    SWP_SHOWWINDOW);
 	    }
 #if 0
-	    else if () {
+	    else if (!lstrcmpA (szClassName, WC_COMBOBOXEXA)) {
 		/* special placement code for extended combo box */
 
 
@@ -441,14 +445,14 @@
 
 
 static void
-REBAR_InternalHitTest (WND *wndPtr, LPPOINT lpPt, UINT *pFlags, INT *pBand)
+REBAR_InternalHitTest (HWND hwnd, LPPOINT lpPt, UINT *pFlags, INT *pBand)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     REBAR_BAND *lpBand;
     RECT rect;
     INT  iCount;
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     *pFlags = RBHT_NOWHERE;
     if (PtInRect (&rect, *lpPt))
@@ -521,9 +525,9 @@
 
 
 static LRESULT
-REBAR_DeleteBand (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_DeleteBand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     UINT uBand = (UINT)wParam;
 
     if (uBand >= infoPtr->uNumBands)
@@ -556,9 +560,9 @@
 	COMCTL32_Free (oldBands);
     }
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
@@ -569,9 +573,9 @@
 
 
 static LRESULT
-REBAR_GetBandBorders (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetBandBorders (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     /* LPRECT32 lpRect = (LPRECT32)lParam; */
     REBAR_BAND *lpBand;
 
@@ -581,7 +585,7 @@
 	return 0;
 
     lpBand = &infoPtr->bands[(UINT)wParam];
-    if (wndPtr->dwStyle & RBS_BANDBORDERS) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & RBS_BANDBORDERS) {
 
     }
     else {
@@ -593,9 +597,9 @@
 
 
 __inline__ static LRESULT
-REBAR_GetBandCount (WND *wndPtr)
+REBAR_GetBandCount (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     TRACE (rebar, "band count %u!\n", infoPtr->uNumBands);
 
@@ -604,9 +608,9 @@
 
 
 static LRESULT
-REBAR_GetBandInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetBandInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOA lprbbi = (LPREBARBANDINFOA)lParam;
     REBAR_BAND *lpBand;
 
@@ -675,9 +679,9 @@
 
 
 static LRESULT
-REBAR_GetBandInfoW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetBandInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
     REBAR_BAND *lpBand;
 
@@ -746,15 +750,15 @@
 
 
 static LRESULT
-REBAR_GetBarHeight (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetBarHeight (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     INT nHeight;
 
-    REBAR_Layout (wndPtr, NULL);
+    REBAR_Layout (hwnd, NULL);
     nHeight = infoPtr->calcSize.cy;
 
-    if (wndPtr->dwStyle & WS_BORDER)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & WS_BORDER)
 	nHeight += (2 * sysMetrics[SM_CYEDGE]);
 
     FIXME (rebar, "height = %d\n", nHeight);
@@ -764,9 +768,9 @@
 
 
 static LRESULT
-REBAR_GetBarInfo (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetBarInfo (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARINFO lpInfo = (LPREBARINFO)lParam;
 
     if (lpInfo == NULL)
@@ -787,9 +791,9 @@
 
 
 __inline__ static LRESULT
-REBAR_GetBkColor (WND *wndPtr)
+REBAR_GetBkColor (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     TRACE (rebar, "background color 0x%06lx!\n", infoPtr->clrBk);
 
@@ -802,7 +806,7 @@
 
 
 static LRESULT
-REBAR_GetPalette (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetPalette (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     FIXME (rebar, "empty stub!\n");
 
@@ -811,9 +815,9 @@
 
 
 static LRESULT
-REBAR_GetRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     INT iBand = (INT)wParam;
     LPRECT lprc = (LPRECT)lParam;
     REBAR_BAND *lpBand;
@@ -839,9 +843,9 @@
 
 
 __inline__ static LRESULT
-REBAR_GetRowCount (WND *wndPtr)
+REBAR_GetRowCount (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     FIXME (rebar, "%u : semi stub!\n", infoPtr->uNumBands);
 
@@ -850,9 +854,9 @@
 
 
 static LRESULT
-REBAR_GetRowHeight (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetRowHeight (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr); */
+/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd); */
 
     FIXME (rebar, "-- height = 20: semi stub!\n");
 
@@ -861,9 +865,9 @@
 
 
 __inline__ static LRESULT
-REBAR_GetTextColor (WND *wndPtr)
+REBAR_GetTextColor (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     TRACE (rebar, "text color 0x%06lx!\n", infoPtr->clrText);
 
@@ -872,41 +876,40 @@
 
 
 __inline__ static LRESULT
-REBAR_GetToolTips (WND *wndPtr)
+REBAR_GetToolTips (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     return infoPtr->hwndToolTip;
 }
 
 
 __inline__ static LRESULT
-REBAR_GetUnicodeFormat (WND *wndPtr)
+REBAR_GetUnicodeFormat (HWND hwnd)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     return infoPtr->bUnicode;
 }
 
 
 static LRESULT
-REBAR_HitTest (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    /* REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr); */
+    /* REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd); */
     LPRBHITTESTINFO lprbht = (LPRBHITTESTINFO)lParam; 
 
     if (!lprbht)
 	return -1;
 
-    REBAR_InternalHitTest (wndPtr, &lprbht->pt,
-			   &lprbht->flags, &lprbht->iBand);
+    REBAR_InternalHitTest (hwnd, &lprbht->pt, &lprbht->flags, &lprbht->iBand);
 
     return lprbht->iBand;
 }
 
 
 static LRESULT
-REBAR_IdToIndex (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_IdToIndex (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     UINT i;
 
     if (infoPtr == NULL)
@@ -930,9 +933,9 @@
 
 
 static LRESULT
-REBAR_InsertBandA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_InsertBandA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOA lprbbi = (LPREBARBANDINFOA)lParam;
     UINT uIndex = (UINT)wParam;
     REBAR_BAND *lpBand;
@@ -1008,7 +1011,7 @@
 	TRACE (rebar, "hwndChild = %x\n", lprbbi->hwndChild);
 	lpBand->hwndChild = lprbbi->hwndChild;
 	lpBand->hwndPrevParent =
-	    SetParent (lpBand->hwndChild, wndPtr->hwndSelf);
+	    SetParent (lpBand->hwndChild, hwnd);
     }
 
     if (lprbbi->fMask & RBBIM_CHILDSIZE) {
@@ -1050,18 +1053,18 @@
     }
 
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-REBAR_InsertBandW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_InsertBandW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
     UINT uIndex = (UINT)wParam;
     REBAR_BAND *lpBand;
@@ -1137,7 +1140,7 @@
 	TRACE (rebar, "hwndChild = %x\n", lprbbi->hwndChild);
 	lpBand->hwndChild = lprbbi->hwndChild;
 	lpBand->hwndPrevParent =
-	    SetParent (lpBand->hwndChild, wndPtr->hwndSelf);
+	    SetParent (lpBand->hwndChild, hwnd);
     }
 
     if (lprbbi->fMask & RBBIM_CHILDSIZE) {
@@ -1179,18 +1182,18 @@
     }
 
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-REBAR_MaximizeBand (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_MaximizeBand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr); */
+/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd); */
 
     FIXME (rebar, "(uBand = %u fIdeal = %s)\n",
 	   (UINT)wParam, lParam ? "TRUE" : "FALSE");
@@ -1201,9 +1204,9 @@
 
 
 static LRESULT
-REBAR_MinimizeBand (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_MinimizeBand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr); */
+/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd); */
 
     FIXME (rebar, "(uBand = %u)\n", (UINT)wParam);
 
@@ -1213,9 +1216,9 @@
 
 
 static LRESULT
-REBAR_MoveBand (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_MoveBand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr); */
+/*    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd); */
 
     FIXME (rebar, "(iFrom = %u iTof = %u)\n",
 	   (UINT)wParam, (UINT)lParam);
@@ -1226,9 +1229,9 @@
 
 
 static LRESULT
-REBAR_SetBandInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetBandInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOA lprbbi = (LPREBARBANDINFOA)lParam;
     REBAR_BAND *lpBand;
 
@@ -1271,7 +1274,7 @@
 	if (lprbbi->hwndChild) {
 	    lpBand->hwndChild = lprbbi->hwndChild;
 	    lpBand->hwndPrevParent =
-		SetParent (lpBand->hwndChild, wndPtr->hwndSelf);
+		SetParent (lpBand->hwndChild, hwnd);
 	}
 	else {
 	    TRACE (rebar, "child: 0x%x  prev parent: 0x%x\n",
@@ -1310,18 +1313,18 @@
 	    lpBand->cxHeader = lprbbi->cxHeader;
     }
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-REBAR_SetBandInfoW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetBandInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARBANDINFOW lprbbi = (LPREBARBANDINFOW)lParam;
     REBAR_BAND *lpBand;
 
@@ -1364,7 +1367,7 @@
 	if (lprbbi->hwndChild) {
 	    lpBand->hwndChild = lprbbi->hwndChild;
 	    lpBand->hwndPrevParent =
-		SetParent (lpBand->hwndChild, wndPtr->hwndSelf);
+		SetParent (lpBand->hwndChild, hwnd);
 	}
 	else {
 	    TRACE (rebar, "child: 0x%x  prev parent: 0x%x\n",
@@ -1403,18 +1406,18 @@
 	    lpBand->cxHeader = lprbbi->cxHeader;
     }
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-REBAR_SetBarInfo (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetBarInfo (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPREBARINFO lpInfo = (LPREBARINFO)lParam;
 
     if (lpInfo == NULL)
@@ -1442,9 +1445,9 @@
 
 
 static LRESULT
-REBAR_SetBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     COLORREF clrTemp;
 
     clrTemp = infoPtr->clrBk;
@@ -1461,9 +1464,9 @@
 
 
 static LRESULT
-REBAR_SetParent (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetParent (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     HWND hwndTemp = infoPtr->hwndNotify;
 
     infoPtr->hwndNotify = (HWND)wParam;
@@ -1473,9 +1476,9 @@
 
 
 static LRESULT
-REBAR_SetTextColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     COLORREF clrTemp;
 
     clrTemp = infoPtr->clrText;
@@ -1491,9 +1494,9 @@
 
 
 __inline__ static LRESULT
-REBAR_SetUnicodeFormat (WND *wndPtr, WPARAM wParam)
+REBAR_SetUnicodeFormat (HWND hwnd, WPARAM wParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     BOOL bTemp = infoPtr->bUnicode;
     infoPtr->bUnicode = (BOOL)wParam;
     return bTemp;
@@ -1501,9 +1504,9 @@
 
 
 static LRESULT
-REBAR_ShowBand (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_ShowBand (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     REBAR_BAND *lpBand;
 
     if (((INT)wParam < 0) || ((INT)wParam > infoPtr->uNumBands))
@@ -1524,18 +1527,18 @@
 	    ShowWindow (lpBand->hwndChild, SW_SHOW);
     }
 
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-REBAR_SizeToRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SizeToRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     LPRECT lpRect = (LPRECT)lParam;
 
     if (lpRect == NULL)
@@ -1546,7 +1549,7 @@
 	   lpRect->left, lpRect->top, lpRect->right, lpRect->bottom);
 
 #if 0
-    SetWindowPos (wndPtr->hwndSelf, 0, lpRect->left, lpRect->top,
+    SetWindowPos (hwnd, 0, lpRect->left, lpRect->top,
 		    lpRect->right - lpRect->left, lpRect->bottom - lpRect->top,
 		    SWP_NOZORDER);
 #endif
@@ -1554,30 +1557,20 @@
     infoPtr->calcSize.cx = lpRect->right - lpRect->left;
     infoPtr->calcSize.cy = lpRect->bottom - lpRect->top;
 
-    REBAR_ForceResize (wndPtr);
+    REBAR_ForceResize (hwnd);
     return TRUE;
 }
 
 
 
 static LRESULT
-REBAR_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     REBAR_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (REBAR_INFO *)COMCTL32_Alloc (sizeof(REBAR_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
-	ERR (rebar, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((REBAR_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (rebar, "pointer assignment error!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     /* initialize info structure */
     infoPtr->clrBk = CLR_NONE;
@@ -1589,14 +1582,13 @@
     infoPtr->hcurVert  = LoadCursorA (0, IDC_SIZENSA);
     infoPtr->hcurDrag  = LoadCursorA (0, IDC_SIZEA);
 
-    infoPtr->bUnicode = IsWindowUnicode (wndPtr->hwndSelf);
+    infoPtr->bUnicode = IsWindowUnicode (hwnd);
 
-    if (wndPtr->dwStyle & RBS_AUTOSIZE)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & RBS_AUTOSIZE)
 	FIXME (rebar, "style RBS_AUTOSIZE set!\n");
 
 #if 0
-    SendMessageA (wndPtr->parent->hwndSelf, WM_NOTIFYFORMAT,
-		    (WPARAM)wndPtr->hwndSelf, NF_QUERY);
+    SendMessageA (hwnd, WM_NOTIFYFORMAT, (WPARAM)hwnd, NF_QUERY);
 #endif
 
     TRACE (rebar, "created!\n");
@@ -1605,9 +1597,9 @@
 
 
 static LRESULT
-REBAR_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     REBAR_BAND *lpBand;
     INT i;
 
@@ -1652,9 +1644,9 @@
 
 
 static LRESULT
-REBAR_GetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_GetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     return (LRESULT)infoPtr->hFont;
 }
@@ -1662,9 +1654,9 @@
 
 #if 0
 static LRESULT
-REBAR_MouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
 
     return 0;
 }
@@ -1672,9 +1664,9 @@
 
 
 __inline__ static LRESULT
-REBAR_NCCalcSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_NCCalcSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    if (wndPtr->dwStyle & WS_BORDER) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & WS_BORDER) {
 	((LPRECT)lParam)->left   += sysMetrics[SM_CXEDGE];
 	((LPRECT)lParam)->top    += sysMetrics[SM_CYEDGE];
 	((LPRECT)lParam)->right  -= sysMetrics[SM_CXEDGE];
@@ -1686,29 +1678,25 @@
 
 
 static LRESULT
-REBAR_NCPaint (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_NCPaint (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HWND hwnd = wndPtr->hwndSelf;
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    RECT rcWindow;
     HDC hdc;
 
-    if ( wndPtr->dwStyle & WS_MINIMIZE ||
-	!WIN_IsWindowDrawable( wndPtr, 0 )) return 0; /* Nothing to do */
+    if (dwStyle & WS_MINIMIZE)
+	return 0; /* Nothing to do */
 
     DefWindowProcA (hwnd, WM_NCPAINT, wParam, lParam);
 
-    if (!(hdc = GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW ))) return 0;
-
-    if (ExcludeVisRect16( hdc, wndPtr->rectClient.left-wndPtr->rectWindow.left,
-		        wndPtr->rectClient.top-wndPtr->rectWindow.top,
-		        wndPtr->rectClient.right-wndPtr->rectWindow.left,
-		        wndPtr->rectClient.bottom-wndPtr->rectWindow.top )
-	== NULLREGION){
-	ReleaseDC( hwnd, hdc );
+    if (!(hdc = GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW )))
 	return 0;
-    }
 
-    if (!(wndPtr->flags & WIN_MANAGED) && (wndPtr->dwStyle & WS_BORDER))
-	DrawEdge (hdc, &wndPtr->rectWindow, EDGE_ETCHED, BF_RECT);
+    if (dwStyle & WS_BORDER) {
+	GetWindowRect (hwnd, &rcWindow);
+	OffsetRect (&rcWindow, -rcWindow.left, -rcWindow.top);
+	DrawEdge (hdc, &rcWindow, EDGE_ETCHED, BF_RECT);
+    }
 
     ReleaseDC( hwnd, hdc );
 
@@ -1717,36 +1705,37 @@
 
 
 static LRESULT
-REBAR_Paint (WND *wndPtr, WPARAM wParam)
+REBAR_Paint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    REBAR_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    REBAR_Refresh (hwnd, hdc);
     if (!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-REBAR_SetCursor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetCursor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     POINT pt;
     UINT  flags;
 
     TRACE (rebar, "code=0x%X  id=0x%X\n", LOWORD(lParam), HIWORD(lParam));
 
     GetCursorPos (&pt);
-    ScreenToClient (wndPtr->hwndSelf, &pt);
+    ScreenToClient (hwnd, &pt);
 
-    REBAR_InternalHitTest (wndPtr, &pt, &flags, NULL);
+    REBAR_InternalHitTest (hwnd, &pt, &flags, NULL);
 
     if (flags == RBHT_GRABBER) {
-	if ((wndPtr->dwStyle & CCS_VERT) &&
-	    !(wndPtr->dwStyle & RBS_VERTICALGRIPPER))
+	if ((dwStyle & CCS_VERT) &&
+	    !(dwStyle & RBS_VERTICALGRIPPER))
 	    SetCursor (infoPtr->hcurVert);
 	else
 	    SetCursor (infoPtr->hcurHorz);
@@ -1759,9 +1748,9 @@
 
 
 static LRESULT
-REBAR_SetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
     
     /* TEXTMETRIC32A tm; */
     HFONT hFont /*, hOldFont */;
@@ -1780,10 +1769,10 @@
 */
     if (lParam) {
 /*
-        REBAR_Layout (wndPtr);
-        hdc = GetDC32 (wndPtr->hwndSelf);
-        REBAR_Refresh (wndPtr, hdc);
-        ReleaseDC32 (wndPtr->hwndSelf, hdc);
+        REBAR_Layout (hwnd);
+        hdc = GetDC32 (hwnd);
+        REBAR_Refresh (hwnd, hdc);
+        ReleaseDC32 (hwnd, hdc);
 */
     }
 
@@ -1791,9 +1780,10 @@
 }
 
 static LRESULT
-REBAR_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+REBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    REBAR_INFO *infoPtr = REBAR_GetInfoPtr(wndPtr);
+    REBAR_INFO *infoPtr = REBAR_GetInfoPtr (hwnd);
+    /* DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE); */
     RECT rcParent;
     /* INT32 x, y, cx, cy; */
 
@@ -1806,12 +1796,12 @@
     TRACE (rebar, "sizing rebar!\n");
 
     /* get parent rectangle */
-    GetClientRect (GetParent (wndPtr->hwndSelf), &rcParent);
+    GetClientRect (GetParent (hwnd), &rcParent);
 /*
-    REBAR_Layout (wndPtr, &rcParent);
+    REBAR_Layout (hwnd, &rcParent);
 
-    if (wndPtr->dwStyle & CCS_VERT) {
-	if (wndPtr->dwStyle & CCS_LEFT == CCS_LEFT) {
+    if (dwStyle & CCS_VERT) {
+	if (dwStyle & CCS_LEFT == CCS_LEFT) {
 	    x = rcParent.left;
 	    y = rcParent.top;
 	    cx = infoPtr->calcSize.cx;
@@ -1825,7 +1815,7 @@
 	}
     }
     else {
-	if (wndPtr->dwStyle & CCS_TOP) {
+	if (dwStyle & CCS_TOP) {
 	    x = rcParent.left;
 	    y = rcParent.top;
 	    cx = infoPtr->calcSize.cx;
@@ -1839,12 +1829,12 @@
 	}
     }
 
-    SetWindowPos32 (wndPtr->hwndSelf, 0, x, y, cx, cy,
+    SetWindowPos32 (hwnd, 0, x, y, cx, cy,
 		    SWP_NOZORDER | SWP_SHOWWINDOW);
 */
-    REBAR_Layout (wndPtr, NULL);
-    REBAR_ForceResize (wndPtr);
-    REBAR_MoveChildWindows (wndPtr);
+    REBAR_Layout (hwnd, NULL);
+    REBAR_ForceResize (hwnd);
+    REBAR_MoveChildWindows (hwnd);
 
     return 0;
 }
@@ -1853,155 +1843,153 @@
 LRESULT WINAPI
 REBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 /*	case RB_BEGINDRAG: */
 
 	case RB_DELETEBAND:
-	    return REBAR_DeleteBand (wndPtr, wParam, lParam);
+	    return REBAR_DeleteBand (hwnd, wParam, lParam);
 
 /*	case RB_DRAGMOVE: */
 /*	case RB_ENDDRAG: */
 
 	case RB_GETBANDBORDERS:
-	    return REBAR_GetBandBorders (wndPtr, wParam, lParam);
+	    return REBAR_GetBandBorders (hwnd, wParam, lParam);
 
 	case RB_GETBANDCOUNT:
-	    return REBAR_GetBandCount (wndPtr);
+	    return REBAR_GetBandCount (hwnd);
 
 /*	case RB_GETBANDINFO32:  */ /* outdated, just for compatibility */
 
 	case RB_GETBANDINFOA:
-	    return REBAR_GetBandInfoA (wndPtr, wParam, lParam);
+	    return REBAR_GetBandInfoA (hwnd, wParam, lParam);
 
 	case RB_GETBANDINFOW:
-	    return REBAR_GetBandInfoW (wndPtr, wParam, lParam);
+	    return REBAR_GetBandInfoW (hwnd, wParam, lParam);
 
 	case RB_GETBARHEIGHT:
-	    return REBAR_GetBarHeight (wndPtr, wParam, lParam);
+	    return REBAR_GetBarHeight (hwnd, wParam, lParam);
 
 	case RB_GETBARINFO:
-	    return REBAR_GetBarInfo (wndPtr, wParam, lParam);
+	    return REBAR_GetBarInfo (hwnd, wParam, lParam);
 
 	case RB_GETBKCOLOR:
-	    return REBAR_GetBkColor (wndPtr);
+	    return REBAR_GetBkColor (hwnd);
 
 /*	case RB_GETCOLORSCHEME: */
 /*	case RB_GETDROPTARGET: */
 
 	case RB_GETPALETTE:
-	    return REBAR_GetPalette (wndPtr, wParam, lParam);
+	    return REBAR_GetPalette (hwnd, wParam, lParam);
 
 	case RB_GETRECT:
-	    return REBAR_GetRect (wndPtr, wParam, lParam);
+	    return REBAR_GetRect (hwnd, wParam, lParam);
 
 	case RB_GETROWCOUNT:
-	    return REBAR_GetRowCount (wndPtr);
+	    return REBAR_GetRowCount (hwnd);
 
 	case RB_GETROWHEIGHT:
-	    return REBAR_GetRowHeight (wndPtr, wParam, lParam);
+	    return REBAR_GetRowHeight (hwnd, wParam, lParam);
 
 	case RB_GETTEXTCOLOR:
-	    return REBAR_GetTextColor (wndPtr);
+	    return REBAR_GetTextColor (hwnd);
 
 	case RB_GETTOOLTIPS:
-	    return REBAR_GetToolTips (wndPtr);
+	    return REBAR_GetToolTips (hwnd);
 
 	case RB_GETUNICODEFORMAT:
-	    return REBAR_GetUnicodeFormat (wndPtr);
+	    return REBAR_GetUnicodeFormat (hwnd);
 
 	case RB_HITTEST:
-	    return REBAR_HitTest (wndPtr, wParam, lParam);
+	    return REBAR_HitTest (hwnd, wParam, lParam);
 
 	case RB_IDTOINDEX:
-	    return REBAR_IdToIndex (wndPtr, wParam, lParam);
+	    return REBAR_IdToIndex (hwnd, wParam, lParam);
 
 	case RB_INSERTBANDA:
-	    return REBAR_InsertBandA (wndPtr, wParam, lParam);
+	    return REBAR_InsertBandA (hwnd, wParam, lParam);
 
 	case RB_INSERTBANDW:
-	    return REBAR_InsertBandW (wndPtr, wParam, lParam);
+	    return REBAR_InsertBandW (hwnd, wParam, lParam);
 
 	case RB_MAXIMIZEBAND:
-	    return REBAR_MaximizeBand (wndPtr, wParam, lParam);
+	    return REBAR_MaximizeBand (hwnd, wParam, lParam);
 
 	case RB_MINIMIZEBAND:
-	    return REBAR_MinimizeBand (wndPtr, wParam, lParam);
+	    return REBAR_MinimizeBand (hwnd, wParam, lParam);
 
 	case RB_MOVEBAND:
-	    return REBAR_MoveBand (wndPtr, wParam, lParam);
+	    return REBAR_MoveBand (hwnd, wParam, lParam);
 
 	case RB_SETBANDINFOA:
-	    return REBAR_SetBandInfoA (wndPtr, wParam, lParam);
+	    return REBAR_SetBandInfoA (hwnd, wParam, lParam);
 
 	case RB_SETBANDINFOW:
-	    return REBAR_SetBandInfoW (wndPtr, wParam, lParam);
+	    return REBAR_SetBandInfoW (hwnd, wParam, lParam);
 
 	case RB_SETBARINFO:
-	    return REBAR_SetBarInfo (wndPtr, wParam, lParam);
+	    return REBAR_SetBarInfo (hwnd, wParam, lParam);
 
 	case RB_SETBKCOLOR:
-	    return REBAR_SetBkColor (wndPtr, wParam, lParam);
+	    return REBAR_SetBkColor (hwnd, wParam, lParam);
 
 /*	case RB_SETCOLORSCHEME: */
 /*	case RB_SETPALETTE: */
-/*	    return REBAR_GetPalette (wndPtr, wParam, lParam); */
+/*	    return REBAR_GetPalette (hwnd, wParam, lParam); */
 
 	case RB_SETPARENT:
-	    return REBAR_SetParent (wndPtr, wParam, lParam);
+	    return REBAR_SetParent (hwnd, wParam, lParam);
 
 	case RB_SETTEXTCOLOR:
-	    return REBAR_SetTextColor (wndPtr, wParam, lParam);
+	    return REBAR_SetTextColor (hwnd, wParam, lParam);
 
 /*	case RB_SETTOOLTIPS: */
 
 	case RB_SETUNICODEFORMAT:
-	    return REBAR_SetUnicodeFormat (wndPtr, wParam);
+	    return REBAR_SetUnicodeFormat (hwnd, wParam);
 
 	case RB_SHOWBAND:
-	    return REBAR_ShowBand (wndPtr, wParam, lParam);
+	    return REBAR_ShowBand (hwnd, wParam, lParam);
 
 	case RB_SIZETORECT:
-	    return REBAR_SizeToRect (wndPtr, wParam, lParam);
+	    return REBAR_SizeToRect (hwnd, wParam, lParam);
 
 
 	case WM_COMMAND:
-	    return SendMessageA (wndPtr->parent->hwndSelf, uMsg, wParam, lParam);
+	    return SendMessageA (GetParent (hwnd), uMsg, wParam, lParam);
 
 	case WM_CREATE:
-	    return REBAR_Create (wndPtr, wParam, lParam);
+	    return REBAR_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return REBAR_Destroy (wndPtr, wParam, lParam);
+	    return REBAR_Destroy (hwnd, wParam, lParam);
 
 	case WM_GETFONT:
-	    return REBAR_GetFont (wndPtr, wParam, lParam);
+	    return REBAR_GetFont (hwnd, wParam, lParam);
 
 /*	case WM_MOUSEMOVE: */
-/*	    return REBAR_MouseMove (wndPtr, wParam, lParam); */
+/*	    return REBAR_MouseMove (hwnd, wParam, lParam); */
 
 	case WM_NCCALCSIZE:
-	    return REBAR_NCCalcSize (wndPtr, wParam, lParam);
+	    return REBAR_NCCalcSize (hwnd, wParam, lParam);
 
 	case WM_NCPAINT:
-	    return REBAR_NCPaint (wndPtr, wParam, lParam);
+	    return REBAR_NCPaint (hwnd, wParam, lParam);
 
 	case WM_NOTIFY:
-	    return SendMessageA (wndPtr->parent->hwndSelf, uMsg, wParam, lParam);
+	    return SendMessageA (GetParent (hwnd), uMsg, wParam, lParam);
 
 	case WM_PAINT:
-	    return REBAR_Paint (wndPtr, wParam);
+	    return REBAR_Paint (hwnd, wParam);
 
 	case WM_SETCURSOR:
-	    return REBAR_SetCursor (wndPtr, wParam, lParam);
+	    return REBAR_SetCursor (hwnd, wParam, lParam);
 
 	case WM_SETFONT:
-	    return REBAR_SetFont (wndPtr, wParam, lParam);
+	    return REBAR_SetFont (hwnd, wParam, lParam);
 
 	case WM_SIZE:
-	    return REBAR_Size (wndPtr, wParam, lParam);
+	    return REBAR_Size (hwnd, wParam, lParam);
 
 /*	case WM_TIMER: */
 
diff --git a/dlls/comctl32/status.c b/dlls/comctl32/status.c
index 915e371..3677d08 100644
--- a/dlls/comctl32/status.c
+++ b/dlls/comctl32/status.c
@@ -2,7 +2,7 @@
  * Interface code to StatusWindow widget/control
  *
  * Copyright 1996 Bruce Milner
- * Copyright 1998 Eric Kohl
+ * Copyright 1998, 1999 Eric Kohl
  */
 
 #include "commctrl.h"
@@ -29,7 +29,7 @@
 #define VERT_BORDER 2
 #define HORZ_GAP    2
 
-#define STATUSBAR_GetInfoPtr(wndPtr) ((STATUSWINDOWINFO *)wndPtr->wExtra[0])
+#define STATUSBAR_GetInfoPtr(hwnd) ((STATUSWINDOWINFO *)GetWindowLongA (hwnd, 0))
 
 
 static void
@@ -114,13 +114,13 @@
 
 
 static VOID
-STATUSBAR_RefreshPart (WND *wndPtr, STATUSWINDOWPART *part, HDC hdc)
+STATUSBAR_RefreshPart (HWND hwnd, STATUSWINDOWPART *part, HDC hdc)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     HBRUSH hbrBk;
     HFONT  hOldFont;
 
-    if (!IsWindowVisible(wndPtr->hwndSelf))
+    if (!IsWindowVisible (hwnd))
         return;
 
     if (self->clrBk != CLR_DEFAULT)
@@ -134,14 +134,14 @@
     if (part->style == SBT_OWNERDRAW) {
 	DRAWITEMSTRUCT dis;
 
-	dis.CtlID = wndPtr->wIDmenu;
+	dis.CtlID = GetWindowLongA (hwnd, GWL_ID);
 	dis.itemID = -1;
-	dis.hwndItem = wndPtr->hwndSelf;
+	dis.hwndItem = hwnd;
 	dis.hDC = hdc;
 	dis.rcItem = part->bound;
 	dis.itemData = (INT)part->text;
-	SendMessageA (GetParent (wndPtr->hwndSelf), WM_DRAWITEM,
-			(WPARAM)wndPtr->wIDmenu, (LPARAM)&dis);
+	SendMessageA (GetParent (hwnd), WM_DRAWITEM,
+		(WPARAM)dis.CtlID, (LPARAM)&dis);
     }
     else
 	STATUSBAR_DrawPart (hdc, part);
@@ -151,65 +151,65 @@
     if (self->clrBk != CLR_DEFAULT)
 	DeleteObject (hbrBk);
 
-    if (wndPtr->dwStyle & SBARS_SIZEGRIP) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & SBARS_SIZEGRIP) {
 	RECT rect;
 
-	GetClientRect (wndPtr->hwndSelf, &rect);
+	GetClientRect (hwnd, &rect);
 	STATUSBAR_DrawSizeGrip (hdc, &rect);
     }
 }
 
 
 static BOOL
-STATUSBAR_Refresh (WND *wndPtr, HDC hdc)
+STATUSBAR_Refresh (HWND hwnd, HDC hdc)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     int      i;
     RECT   rect;
     HBRUSH hbrBk;
     HFONT  hOldFont;
 
-    if (!IsWindowVisible(wndPtr->hwndSelf))
+    if (!IsWindowVisible(hwnd))
         return (TRUE);
 
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
-    if (self->clrBk != CLR_DEFAULT)
-	hbrBk = CreateSolidBrush (self->clrBk);
+    if (infoPtr->clrBk != CLR_DEFAULT)
+	hbrBk = CreateSolidBrush (infoPtr->clrBk);
     else
 	hbrBk = GetSysColorBrush (COLOR_3DFACE);
     FillRect(hdc, &rect, hbrBk);
 
-    hOldFont = SelectObject (hdc, self->hFont ? self->hFont : self->hDefaultFont);
+    hOldFont = SelectObject (hdc, infoPtr->hFont ? infoPtr->hFont : infoPtr->hDefaultFont);
 
-    if (self->simple) {
-	STATUSBAR_DrawPart (hdc, &self->part0);
+    if (infoPtr->simple) {
+	STATUSBAR_DrawPart (hdc, &infoPtr->part0);
     }
     else {
-	for (i = 0; i < self->numParts; i++) {
-	    if (self->parts[i].style == SBT_OWNERDRAW) {
+	for (i = 0; i < infoPtr->numParts; i++) {
+	    if (infoPtr->parts[i].style == SBT_OWNERDRAW) {
 		DRAWITEMSTRUCT dis;
 
-		dis.CtlID = wndPtr->wIDmenu;
+		dis.CtlID = GetWindowLongA (hwnd, GWL_ID);
 		dis.itemID = -1;
-		dis.hwndItem = wndPtr->hwndSelf;
+		dis.hwndItem = hwnd;
 		dis.hDC = hdc;
-		dis.rcItem = self->parts[i].bound;
-		dis.itemData = (INT)self->parts[i].text;
-		SendMessageA (GetParent (wndPtr->hwndSelf), WM_DRAWITEM,
-				(WPARAM)wndPtr->wIDmenu, (LPARAM)&dis);
+		dis.rcItem = infoPtr->parts[i].bound;
+		dis.itemData = (INT)infoPtr->parts[i].text;
+		SendMessageA (GetParent (hwnd), WM_DRAWITEM,
+			(WPARAM)dis.CtlID, (LPARAM)&dis);
 	    }
 	    else
-		STATUSBAR_DrawPart (hdc, &self->parts[i]);
+		STATUSBAR_DrawPart (hdc, &infoPtr->parts[i]);
 	}
     }
 
     SelectObject (hdc, hOldFont);
 
-    if (self->clrBk != CLR_DEFAULT)
+    if (infoPtr->clrBk != CLR_DEFAULT)
 	DeleteObject (hbrBk);
 
-    if (wndPtr->dwStyle & SBARS_SIZEGRIP)
+    if (GetWindowLongA(hwnd, GWL_STYLE) & SBARS_SIZEGRIP)
 	STATUSBAR_DrawSizeGrip (hdc, &rect);
 
     return TRUE;
@@ -217,15 +217,15 @@
 
 
 static void
-STATUSBAR_SetPartBounds (WND *wndPtr)
+STATUSBAR_SetPartBounds (HWND hwnd)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     RECT rect, *r;
     int	i;
 
     /* get our window size */
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     rect.top += VERT_BORDER;
 
@@ -251,7 +251,7 @@
 	    TTTOOLINFOA ti;
 
 	    ti.cbSize = sizeof(TTTOOLINFOA);
-	    ti.hwnd = wndPtr->hwndSelf;
+	    ti.hwnd = hwnd;
 	    ti.uId = i;
 	    ti.rect = *r;
 	    SendMessageA (self->hwndToolTip, TTM_NEWTOOLRECTA,
@@ -293,13 +293,14 @@
 
 
 static LRESULT
-STATUSBAR_GetIcon (WND *wndPtr, WPARAM wParam)
+STATUSBAR_GetIcon (HWND hwnd, WPARAM wParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     INT nPart;
 
     nPart = (INT)wParam & 0x00ff;
-    if ((nPart < -1) || (nPart >= self->numParts)) return 0;
+    if ((nPart < -1) || (nPart >= self->numParts))
+	return 0;
 
     if (nPart == -1)
         return (self->part0.hIcon);
@@ -309,29 +310,29 @@
 
 
 static LRESULT
-STATUSBAR_GetParts (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetParts (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     LPINT parts;
     INT   num_parts;
-    int	    i;
+    INT   i;
 
     num_parts = (INT) wParam;
     parts = (LPINT) lParam;
     if (parts) {
-	return (self->numParts);
+	return (infoPtr->numParts);
 	for (i = 0; i < num_parts; i++) {
-	    parts[i] = self->parts[i].x;
+	    parts[i] = infoPtr->parts[i].x;
 	}
     }
-    return (self->numParts);
+    return (infoPtr->numParts);
 }
 
 
 static LRESULT
-STATUSBAR_GetRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     int	part_num;
     LPRECT  rect;
 
@@ -346,9 +347,9 @@
 
 
 static LRESULT
-STATUSBAR_GetTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     INT   nPart;
     LRESULT result;
@@ -372,18 +373,18 @@
 
 
 static LRESULT
-STATUSBAR_GetTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     INT   nPart;
     LRESULT result;
 
     nPart = ((INT)wParam) & 0x00ff;
-    if (self->simple)
-	part = &self->part0;
+    if (infoPtr->simple)
+	part = &infoPtr->part0;
     else
-	part = &self->parts[nPart];
+	part = &infoPtr->parts[nPart];
 
     if (part->style == SBT_OWNERDRAW)
 	result = (LRESULT)part->text;
@@ -398,9 +399,9 @@
 
 
 static LRESULT
-STATUSBAR_GetTextLength (WND *wndPtr, WPARAM wParam)
+STATUSBAR_GetTextLength (HWND hwnd, WPARAM wParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     INT part_num;
     DWORD result;
@@ -423,14 +424,14 @@
 
 
 static LRESULT
-STATUSBAR_GetTipTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetTipTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     if (infoPtr->hwndToolTip) {
 	TTTOOLINFOA ti;
 	ti.cbSize = sizeof(TTTOOLINFOA);
-	ti.hwnd = wndPtr->hwndSelf;
+	ti.hwnd = hwnd;
 	ti.uId = LOWORD(wParam);
 	SendMessageA (infoPtr->hwndToolTip, TTM_GETTEXTA, 0, (LPARAM)&ti);
 
@@ -443,14 +444,14 @@
 
 
 static LRESULT
-STATUSBAR_GetTipTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_GetTipTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     if (infoPtr->hwndToolTip) {
 	TTTOOLINFOW ti;
 	ti.cbSize = sizeof(TTTOOLINFOW);
-	ti.hwnd = wndPtr->hwndSelf;
+	ti.hwnd = hwnd;
 	ti.uId = LOWORD(wParam);
 	SendMessageW (infoPtr->hwndToolTip, TTM_GETTEXTW, 0, (LPARAM)&ti);
 
@@ -463,72 +464,72 @@
 
 
 __inline__ static LRESULT
-STATUSBAR_GetUnicodeFormat (WND *wndPtr)
+STATUSBAR_GetUnicodeFormat (HWND hwnd)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     return infoPtr->bUnicode;
 }
 
 
 __inline__ static LRESULT
-STATUSBAR_IsSimple (WND *wndPtr)
+STATUSBAR_IsSimple (HWND hwnd)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     return infoPtr->simple;
 }
 
 
 static LRESULT
-STATUSBAR_SetBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     COLORREF oldBkColor;
     HDC    hdc;
 
     oldBkColor = self->clrBk;
     self->clrBk = (COLORREF)lParam;
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return oldBkColor;
 }
 
 
 static LRESULT
-STATUSBAR_SetIcon (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetIcon (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     INT nPart = (INT)wParam & 0x00ff;
     HDC hdc; 
 
     if ((nPart < -1) || (nPart >= self->numParts))
 	return FALSE;
 
-    hdc = GetDC (wndPtr->hwndSelf);
+    hdc = GetDC (hwnd);
     if (nPart == -1) {
 	self->part0.hIcon = (HICON)lParam;
 	if (self->simple)
-	    STATUSBAR_RefreshPart (wndPtr, &self->part0, hdc);
+	    STATUSBAR_RefreshPart (hwnd, &self->part0, hdc);
     }
     else {
 	self->parts[nPart].hIcon = (HICON)lParam;
 	if (!(self->simple))
-	    STATUSBAR_RefreshPart (wndPtr, &self->parts[nPart], hdc);
+	    STATUSBAR_RefreshPart (hwnd, &self->parts[nPart], hdc);
     }
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_SetMinHeight (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetMinHeight (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
 
-    if (IsWindowVisible (wndPtr->hwndSelf)) {
-	HWND parent = GetParent (wndPtr->hwndSelf);
+    if (IsWindowVisible (hwnd)) {
+	HWND parent = GetParent (hwnd);
 	INT  width, x, y;
 	RECT parent_rect;
 
@@ -537,10 +538,10 @@
 	width = parent_rect.right - parent_rect.left;
 	x = parent_rect.left;
 	y = parent_rect.bottom - self->height;
-	MoveWindow (wndPtr->hwndSelf, parent_rect.left,
+	MoveWindow (hwnd, parent_rect.left,
 		      parent_rect.bottom - self->height,
 		      width, self->height, TRUE);
-	STATUSBAR_SetPartBounds (wndPtr);
+	STATUSBAR_SetPartBounds (hwnd);
     }
 
     return TRUE;
@@ -548,9 +549,9 @@
 
 
 static LRESULT
-STATUSBAR_SetParts (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetParts (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *tmp;
     HDC	hdc;
     LPINT parts;
@@ -594,7 +595,7 @@
 
 	    ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	    ti.cbSize = sizeof(TTTOOLINFOA);
-	    ti.hwnd = wndPtr->hwndSelf;
+	    ti.hwnd = hwnd;
 	    for (i = nTipCount; i < self->numParts; i++) {
 		TRACE (statusbar, "add tool %d\n", i);
 		ti.uId = i;
@@ -614,20 +615,20 @@
 	}
     }
 
-    STATUSBAR_SetPartBounds (wndPtr);
+    STATUSBAR_SetPartBounds (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_SetTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     int	part_num;
     int	style;
@@ -659,18 +660,18 @@
 	}
     }
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_RefreshPart (wndPtr, part, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_RefreshPart (hwnd, part, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_SetTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     INT  part_num, style, len;
     LPWSTR text;
@@ -700,24 +701,24 @@
 	}
     }
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_RefreshPart (wndPtr, part, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_RefreshPart (hwnd, part, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_SetTipTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetTipTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     TRACE (statusbar, "part %d: \"%s\"\n", (INT)wParam, (LPSTR)lParam);
     if (infoPtr->hwndToolTip) {
 	TTTOOLINFOA ti;
 	ti.cbSize = sizeof(TTTOOLINFOA);
-	ti.hwnd = wndPtr->hwndSelf;
+	ti.hwnd = hwnd;
 	ti.uId = (INT)wParam;
 	ti.hinst = 0;
 	ti.lpszText = (LPSTR)lParam;
@@ -730,15 +731,15 @@
 
 
 static LRESULT
-STATUSBAR_SetTipTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_SetTipTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     TRACE (statusbar, "part %d: \"%s\"\n", (INT)wParam, (LPSTR)lParam);
     if (infoPtr->hwndToolTip) {
 	TTTOOLINFOW ti;
 	ti.cbSize = sizeof(TTTOOLINFOW);
-	ti.hwnd = wndPtr->hwndSelf;
+	ti.hwnd = hwnd;
 	ti.uId = (INT)wParam;
 	ti.hinst = 0;
 	ti.lpszText = (LPWSTR)lParam;
@@ -751,9 +752,9 @@
 
 
 __inline__ static LRESULT
-STATUSBAR_SetUnicodeFormat (WND *wndPtr, WPARAM wParam)
+STATUSBAR_SetUnicodeFormat (HWND hwnd, WPARAM wParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     BOOL bTemp = infoPtr->bUnicode;
 
     TRACE (statusbar, "(0x%x)\n", (BOOL)wParam);
@@ -764,31 +765,30 @@
 
 
 static LRESULT
-STATUSBAR_Simple (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_Simple (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     HDC  hdc;
     NMHDR  nmhdr;
 
     infoPtr->simple = (BOOL)wParam;
 
     /* send notification */
-    nmhdr.hwndFrom = wndPtr->hwndSelf;
-    nmhdr.idFrom = wndPtr->wIDmenu;
+    nmhdr.hwndFrom = hwnd;
+    nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
     nmhdr.code = SBN_SIMPLEMODECHANGE;
-    SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-		    0, (LPARAM)&nmhdr);
+    SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_WMCreate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     LPCREATESTRUCTA lpCreate = (LPCREATESTRUCTA)lParam;
     NONCLIENTMETRICSA nclm;
@@ -798,14 +798,14 @@
     STATUSWINDOWINFO *self;
 
     self = (STATUSWINDOWINFO*)COMCTL32_Alloc (sizeof(STATUSWINDOWINFO));
-    wndPtr->wExtra[0] = (DWORD)self;
+    SetWindowLongA (hwnd, 0, (DWORD)self);
 
     self->numParts = 1;
     self->parts = 0;
     self->simple = FALSE;
     self->clrBk = CLR_DEFAULT;
     self->hFont = 0;
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
 
     nclm.cbSize = sizeof(NONCLIENTMETRICSA);
     SystemParametersInfoA (SPI_GETNONCLIENTMETRICS, 0, &nclm, 0);
@@ -826,7 +826,7 @@
     self->parts[0].style = 0;
     self->parts[0].hIcon = 0;
 
-    if (IsWindowUnicode (wndPtr->hwndSelf)) {
+    if (IsWindowUnicode (hwnd)) {
 	self->bUnicode = TRUE;
 	if ((len = lstrlenW ((LPCWSTR)lpCreate->lpszName))) {
 	    self->parts[0].text = COMCTL32_Alloc ((len + 1)*sizeof(WCHAR));
@@ -851,42 +851,42 @@
 	ReleaseDC(0, hdc);
     }
 
-    if (wndPtr->dwStyle & SBT_TOOLTIPS) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & SBT_TOOLTIPS) {
 	self->hwndToolTip =
 	    CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
 			       CW_USEDEFAULT, CW_USEDEFAULT,
 			       CW_USEDEFAULT, CW_USEDEFAULT,
-			       wndPtr->hwndSelf, 0,
-			       wndPtr->hInstance, NULL);
+			     hwnd, 0,
+			     GetWindowLongA (hwnd, GWL_HINSTANCE), NULL);
 
 	if (self->hwndToolTip) {
 	    NMTOOLTIPSCREATED nmttc;
 
-	    nmttc.hdr.hwndFrom = wndPtr->hwndSelf;
-	    nmttc.hdr.idFrom = wndPtr->wIDmenu;
+	    nmttc.hdr.hwndFrom = hwnd;
+	    nmttc.hdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
 	    nmttc.hdr.code = NM_TOOLTIPSCREATED;
 	    nmttc.hwndToolTips = self->hwndToolTip;
 
-	    SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-			    (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmttc);
+	    SendMessageA (GetParent (hwnd), WM_NOTIFY,
+			    (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
 	}
     }
 
-    GetClientRect (GetParent (wndPtr->hwndSelf), &rect);
+    GetClientRect (GetParent (hwnd), &rect);
     width = rect.right - rect.left;
     self->height = self->textHeight + 4 + VERT_BORDER;
-    MoveWindow (wndPtr->hwndSelf, lpCreate->x, lpCreate->y-1,
+    MoveWindow (hwnd, lpCreate->x, lpCreate->y-1,
 		  width, self->height, FALSE);
-    STATUSBAR_SetPartBounds (wndPtr);
+    STATUSBAR_SetPartBounds (hwnd);
 
     return 0;
 }
 
 
 static LRESULT
-STATUSBAR_WMDestroy (WND *wndPtr)
+STATUSBAR_WMDestroy (HWND hwnd)
 {
-    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *self = STATUSBAR_GetInfoPtr (hwnd);
     int	i;
 
     for (i = 0; i < self->numParts; i++) {
@@ -912,17 +912,17 @@
 
 
 static __inline__ LRESULT
-STATUSBAR_WMGetFont (WND *wndPtr)
+STATUSBAR_WMGetFont (HWND hwnd)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     return infoPtr->hFont;
 }
 
 
 static LRESULT
-STATUSBAR_WMGetText (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMGetText (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     INT len;
 
     if (!(infoPtr->parts[0].text))
@@ -941,29 +941,29 @@
 
 
 __inline__ static LRESULT
-STATUSBAR_WMMouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMMouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     if (infoPtr->hwndToolTip)
-	STATUSBAR_RelayEvent (infoPtr->hwndToolTip, wndPtr->hwndSelf,
+	STATUSBAR_RelayEvent (infoPtr->hwndToolTip, hwnd,
 			      WM_MOUSEMOVE, wParam, lParam);
     return 0;
 }
 
 
 static LRESULT
-STATUSBAR_WMNCHitTest (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMNCHitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    if (wndPtr->dwStyle & SBARS_SIZEGRIP) {
+    if (GetWindowLongA (hwnd, GWL_STYLE) & SBARS_SIZEGRIP) {
 	RECT  rect;
 	POINT pt;
 
-	GetClientRect (wndPtr->hwndSelf, &rect);
+	GetClientRect (hwnd, &rect);
 
 	pt.x = (INT)LOWORD(lParam);
 	pt.y = (INT)HIWORD(lParam);
-	ScreenToClient (wndPtr->hwndSelf, &pt);
+	ScreenToClient (hwnd, &pt);
 
 	rect.left = rect.right - 13;
 	rect.top += 2;
@@ -972,53 +972,51 @@
 	    return HTBOTTOMRIGHT;
     }
 
-    return DefWindowProcA (wndPtr->hwndSelf, WM_NCHITTEST, wParam, lParam);
+    return DefWindowProcA (hwnd, WM_NCHITTEST, wParam, lParam);
 }
 
 
 static __inline__ LRESULT
-STATUSBAR_WMNCLButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMNCLButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PostMessageA (wndPtr->parent->hwndSelf, WM_NCLBUTTONDOWN,
-		    wParam, lParam);
+    PostMessageA (GetParent (hwnd), WM_NCLBUTTONDOWN, wParam, lParam);
     return 0;
 }
 
 
 static __inline__ LRESULT
-STATUSBAR_WMNCLButtonUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMNCLButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    PostMessageA (wndPtr->parent->hwndSelf, WM_NCLBUTTONUP,
-		    wParam, lParam);
+    PostMessageA (GetParent (hwnd), WM_NCLBUTTONUP, wParam, lParam);
     return 0;
 }
 
 
 static LRESULT
-STATUSBAR_WMPaint (WND *wndPtr, WPARAM wParam)
+STATUSBAR_WMPaint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    STATUSBAR_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    STATUSBAR_Refresh (hwnd, hdc);
     if (!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
 
     return 0;
 }
 
 
 static LRESULT
-STATUSBAR_WMSetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMSetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
 
     infoPtr->hFont = (HFONT)wParam;
     if (LOWORD(lParam) == TRUE) {
-	HDC hdc = GetDC (wndPtr->hwndSelf);
-        STATUSBAR_Refresh (wndPtr, hdc);
-        ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+        STATUSBAR_Refresh (hwnd, hdc);
+        ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -1026,9 +1024,9 @@
 
 
 static LRESULT
-STATUSBAR_WMSetText (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMSetText (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     STATUSWINDOWPART *part;
     int len;
     HDC hdc;
@@ -1054,18 +1052,18 @@
 	}
     }
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    STATUSBAR_RefreshPart (wndPtr, part, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    STATUSBAR_RefreshPart (hwnd, part, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-STATUSBAR_WMSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+STATUSBAR_WMSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (wndPtr);
+    STATUSWINDOWINFO *infoPtr = STATUSBAR_GetInfoPtr (hwnd);
     INT  width, x, y, flags;
     RECT parent_rect;
     HWND parent;
@@ -1079,30 +1077,29 @@
 
     if (flags == SIZE_RESTORED) {
 	/* width and height don't apply */
-	parent = GetParent (wndPtr->hwndSelf);
+	parent = GetParent (hwnd);
 	GetClientRect (parent, &parent_rect);
 	width = parent_rect.right - parent_rect.left;
 	x = parent_rect.left;
 	y = parent_rect.bottom - infoPtr->height;
-	MoveWindow (wndPtr->hwndSelf, parent_rect.left, 
+	MoveWindow (hwnd, parent_rect.left, 
 		      parent_rect.bottom - infoPtr->height,
 		      width, infoPtr->height, TRUE);
-	STATUSBAR_SetPartBounds (wndPtr);
+	STATUSBAR_SetPartBounds (hwnd);
     }
     return 0;
 }
 
 
 static LRESULT
-STATUSBAR_SendNotify (WND *wndPtr, UINT code)
+STATUSBAR_SendNotify (HWND hwnd, UINT code)
 {
     NMHDR  nmhdr;
 
-    nmhdr.hwndFrom = wndPtr->hwndSelf;
-    nmhdr.idFrom = wndPtr->wIDmenu;
+    nmhdr.hwndFrom = hwnd;
+    nmhdr.idFrom = GetWindowLongA (hwnd, GWL_ID);
     nmhdr.code = code;
-    SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-		    0, (LPARAM)&nmhdr);
+    SendMessageA (GetParent (hwnd), WM_NOTIFY, 0, (LPARAM)&nmhdr);
     return 0;
 }
 
@@ -1111,124 +1108,122 @@
 LRESULT WINAPI
 StatusWindowProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr (hwnd);
-
     switch (msg) {
 	case SB_GETBORDERS:
 	    return STATUSBAR_GetBorders (lParam);
 
 	case SB_GETICON:
-	    return STATUSBAR_GetIcon (wndPtr, wParam);
+	    return STATUSBAR_GetIcon (hwnd, wParam);
 
 	case SB_GETPARTS:
-	    return STATUSBAR_GetParts (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetParts (hwnd, wParam, lParam);
 
 	case SB_GETRECT:
-	    return STATUSBAR_GetRect (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetRect (hwnd, wParam, lParam);
 
 	case SB_GETTEXTA:
-	    return STATUSBAR_GetTextA (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetTextA (hwnd, wParam, lParam);
 
 	case SB_GETTEXTW:
-	    return STATUSBAR_GetTextW (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetTextW (hwnd, wParam, lParam);
 
 	case SB_GETTEXTLENGTHA:
 	case SB_GETTEXTLENGTHW:
-	    return STATUSBAR_GetTextLength (wndPtr, wParam);
+	    return STATUSBAR_GetTextLength (hwnd, wParam);
 
 	case SB_GETTIPTEXTA:
-	    return STATUSBAR_GetTipTextA (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetTipTextA (hwnd, wParam, lParam);
 
 	case SB_GETTIPTEXTW:
-	    return STATUSBAR_GetTipTextW (wndPtr, wParam, lParam);
+	    return STATUSBAR_GetTipTextW (hwnd, wParam, lParam);
 
 	case SB_GETUNICODEFORMAT:
-	    return STATUSBAR_GetUnicodeFormat (wndPtr);
+	    return STATUSBAR_GetUnicodeFormat (hwnd);
 
 	case SB_ISSIMPLE:
-	    return STATUSBAR_IsSimple (wndPtr);
+	    return STATUSBAR_IsSimple (hwnd);
 
 	case SB_SETBKCOLOR:
-	    return STATUSBAR_SetBkColor (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetBkColor (hwnd, wParam, lParam);
 
 	case SB_SETICON:
-	    return STATUSBAR_SetIcon (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetIcon (hwnd, wParam, lParam);
 
 	case SB_SETMINHEIGHT:
-	    return STATUSBAR_SetMinHeight (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetMinHeight (hwnd, wParam, lParam);
 
 	case SB_SETPARTS:	
-	    return STATUSBAR_SetParts (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetParts (hwnd, wParam, lParam);
 
 	case SB_SETTEXTA:
-	    return STATUSBAR_SetTextA (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetTextA (hwnd, wParam, lParam);
 
 	case SB_SETTEXTW:
-	    return STATUSBAR_SetTextW (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetTextW (hwnd, wParam, lParam);
 
 	case SB_SETTIPTEXTA:
-	    return STATUSBAR_SetTipTextA (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetTipTextA (hwnd, wParam, lParam);
 
 	case SB_SETTIPTEXTW:
-	    return STATUSBAR_SetTipTextW (wndPtr, wParam, lParam);
+	    return STATUSBAR_SetTipTextW (hwnd, wParam, lParam);
 
 	case SB_SETUNICODEFORMAT:
-	    return STATUSBAR_SetUnicodeFormat (wndPtr, wParam);
+	    return STATUSBAR_SetUnicodeFormat (hwnd, wParam);
 
 	case SB_SIMPLE:
-	    return STATUSBAR_Simple (wndPtr, wParam, lParam);
+	    return STATUSBAR_Simple (hwnd, wParam, lParam);
 
 
 	case WM_CREATE:
-	    return STATUSBAR_WMCreate (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMCreate (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return STATUSBAR_WMDestroy (wndPtr);
+	    return STATUSBAR_WMDestroy (hwnd);
 
 	case WM_GETFONT:
-            return STATUSBAR_WMGetFont (wndPtr);
+            return STATUSBAR_WMGetFont (hwnd);
 
 	case WM_GETTEXT:
-            return STATUSBAR_WMGetText (wndPtr, wParam, lParam);
+            return STATUSBAR_WMGetText (hwnd, wParam, lParam);
 
 	case WM_GETTEXTLENGTH:
-	    return STATUSBAR_GetTextLength (wndPtr, 0);
+	    return STATUSBAR_GetTextLength (hwnd, 0);
 
 	case WM_LBUTTONDBLCLK:
-            return STATUSBAR_SendNotify (wndPtr, NM_DBLCLK);
+            return STATUSBAR_SendNotify (hwnd, NM_DBLCLK);
 
 	case WM_LBUTTONUP:
-	    return STATUSBAR_SendNotify (wndPtr, NM_CLICK);
+	    return STATUSBAR_SendNotify (hwnd, NM_CLICK);
 
 	case WM_MOUSEMOVE:
-            return STATUSBAR_WMMouseMove (wndPtr, wParam, lParam);
+            return STATUSBAR_WMMouseMove (hwnd, wParam, lParam);
 
 	case WM_NCHITTEST:
-            return STATUSBAR_WMNCHitTest (wndPtr, wParam, lParam);
+            return STATUSBAR_WMNCHitTest (hwnd, wParam, lParam);
 
 	case WM_NCLBUTTONDOWN:
-	    return STATUSBAR_WMNCLButtonDown (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMNCLButtonDown (hwnd, wParam, lParam);
 
 	case WM_NCLBUTTONUP:
-	    return STATUSBAR_WMNCLButtonUp (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMNCLButtonUp (hwnd, wParam, lParam);
 
 	case WM_PAINT:
-	    return STATUSBAR_WMPaint (wndPtr, wParam);
+	    return STATUSBAR_WMPaint (hwnd, wParam);
 
 	case WM_RBUTTONDBLCLK:
-	    return STATUSBAR_SendNotify (wndPtr, NM_RDBLCLK);
+	    return STATUSBAR_SendNotify (hwnd, NM_RDBLCLK);
 
 	case WM_RBUTTONUP:
-	    return STATUSBAR_SendNotify (wndPtr, NM_RCLICK);
+	    return STATUSBAR_SendNotify (hwnd, NM_RCLICK);
 
 	case WM_SETFONT:
-	    return STATUSBAR_WMSetFont (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMSetFont (hwnd, wParam, lParam);
 
 	case WM_SETTEXT:
-	    return STATUSBAR_WMSetText (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMSetText (hwnd, wParam, lParam);
 
 	case WM_SIZE:
-	    return STATUSBAR_WMSize (wndPtr, wParam, lParam);
+	    return STATUSBAR_WMSize (hwnd, wParam, lParam);
 
 	default:
 	    if (msg >= WM_USER)
diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 82010c0..def3673 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -43,7 +43,7 @@
 
 
 
-#define TOOLBAR_GetInfoPtr(wndPtr) ((TOOLBAR_INFO *)wndPtr->wExtra[0])
+#define TOOLBAR_GetInfoPtr(wndPtr) ((TOOLBAR_INFO *)GetWindowLongA(hwnd,0))
 
 
 static void
@@ -168,17 +168,18 @@
 
 
 static void
-TOOLBAR_DrawButton (WND *wndPtr, TBUTTON_INFO *btnPtr, HDC hdc)
+TOOLBAR_DrawButton (HWND hwnd, TBUTTON_INFO *btnPtr, HDC hdc)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
-    BOOL bFlat = (wndPtr->dwStyle & TBSTYLE_FLAT);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     RECT rc;
 
-    if (btnPtr->fsState & TBSTATE_HIDDEN) return;
+    if (btnPtr->fsState & TBSTATE_HIDDEN)
+	return;
 
     rc = btnPtr->rect;
     if (btnPtr->fsStyle & TBSTYLE_SEP) {
-	if ((bFlat) && (btnPtr->idCommand == 0))
+	if ((dwStyle & TBSTYLE_FLAT) && (btnPtr->idCommand == 0))
 	    TOOLBAR_DrawFlatSeparator (&btnPtr->rect, hdc);
 	return;
     }
@@ -188,7 +189,7 @@
 	DrawEdge (hdc, &rc, EDGE_RAISED,
 		    BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST);
 
-	if (bFlat) {
+	if (dwStyle & TBSTYLE_FLAT) {
 /*	    if (infoPtr->himlDis) */
 		ImageList_Draw (infoPtr->himlDis, btnPtr->iBitmap, hdc,
 				rc.left+1, rc.top+1, ILD_NORMAL);
@@ -204,8 +205,7 @@
 
     /* pressed TBSTYLE_BUTTON */
     if (btnPtr->fsState & TBSTATE_PRESSED) {
-	DrawEdge (hdc, &rc, EDGE_SUNKEN,
-		    BF_RECT | BF_MIDDLE | BF_ADJUST);
+	DrawEdge (hdc, &rc, EDGE_SUNKEN, BF_RECT | BF_MIDDLE | BF_ADJUST);
 	ImageList_Draw (infoPtr->himlStd, btnPtr->iBitmap, hdc,
 			rc.left+2, rc.top+2, ILD_NORMAL);
 	TOOLBAR_DrawString (infoPtr, btnPtr, hdc, btnPtr->fsState);
@@ -215,7 +215,7 @@
     /* checked TBSTYLE_CHECK*/
     if ((btnPtr->fsStyle & TBSTYLE_CHECK) &&
 	(btnPtr->fsState & TBSTATE_CHECKED)) {
-	if (bFlat)
+	if (dwStyle & TBSTYLE_FLAT)
 	    DrawEdge (hdc, &rc, BDR_SUNKENOUTER,
 			BF_RECT | BF_MIDDLE | BF_ADJUST);
 	else
@@ -223,7 +223,7 @@
 			BF_RECT | BF_MIDDLE | BF_ADJUST);
 
 	TOOLBAR_DrawPattern (hdc, &rc);
-	if (bFlat)
+	if (dwStyle & TBSTYLE_FLAT)
 	    ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc,
 			    rc.left+2, rc.top+2, ILD_NORMAL);
 	else
@@ -248,7 +248,7 @@
     DrawEdge (hdc, &rc, EDGE_RAISED,
 		BF_SOFT | BF_RECT | BF_MIDDLE | BF_ADJUST);
 
-    if (bFlat)
+    if (dwStyle & TBSTYLE_FLAT)
 	ImageList_Draw (infoPtr->himlDef, btnPtr->iBitmap, hdc,
 			rc.left+1, rc.top+1, ILD_NORMAL);
     else
@@ -260,23 +260,23 @@
 
 
 static void
-TOOLBAR_Refresh (WND *wndPtr, HDC hdc)
+TOOLBAR_Refresh (HWND hwnd, HDC hdc)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     INT i;
 
     /* draw buttons */
     btnPtr = infoPtr->buttons;
     for (i = 0; i < infoPtr->nNumButtons; i++, btnPtr++)
-	TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
+	TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
 }
 
 
 static void
-TOOLBAR_CalcStrings (WND *wndPtr, LPSIZE lpSize)
+TOOLBAR_CalcStrings (HWND hwnd, LPSIZE lpSize)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     INT i;
     HDC hdc;
@@ -310,9 +310,10 @@
 
 
 static void
-TOOLBAR_CalcToolbar (WND *wndPtr)
+TOOLBAR_CalcToolbar (HWND hwnd)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     TBUTTON_INFO *btnPtr;
     INT i, nRows;
     INT x, y, cx, cy;
@@ -326,7 +327,7 @@
 #endif
 /* --- end new --- */
 
-    TOOLBAR_CalcStrings (wndPtr, &sizeString);
+    TOOLBAR_CalcStrings (hwnd, &sizeString);
 
     if (sizeString.cy > 0)
 	infoPtr->nButtonHeight = sizeString.cy + infoPtr->nBitmapHeight + 6;
@@ -345,7 +346,7 @@
     nRows = 0;
 
     /* calculate the size of each button according to it's style */
-/*     TOOLBAR_CalcButtons (wndPtr); */
+/*     TOOLBAR_CalcButtons (hwnd); */
 
     infoPtr->rcBound.top = y;
     infoPtr->rcBound.left = x;
@@ -367,7 +368,7 @@
 	    /* UNDOCUMENTED: If a separator has a non zero bitmap index, */
 	    /* it is the actual width of the separator. This is used for */
 	    /* custom controls in toolbars.                              */
-	    if ((wndPtr->dwStyle & TBSTYLE_WRAPABLE) &&
+	    if ((dwStyle & TBSTYLE_WRAPABLE) &&
 		(btnPtr->fsState & TBSTATE_WRAP)) {
 		x = 0;
 		y += cy;
@@ -411,7 +412,7 @@
 	}
 
 	bWrap = ((bWrap || (x + cx > infoPtr->nWidth)) &&
-		 (wndPtr->dwStyle & TBSTYLE_WRAPABLE));
+		 (dwStyle & TBSTYLE_WRAPABLE));
 	if (bWrap) {
 	    nRows++;
 	    y += cy;
@@ -438,7 +439,7 @@
 	    /* UNDOCUMENTED: If a separator has a non zero bitmap index, */
 	    /* it is the actual width of the separator. This is used for */
 	    /* custom controls in toolbars.                              */
-	    if ((wndPtr->dwStyle & TBSTYLE_WRAPABLE) &&
+	    if ((dwStyle & TBSTYLE_WRAPABLE) &&
 		(btnPtr->fsState & TBSTATE_WRAP)) {
 		x = 0;
 		y += cy;
@@ -474,7 +475,7 @@
 
 	    ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	    ti.cbSize = sizeof(TTTOOLINFOA);
-	    ti.hwnd = wndPtr->hwndSelf;
+	    ti.hwnd = hwnd;
 	    ti.uId = btnPtr->idCommand;
 	    ti.rect = btnPtr->rect;
 	    SendMessageA (infoPtr->hwndToolTip, TTM_NEWTOOLRECTA,
@@ -498,9 +499,9 @@
 
 
 static INT
-TOOLBAR_InternalHitTest (WND *wndPtr, LPPOINT lpPt)
+TOOLBAR_InternalHitTest (HWND hwnd, LPPOINT lpPt)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     INT i;
     
@@ -611,9 +612,9 @@
 
 
 static LRESULT
-TOOLBAR_AddBitmap (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_AddBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBADDBITMAP lpAddBmp = (LPTBADDBITMAP)lParam;
     INT nIndex = 0;
 
@@ -673,9 +674,9 @@
 
 
 static LRESULT
-TOOLBAR_AddButtonsA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_AddButtonsA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBBUTTON lpTbb = (LPTBBUTTON)lParam;
     INT nOldButtons, nNewButtons, nAddButtons, nCount;
     HDC hdc;
@@ -716,7 +717,7 @@
 
 	    ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	    ti.cbSize   = sizeof (TTTOOLINFOA);
-	    ti.hwnd     = wndPtr->hwndSelf;
+	    ti.hwnd     = hwnd;
 	    ti.uId      = btnPtr->idCommand;
 	    ti.hinst    = 0;
 	    ti.lpszText = LPSTR_TEXTCALLBACKA;
@@ -726,11 +727,11 @@
 	}
     }
 
-    TOOLBAR_CalcToolbar (wndPtr);
+    TOOLBAR_CalcToolbar (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -740,9 +741,9 @@
 
 
 static LRESULT
-TOOLBAR_AddStringA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_AddStringA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     if ((wParam) && (HIWORD(lParam) == 0)) {
@@ -812,9 +813,9 @@
 
 
 static LRESULT
-TOOLBAR_AddStringW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_AddStringW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     if ((wParam) && (HIWORD(lParam) == 0)) {
@@ -884,9 +885,10 @@
 
 
 static LRESULT
-TOOLBAR_AutoSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_AutoSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     RECT parent_rect;
     HWND parent;
     /* INT32  x, y; */
@@ -895,29 +897,29 @@
 
     TRACE (toolbar, "resize forced!\n");
 
-    parent = GetParent (wndPtr->hwndSelf);
+    parent = GetParent (hwnd);
     GetClientRect(parent, &parent_rect);
 
-    if (wndPtr->dwStyle & CCS_NORESIZE) {
+    if (dwStyle & CCS_NORESIZE) {
 	uPosFlags |= (SWP_NOSIZE | SWP_NOMOVE);
 	cx = 0;
 	cy = 0;
     }
     else {
 	infoPtr->nWidth = parent_rect.right - parent_rect.left;
-	TOOLBAR_CalcToolbar (wndPtr);
+	TOOLBAR_CalcToolbar (hwnd);
 	cy = infoPtr->nHeight;
 	cx = infoPtr->nWidth;
     }
 
-    if (wndPtr->dwStyle & CCS_NOPARENTALIGN)
+    if (dwStyle & CCS_NOPARENTALIGN)
 	uPosFlags |= SWP_NOMOVE;
 
-    if (!(wndPtr->dwStyle & CCS_NODIVIDER))
+    if (!(dwStyle & CCS_NODIVIDER))
 	cy += sysMetrics[SM_CYEDGE];
 
     infoPtr->bAutoSize = TRUE;
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, parent_rect.left, parent_rect.top,
+    SetWindowPos (hwnd, HWND_TOP, parent_rect.left, parent_rect.top,
 		    cx, cy, uPosFlags);
 
     return 0;
@@ -925,21 +927,21 @@
 
 
 static LRESULT
-TOOLBAR_ButtonCount (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_ButtonCount (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nNumButtons;
 }
 
 
 static LRESULT
-TOOLBAR_ButtonStructSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_ButtonStructSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if (infoPtr == NULL) {
-	ERR (toolbar, "(0x%08lx, 0x%08x, 0x%08lx)\n", (DWORD)wndPtr, wParam, lParam);
+	ERR (toolbar, "(0x%x, 0x%x, 0x%lx)\n", hwnd, wParam, lParam);
 	ERR (toolbar, "infoPtr == NULL!\n");
 	return 0;
     }
@@ -951,9 +953,9 @@
 
 
 static LRESULT
-TOOLBAR_ChangeBitmap (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_ChangeBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -965,18 +967,18 @@
     btnPtr = &infoPtr->buttons[nIndex];
     btnPtr->iBitmap = LOWORD(lParam);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-TOOLBAR_CheckButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_CheckButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -1005,11 +1007,11 @@
 	btnPtr->fsState |= TBSTATE_CHECKED;
     }
 
-    hdc = GetDC (wndPtr->hwndSelf);
+    hdc = GetDC (hwnd);
     if (nOldIndex != -1)
-	TOOLBAR_DrawButton (wndPtr, &infoPtr->buttons[nOldIndex], hdc);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+	TOOLBAR_DrawButton (hwnd, &infoPtr->buttons[nOldIndex], hdc);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     /* FIXME: Send a WM_NOTIFY?? */
 
@@ -1018,16 +1020,16 @@
 
 
 static LRESULT
-TOOLBAR_CommandToIndex (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_CommandToIndex (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     return TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
 }
 
 
 static LRESULT
-TOOLBAR_Customize (WND *wndPtr)
+TOOLBAR_Customize (HWND hwnd)
 {
     FIXME (toolbar, "customization not implemented!\n");
 
@@ -1036,9 +1038,9 @@
 
 
 static LRESULT
-TOOLBAR_DeleteButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_DeleteButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex = (INT)wParam;
 
     if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
@@ -1050,7 +1052,7 @@
 
 	ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	ti.cbSize   = sizeof (TTTOOLINFOA);
-	ti.hwnd     = wndPtr->hwndSelf;
+	ti.hwnd     = hwnd;
 	ti.uId      = infoPtr->buttons[nIndex].idCommand;
 
 	SendMessageA (infoPtr->hwndToolTip, TTM_DELTOOLA, 0, (LPARAM)&ti);
@@ -1081,19 +1083,19 @@
 	COMCTL32_Free (oldButtons);
     }
 
-    TOOLBAR_CalcToolbar (wndPtr);
+    TOOLBAR_CalcToolbar (hwnd);
 
-    InvalidateRect (wndPtr->hwndSelf, NULL, TRUE);
-    UpdateWindow (wndPtr->hwndSelf);
+    InvalidateRect (hwnd, NULL, TRUE);
+    UpdateWindow (hwnd);
 
     return TRUE;
 }
 
 
 static LRESULT
-TOOLBAR_EnableButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_EnableButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -1108,9 +1110,9 @@
     else
 	btnPtr->fsState |= TBSTATE_ENABLED;
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1120,9 +1122,9 @@
 
 
 static LRESULT
-TOOLBAR_GetBitmap (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetBitmap (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1134,22 +1136,25 @@
 
 
 static __inline__ LRESULT
-TOOLBAR_GetBitmapFlags (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetBitmapFlags (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     return (GetDeviceCaps (0, LOGPIXELSX) >= 120) ? TBBF_LARGE : 0;
 }
 
 
 static LRESULT
-TOOLBAR_GetButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBBUTTON lpTbb = (LPTBBUTTON)lParam;
     INT nIndex = (INT)wParam;
     TBUTTON_INFO *btnPtr;
 
-    if (infoPtr == NULL) return FALSE;
-    if (lpTbb == NULL) return FALSE;
+    if (infoPtr == NULL)
+	return FALSE;
+
+    if (lpTbb == NULL)
+	return FALSE;
 
     if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
 	return FALSE;
@@ -1167,16 +1172,19 @@
 
 
 static LRESULT
-TOOLBAR_GetButtonInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBBUTTONINFOA lpTbInfo = (LPTBBUTTONINFOA)lParam;
     TBUTTON_INFO *btnPtr;
     INT nIndex;
 
-    if (infoPtr == NULL) return -1;
-    if (lpTbInfo == NULL) return -1;
-    if (lpTbInfo->cbSize < sizeof(LPTBBUTTONINFOA)) return -1;
+    if (infoPtr == NULL)
+	return -1;
+    if (lpTbInfo == NULL)
+	return -1;
+    if (lpTbInfo->cbSize < sizeof(LPTBBUTTONINFOA))
+	return -1;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
     if (nIndex == -1)
@@ -1211,9 +1219,9 @@
 
 
 static LRESULT
-TOOLBAR_GetButtonSize (WND *wndPtr)
+TOOLBAR_GetButtonSize (HWND hwnd)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     return MAKELONG((WORD)infoPtr->nButtonWidth,
 		    (WORD)infoPtr->nButtonHeight);
@@ -1221,9 +1229,9 @@
 
 
 static LRESULT
-TOOLBAR_GetButtonTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetButtonTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex, nStringIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1250,11 +1258,11 @@
 
 
 static LRESULT
-TOOLBAR_GetDisabledImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetDisabledImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBSTYLE_FLAT)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT)
 	return (LRESULT)infoPtr->himlDis;
     else
 	return 0;
@@ -1262,20 +1270,20 @@
 
 
 __inline__ static LRESULT
-TOOLBAR_GetExtendedStyle (WND *wndPtr)
+TOOLBAR_GetExtendedStyle (HWND hwnd)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     return infoPtr->dwExStyle;
 }
 
 
 static LRESULT
-TOOLBAR_GetHotImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetHotImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBSTYLE_FLAT)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT)
 	return (LRESULT)infoPtr->himlHot;
     else
 	return 0;
@@ -1286,11 +1294,11 @@
 
 
 static LRESULT
-TOOLBAR_GetImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBSTYLE_FLAT)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT)
 	return (LRESULT)infoPtr->himlDef;
     else
 	return 0;
@@ -1302,21 +1310,24 @@
 
 
 static LRESULT
-TOOLBAR_GetItemRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetItemRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     LPRECT     lpRect;
     INT        nIndex;
 
-    if (infoPtr == NULL) return FALSE;
+    if (infoPtr == NULL)
+	return FALSE;
     nIndex = (INT)wParam;
     btnPtr = &infoPtr->buttons[nIndex];
     if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
 	return FALSE;
     lpRect = (LPRECT)lParam;
-    if (lpRect == NULL) return FALSE;
-    if (btnPtr->fsState & TBSTATE_HIDDEN) return FALSE;
+    if (lpRect == NULL)
+	return FALSE;
+    if (btnPtr->fsState & TBSTATE_HIDDEN)
+	return FALSE;
     
     lpRect->left   = btnPtr->rect.left;
     lpRect->right  = btnPtr->rect.right;
@@ -1328,9 +1339,9 @@
 
 
 static LRESULT
-TOOLBAR_GetMaxSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetMaxSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPSIZE lpSize = (LPSIZE)lParam;
 
     if (lpSize == NULL)
@@ -1352,20 +1363,22 @@
 
 
 static LRESULT
-TOOLBAR_GetRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     LPRECT     lpRect;
     INT        nIndex;
 
-    if (infoPtr == NULL) return FALSE;
+    if (infoPtr == NULL)
+	return FALSE;
     nIndex = (INT)wParam;
     btnPtr = &infoPtr->buttons[nIndex];
     if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
 	return FALSE;
     lpRect = (LPRECT)lParam;
-    if (lpRect == NULL) return FALSE;
+    if (lpRect == NULL)
+	return FALSE;
     
     lpRect->left   = btnPtr->rect.left;
     lpRect->right  = btnPtr->rect.right;
@@ -1377,11 +1390,11 @@
 
 
 static LRESULT
-TOOLBAR_GetRows (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBSTYLE_WRAPABLE)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_WRAPABLE)
 	return infoPtr->nRows;
     else
 	return 1;
@@ -1389,35 +1402,37 @@
 
 
 static LRESULT
-TOOLBAR_GetState (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetState (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
-    if (nIndex == -1) return -1;
+    if (nIndex == -1)
+	return -1;
 
     return infoPtr->buttons[nIndex].fsState;
 }
 
 
 static LRESULT
-TOOLBAR_GetStyle (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
-    if (nIndex == -1) return -1;
+    if (nIndex == -1)
+	return -1;
 
     return infoPtr->buttons[nIndex].fsStyle;
 }
 
 
 static LRESULT
-TOOLBAR_GetTextRows (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if (infoPtr == NULL)
 	return 0;
@@ -1427,31 +1442,32 @@
 
 
 static LRESULT
-TOOLBAR_GetToolTips (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (infoPtr == NULL) return 0;
+    if (infoPtr == NULL)
+	return 0;
     return infoPtr->hwndToolTip;
 }
 
 
 static LRESULT
-TOOLBAR_GetUnicodeFormat (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_GetUnicodeFormat (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    TRACE (toolbar, "%s hwnd=0x%04x stub!\n", 
-	   infoPtr->bUnicode ? "TRUE" : "FALSE", wndPtr->hwndSelf);
+    TRACE (toolbar, "%s hwnd=0x%x stub!\n", 
+	   infoPtr->bUnicode ? "TRUE" : "FALSE", hwnd);
 
     return infoPtr->bUnicode;
 }
 
 
 static LRESULT
-TOOLBAR_HideButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_HideButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     INT nIndex;
 
@@ -1465,26 +1481,26 @@
     else
 	btnPtr->fsState |= TBSTATE_HIDDEN;
 
-    TOOLBAR_CalcToolbar (wndPtr);
+    TOOLBAR_CalcToolbar (hwnd);
 
-    InvalidateRect (wndPtr->hwndSelf, NULL, TRUE);
-    UpdateWindow (wndPtr->hwndSelf);
+    InvalidateRect (hwnd, NULL, TRUE);
+    UpdateWindow (hwnd);
 
     return TRUE;
 }
 
 
 __inline__ static LRESULT
-TOOLBAR_HitTest (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_HitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    return TOOLBAR_InternalHitTest (wndPtr, (LPPOINT)lParam);
+    return TOOLBAR_InternalHitTest (hwnd, (LPPOINT)lParam);
 }
 
 
 static LRESULT
-TOOLBAR_Indeterminate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_Indeterminate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -1499,25 +1515,27 @@
     else
 	btnPtr->fsState |= TBSTATE_INDETERMINATE;
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-TOOLBAR_InsertButtonA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_InsertButtonA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBBUTTON lpTbb = (LPTBBUTTON)lParam;
     INT nIndex = (INT)wParam;
     TBUTTON_INFO *oldButtons;
     HDC hdc;
 
-    if (lpTbb == NULL) return FALSE;
-    if (nIndex < 0) return FALSE;
+    if (lpTbb == NULL)
+	return FALSE;
+    if (nIndex < 0)
+	return FALSE;
 
     TRACE (toolbar, "inserting button index=%d\n", nIndex);
     if (nIndex > infoPtr->nNumButtons) {
@@ -1547,7 +1565,7 @@
 
 	ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	ti.cbSize   = sizeof (TTTOOLINFOA);
-	ti.hwnd     = wndPtr->hwndSelf;
+	ti.hwnd     = hwnd;
 	ti.uId      = lpTbb->idCommand;
 	ti.hinst    = 0;
 	ti.lpszText = LPSTR_TEXTCALLBACKA;
@@ -1564,11 +1582,11 @@
 
     COMCTL32_Free (oldButtons);
 
-    TOOLBAR_CalcToolbar (wndPtr);
+    TOOLBAR_CalcToolbar (hwnd);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1579,9 +1597,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonChecked (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonChecked (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1593,9 +1611,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonEnabled (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonEnabled (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1607,9 +1625,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonHidden (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonHidden (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1621,9 +1639,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonHighlighted (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonHighlighted (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1635,9 +1653,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonIndeterminate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonIndeterminate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1649,9 +1667,9 @@
 
 
 static LRESULT
-TOOLBAR_IsButtonPressed (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_IsButtonPressed (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex;
 
     nIndex = TOOLBAR_GetButtonIndex (infoPtr, (INT)wParam);
@@ -1669,9 +1687,9 @@
 
 
 static LRESULT
-TOOLBAR_PressButton (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_PressButton (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -1686,9 +1704,9 @@
     else
 	btnPtr->fsState |= TBSTATE_PRESSED;
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1698,10 +1716,10 @@
 
 
 static LRESULT
-TOOLBAR_SaveRestoreA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SaveRestoreA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
 #if 0
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBSAVEPARAMSA lpSave = (LPTBSAVEPARAMSA)lParam;
 
     if (lpSave == NULL) return 0;
@@ -1732,9 +1750,9 @@
 
 
 static LRESULT
-TOOLBAR_SetBitmapSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetBitmapSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if ((LOWORD(lParam) <= 0) || (HIWORD(lParam)<=0))
 	return FALSE;
@@ -1747,9 +1765,9 @@
 
 
 static LRESULT
-TOOLBAR_SetButtonInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetButtonInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPTBBUTTONINFOA lptbbi = (LPTBBUTTONINFOA)lParam;
     TBUTTON_INFO *btnPtr;
     INT nIndex;
@@ -1799,9 +1817,9 @@
 
 
 static LRESULT
-TOOLBAR_SetButtonSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetButtonSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if ((LOWORD(lParam) <= 0) || (HIWORD(lParam)<=0))
 	return FALSE;
@@ -1814,9 +1832,9 @@
 
 
 static LRESULT
-TOOLBAR_SetButtonWidth (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetButtonWidth (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if (infoPtr == NULL)
 	return FALSE;
@@ -1829,9 +1847,9 @@
 
 
 static LRESULT
-TOOLBAR_SetCmdId (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetCmdId (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     INT nIndex = (INT)wParam;
 
     if ((nIndex < 0) || (nIndex >= infoPtr->nNumButtons))
@@ -1853,12 +1871,12 @@
 
 
 static LRESULT
-TOOLBAR_SetDisabledImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetDisabledImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     HIMAGELIST himlTemp;
 
-    if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
+    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT))
 	return 0;
 
     himlTemp = infoPtr->himlDis;
@@ -1871,9 +1889,9 @@
 
 
 static LRESULT
-TOOLBAR_SetDrawTextFlags (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetDrawTextFlags (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     DWORD dwTemp;
 
     dwTemp = infoPtr->dwDTFlags;
@@ -1885,9 +1903,9 @@
 
 
 static LRESULT
-TOOLBAR_SetExtendedStyle (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetExtendedStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     DWORD dwTemp;
 
     dwTemp = infoPtr->dwExStyle;
@@ -1898,12 +1916,12 @@
 
 
 static LRESULT
-TOOLBAR_SetHotImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetHotImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(hwnd);
     HIMAGELIST himlTemp;
 
-    if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
+    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT))
 	return 0;
 
     himlTemp = infoPtr->himlHot;
@@ -1919,12 +1937,12 @@
 
 
 static LRESULT
-TOOLBAR_SetImageList (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetImageList (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     HIMAGELIST himlTemp;
 
-    if (!(wndPtr->dwStyle & TBSTYLE_FLAT))
+    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TBSTYLE_FLAT))
 	return 0;
 
     himlTemp = infoPtr->himlDef;
@@ -1937,16 +1955,18 @@
 
 
 static LRESULT
-TOOLBAR_SetIndent (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetIndent (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     HDC hdc;
 
     infoPtr->nIndent = (INT)wParam;
-    TOOLBAR_CalcToolbar (wndPtr);
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+
+    TOOLBAR_CalcToolbar (hwnd);
+
+    hdc = GetDC (hwnd);
+    TOOLBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1956,9 +1976,9 @@
 
 
 static LRESULT
-TOOLBAR_SetInsertMarkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetInsertMarkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     infoPtr->clrInsertMark = (COLORREF)lParam;
 
@@ -1969,9 +1989,9 @@
 
 
 static LRESULT
-TOOLBAR_SetMaxTextRows (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetMaxTextRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if (infoPtr == NULL)
 	return FALSE;
@@ -1986,12 +2006,13 @@
 
 
 static LRESULT
-TOOLBAR_SetParent (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetParent (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     HWND hwndOldNotify;
 
-    if (infoPtr == NULL) return 0;
+    if (infoPtr == NULL)
+	return 0;
     hwndOldNotify = infoPtr->hwndNotify;
     infoPtr->hwndNotify = (HWND)wParam;
 
@@ -2000,9 +2021,9 @@
 
 
 static LRESULT
-TOOLBAR_SetRows (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetRows (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPRECT lprc = (LPRECT)lParam;
     HDC hdc;
 
@@ -2013,7 +2034,7 @@
     }
 
     /* recalculate toolbar */
-    TOOLBAR_CalcToolbar (wndPtr);
+    TOOLBAR_CalcToolbar (hwnd);
 
     /* return bounding rectangle */
     if (lprc) {
@@ -2024,18 +2045,18 @@
     }
 
     /* repaint toolbar */
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLBAR_SetState (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetState (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -2047,18 +2068,18 @@
     btnPtr = &infoPtr->buttons[nIndex];
     btnPtr->fsState = LOWORD(lParam);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
 
 
 static LRESULT
-TOOLBAR_SetStyle (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetStyle (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     HDC hdc;
     INT nIndex;
@@ -2070,9 +2091,9 @@
     btnPtr = &infoPtr->buttons[nIndex];
     btnPtr->fsStyle = LOWORD(lParam);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+    ReleaseDC (hwnd, hdc);
 
     if (infoPtr->hwndToolTip) {
 
@@ -2085,24 +2106,25 @@
 
 
 __inline__ static LRESULT
-TOOLBAR_SetToolTips (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
-    if (infoPtr == NULL) return 0;
+    if (infoPtr == NULL)
+	return 0;
     infoPtr->hwndToolTip = (HWND)wParam;
     return 0;
 }
 
 
 static LRESULT
-TOOLBAR_SetUnicodeFormat (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_SetUnicodeFormat (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     BOOL bTemp;
 
     TRACE (toolbar, "%s hwnd=0x%04x stub!\n", 
-	   ((BOOL)wParam) ? "TRUE" : "FALSE", wndPtr->hwndSelf);
+	   ((BOOL)wParam) ? "TRUE" : "FALSE", hwnd);
 
     bTemp = infoPtr->bUnicode;
     infoPtr->bUnicode = (BOOL)wParam;
@@ -2112,9 +2134,10 @@
 
 
 static LRESULT
-TOOLBAR_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     LOGFONTA logFont;
 
     /* initialize info structure */
@@ -2130,37 +2153,37 @@
     infoPtr->cxMax = -1;
 
     infoPtr->bCaptured = FALSE;
-    infoPtr->bUnicode = IsWindowUnicode (wndPtr->hwndSelf);
+    infoPtr->bUnicode = IsWindowUnicode (hwnd);
     infoPtr->nButtonDown = -1;
     infoPtr->nOldHit = -1;
 
-    infoPtr->hwndNotify = GetParent (wndPtr->hwndSelf);
-    infoPtr->bTransparent = (wndPtr->dwStyle & TBSTYLE_FLAT);
+    infoPtr->hwndNotify = GetParent (hwnd);
+    infoPtr->bTransparent = (dwStyle & TBSTYLE_FLAT);
     infoPtr->nHotItem = -1;
     infoPtr->dwDTFlags = DT_CENTER;
 
     SystemParametersInfoA (SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
     infoPtr->hFont = CreateFontIndirectA (&logFont);
 
-    if (wndPtr->dwStyle & TBSTYLE_TOOLTIPS) {
+    if (dwStyle & TBSTYLE_TOOLTIPS) {
 	/* Create tooltip control */
 	infoPtr->hwndToolTip =
 	    CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
 			       CW_USEDEFAULT, CW_USEDEFAULT,
 			       CW_USEDEFAULT, CW_USEDEFAULT,
-			       wndPtr->hwndSelf, 0, 0, 0);
+			       hwnd, 0, 0, 0);
 
 	/* Send NM_TOOLTIPSCREATED notification */
 	if (infoPtr->hwndToolTip) {
 	    NMTOOLTIPSCREATED nmttc;
 
-	    nmttc.hdr.hwndFrom = wndPtr->hwndSelf;
-	    nmttc.hdr.idFrom = wndPtr->wIDmenu;
+	    nmttc.hdr.hwndFrom = hwnd;
+	    nmttc.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
 	    nmttc.hdr.code = NM_TOOLTIPSCREATED;
 	    nmttc.hwndToolTips = infoPtr->hwndToolTip;
 
 	    SendMessageA (infoPtr->hwndNotify, WM_NOTIFY,
-			    (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmttc);
+			  (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
 	}
     }
 
@@ -2169,9 +2192,9 @@
 
 
 static LRESULT
-TOOLBAR_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     /* delete tooltip control */
     if (infoPtr->hwndToolTip)
@@ -2215,22 +2238,21 @@
 
 
 static LRESULT
-TOOLBAR_EraseBackground (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
 
     if (infoPtr->bTransparent)
-	return SendMessageA (GetParent (wndPtr->hwndSelf), WM_ERASEBKGND,
-			       wParam, lParam);
+	return SendMessageA (GetParent (hwnd), WM_ERASEBKGND, wParam, lParam);
 
-    return DefWindowProcA (wndPtr->hwndSelf, WM_ERASEBKGND, wParam, lParam);
+    return DefWindowProcA (hwnd, WM_ERASEBKGND, wParam, lParam);
 }
 
 
 static LRESULT
-TOOLBAR_LButtonDblClk (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_LButtonDblClk (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     POINT pt;
     INT   nHit;
@@ -2238,61 +2260,61 @@
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    nHit = TOOLBAR_InternalHitTest (wndPtr, &pt);
+    nHit = TOOLBAR_InternalHitTest (hwnd, &pt);
 
     if (nHit >= 0) {
 	btnPtr = &infoPtr->buttons[nHit];
 	if (!(btnPtr->fsState & TBSTATE_ENABLED))
 	    return 0;
-	SetCapture (wndPtr->hwndSelf);
+	SetCapture (hwnd);
 	infoPtr->bCaptured = TRUE;
 	infoPtr->nButtonDown = nHit;
 
 	btnPtr->fsState |= TBSTATE_PRESSED;
 
-	hdc = GetDC (wndPtr->hwndSelf);
-	TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+	hdc = GetDC (hwnd);
+	TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+	ReleaseDC (hwnd, hdc);
     }
-    else if (wndPtr->dwStyle & CCS_ADJUSTABLE)
-	TOOLBAR_Customize (wndPtr);
+    else if (GetWindowLongA (hwnd, GWL_STYLE) & CCS_ADJUSTABLE)
+	TOOLBAR_Customize (hwnd);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLBAR_LButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     POINT pt;
     INT   nHit;
     HDC   hdc;
 
     if (infoPtr->hwndToolTip)
-	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, wndPtr->hwndSelf,
+	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, hwnd,
 			    WM_LBUTTONDOWN, wParam, lParam);
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    nHit = TOOLBAR_InternalHitTest (wndPtr, &pt);
+    nHit = TOOLBAR_InternalHitTest (hwnd, &pt);
 
     if (nHit >= 0) {
 	btnPtr = &infoPtr->buttons[nHit];
 	if (!(btnPtr->fsState & TBSTATE_ENABLED))
 	    return 0;
 
-	SetCapture (wndPtr->hwndSelf);
+	SetCapture (hwnd);
 	infoPtr->bCaptured = TRUE;
 	infoPtr->nButtonDown = nHit;
 	infoPtr->nOldHit = nHit;
 
 	btnPtr->fsState |= TBSTATE_PRESSED;
 
-	hdc = GetDC (wndPtr->hwndSelf);
-	TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+	hdc = GetDC (hwnd);
+	TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -2300,9 +2322,9 @@
 
 
 static LRESULT
-TOOLBAR_LButtonUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     POINT pt;
     INT   nHit;
@@ -2311,12 +2333,12 @@
     BOOL  bSendMessage = TRUE;
 
     if (infoPtr->hwndToolTip)
-	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, wndPtr->hwndSelf,
+	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, hwnd,
 			    WM_LBUTTONUP, wParam, lParam);
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    nHit = TOOLBAR_InternalHitTest (wndPtr, &pt);
+    nHit = TOOLBAR_InternalHitTest (hwnd, &pt);
 
     if ((infoPtr->bCaptured) && (infoPtr->nButtonDown >= 0)) {
 	infoPtr->bCaptured = FALSE;
@@ -2347,16 +2369,15 @@
 	else
 	    bSendMessage = FALSE;
 
-	hdc = GetDC (wndPtr->hwndSelf);
+	hdc = GetDC (hwnd);
 	if (nOldIndex != -1)
-	    TOOLBAR_DrawButton (wndPtr, &infoPtr->buttons[nOldIndex], hdc);
-	TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+	    TOOLBAR_DrawButton (hwnd, &infoPtr->buttons[nOldIndex], hdc);
+	TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+	ReleaseDC (hwnd, hdc);
 
 	if (bSendMessage)
 	    SendMessageA (infoPtr->hwndNotify, WM_COMMAND,
-			    MAKEWPARAM(btnPtr->idCommand, 0),
-			    (LPARAM)wndPtr->hwndSelf);
+			  MAKEWPARAM(btnPtr->idCommand, 0), (LPARAM)hwnd);
 
 	infoPtr->nButtonDown = -1;
 	infoPtr->nOldHit = -1;
@@ -2367,36 +2388,36 @@
 
 
 static LRESULT
-TOOLBAR_MouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     TBUTTON_INFO *btnPtr;
     POINT pt;
     INT   nHit;
     HDC   hdc;
 
     if (infoPtr->hwndToolTip)
-	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, wndPtr->hwndSelf,
+	TOOLBAR_RelayEvent (infoPtr->hwndToolTip, hwnd,
 			    WM_MOUSEMOVE, wParam, lParam);
 
     pt.x = (INT)LOWORD(lParam);
     pt.y = (INT)HIWORD(lParam);
-    nHit = TOOLBAR_InternalHitTest (wndPtr, &pt);
+    nHit = TOOLBAR_InternalHitTest (hwnd, &pt);
 
     if (infoPtr->bCaptured) {
 	if (infoPtr->nOldHit != nHit) {
 	    btnPtr = &infoPtr->buttons[infoPtr->nButtonDown];
 	    if (infoPtr->nOldHit == infoPtr->nButtonDown) {
 		btnPtr->fsState &= ~TBSTATE_PRESSED;
-		hdc = GetDC (wndPtr->hwndSelf);
-		TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		hdc = GetDC (hwnd);
+		TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+		ReleaseDC (hwnd, hdc);
 	    }
 	    else if (nHit == infoPtr->nButtonDown) {
 		btnPtr->fsState |= TBSTATE_PRESSED;
-		hdc = GetDC (wndPtr->hwndSelf);
-		TOOLBAR_DrawButton (wndPtr, btnPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		hdc = GetDC (hwnd);
+		TOOLBAR_DrawButton (hwnd, btnPtr, hdc);
+		ReleaseDC (hwnd, hdc);
 	    }
 	}
 	infoPtr->nOldHit = nHit;
@@ -2407,80 +2428,68 @@
 
 
 __inline__ static LRESULT
-TOOLBAR_NCActivate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_NCActivate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
 /*    if (wndPtr->dwStyle & CCS_NODIVIDER) */
-	return DefWindowProcA (wndPtr->hwndSelf, WM_NCACTIVATE,
-				 wParam, lParam);
+	return DefWindowProcA (hwnd, WM_NCACTIVATE, wParam, lParam);
 /*    else */
 /*	return TOOLBAR_NCPaint (wndPtr, wParam, lParam); */
 }
 
 
 __inline__ static LRESULT
-TOOLBAR_NCCalcSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_NCCalcSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    if (!(wndPtr->dwStyle & CCS_NODIVIDER))
+    if (!(GetWindowLongA (hwnd, GWL_STYLE) & CCS_NODIVIDER))
 	((LPRECT)lParam)->top += sysMetrics[SM_CYEDGE];
 
-    return DefWindowProcA (wndPtr->hwndSelf, WM_NCCALCSIZE, wParam, lParam);
+    return DefWindowProcA (hwnd, WM_NCCALCSIZE, wParam, lParam);
 }
 
 
 static LRESULT
-TOOLBAR_NCCreate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TOOLBAR_INFO *infoPtr;
 
     /* allocate memory for info structure */
     infoPtr = (TOOLBAR_INFO *)COMCTL32_Alloc (sizeof(TOOLBAR_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
-	ERR (toolbar, "could not allocate info memory!\n");
-	return 0;
-    }
-
-    if ((TOOLBAR_INFO*)wndPtr->wExtra[0] != infoPtr) {
-	ERR (toolbar, "pointer assignment error!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     /* paranoid!! */
     infoPtr->dwStructSize = sizeof(TBBUTTON);
 
     /* fix instance handle, if the toolbar was created by CreateToolbarEx() */
-    if (!wndPtr->hInstance)
-	wndPtr->hInstance = wndPtr->parent->hInstance;
+    if (!GetWindowLongA (hwnd, GWL_HINSTANCE)) {
+        HINSTANCE hInst = (HINSTANCE)GetWindowLongA (GetParent (hwnd), GWL_HINSTANCE);
+	SetWindowLongA (hwnd, GWL_HINSTANCE, (DWORD)hInst);
+    }
 
-    return DefWindowProcA (wndPtr->hwndSelf, WM_NCCREATE, wParam, lParam);
+    return DefWindowProcA (hwnd, WM_NCCREATE, wParam, lParam);
 }
 
 
 static LRESULT
-TOOLBAR_NCPaint (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_NCPaint (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    HWND hwnd = wndPtr->hwndSelf;
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    RECT rcWindow;
     HDC hdc;
 
-    if ( wndPtr->dwStyle & WS_MINIMIZE ||
-	!WIN_IsWindowDrawable( wndPtr, 0 )) return 0; /* Nothing to do */
+    if (dwStyle & WS_MINIMIZE)
+	return 0; /* Nothing to do */
 
     DefWindowProcA (hwnd, WM_NCPAINT, wParam, lParam);
 
-    if (!(hdc = GetDCEx( hwnd, 0, DCX_USESTYLE | DCX_WINDOW ))) return 0;
-
-    if (ExcludeVisRect16( hdc, wndPtr->rectClient.left-wndPtr->rectWindow.left,
-		        wndPtr->rectClient.top-wndPtr->rectWindow.top,
-		        wndPtr->rectClient.right-wndPtr->rectWindow.left,
-		        wndPtr->rectClient.bottom-wndPtr->rectWindow.top )
-	== NULLREGION){
-	ReleaseDC( hwnd, hdc );
+    if (!(hdc = GetDCEx (hwnd, 0, DCX_USESTYLE | DCX_WINDOW)))
 	return 0;
-    }
 
-    if (!(wndPtr->flags & WIN_MANAGED) && !(wndPtr->dwStyle & CCS_NODIVIDER))
-	DrawEdge (hdc, &wndPtr->rectWindow, EDGE_ETCHED, BF_TOP);
+    if (!(dwStyle & CCS_NODIVIDER))
+    {
+	GetWindowRect (hwnd, &rcWindow);
+	OffsetRect (&rcWindow, -rcWindow.left, -rcWindow.top);
+	DrawEdge (hdc, &rcWindow, EDGE_ETCHED, BF_TOP);
+    }
 
     ReleaseDC( hwnd, hdc );
 
@@ -2489,9 +2498,9 @@
 
 
 __inline__ static LRESULT
-TOOLBAR_Notify (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_Notify (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
     LPNMHDR lpnmh = (LPNMHDR)lParam;
 
     TRACE (toolbar, "passing WM_NOTIFY!\n");
@@ -2520,23 +2529,24 @@
 
 
 static LRESULT
-TOOLBAR_Paint (WND *wndPtr, WPARAM wParam)
+TOOLBAR_Paint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    TOOLBAR_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    TOOLBAR_Refresh (hwnd, hdc);
     if (!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-TOOLBAR_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr(wndPtr);
+    TOOLBAR_INFO *infoPtr = TOOLBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     RECT parent_rect;
     HWND parent;
     /* INT32  x, y; */
@@ -2560,37 +2570,37 @@
 
     if (flags == SIZE_RESTORED) {
 	/* width and height don't apply */
-	parent = GetParent (wndPtr->hwndSelf);
+	parent = GetParent (hwnd);
 	GetClientRect(parent, &parent_rect);
 
-	if (wndPtr->dwStyle & CCS_NORESIZE) {
+	if (dwStyle & CCS_NORESIZE) {
 	    uPosFlags |= (SWP_NOSIZE | SWP_NOMOVE);
 
 	    /* FIXME */
 /*	    infoPtr->nWidth = parent_rect.right - parent_rect.left; */
 	    cy = infoPtr->nHeight;
 	    cx = infoPtr->nWidth;
-	    TOOLBAR_CalcToolbar (wndPtr);
+	    TOOLBAR_CalcToolbar (hwnd);
 	    infoPtr->nWidth = cx;
 	    infoPtr->nHeight = cy;
 	}
 	else {
 	    infoPtr->nWidth = parent_rect.right - parent_rect.left;
-	    TOOLBAR_CalcToolbar (wndPtr);
+	    TOOLBAR_CalcToolbar (hwnd);
 	    cy = infoPtr->nHeight;
 	    cx = infoPtr->nWidth;
 	}
 
-	if (wndPtr->dwStyle & CCS_NOPARENTALIGN) {
+	if (dwStyle & CCS_NOPARENTALIGN) {
 	    uPosFlags |= SWP_NOMOVE;
 	    cy = infoPtr->nHeight;
 	    cx = infoPtr->nWidth;
 	}
 
-	if (!(wndPtr->dwStyle & CCS_NODIVIDER))
+	if (!(dwStyle & CCS_NODIVIDER))
 	    cy += sysMetrics[SM_CYEDGE];
 
-	SetWindowPos (wndPtr->hwndSelf, 0, parent_rect.left, parent_rect.top,
+	SetWindowPos (hwnd, 0, parent_rect.left, parent_rect.top,
 			cx, cy, uPosFlags | SWP_NOZORDER);
     }
     return 0;
@@ -2598,15 +2608,15 @@
 
 
 static LRESULT
-TOOLBAR_StyleChanged (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLBAR_StyleChanged (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HDC hdc;
 
-    TOOLBAR_AutoSize (wndPtr, wParam, lParam);
+    TOOLBAR_AutoSize (hwnd, wParam, lParam);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return 0;
 }
@@ -2616,155 +2626,153 @@
 LRESULT WINAPI
 ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 	case TB_ADDBITMAP:
-	    return TOOLBAR_AddBitmap (wndPtr, wParam, lParam);
+	    return TOOLBAR_AddBitmap (hwnd, wParam, lParam);
 
 	case TB_ADDBUTTONSA:
-	    return TOOLBAR_AddButtonsA (wndPtr, wParam, lParam);
+	    return TOOLBAR_AddButtonsA (hwnd, wParam, lParam);
 
 /*	case TB_ADDBUTTONS32W: */
 
 	case TB_ADDSTRINGA:
-	    return TOOLBAR_AddStringA (wndPtr, wParam, lParam);
+	    return TOOLBAR_AddStringA (hwnd, wParam, lParam);
 
 	case TB_ADDSTRINGW:
-	    return TOOLBAR_AddStringW (wndPtr, wParam, lParam);
+	    return TOOLBAR_AddStringW (hwnd, wParam, lParam);
 
 	case TB_AUTOSIZE:
-	    return TOOLBAR_AutoSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_AutoSize (hwnd, wParam, lParam);
 
 	case TB_BUTTONCOUNT:
-	    return TOOLBAR_ButtonCount (wndPtr, wParam, lParam);
+	    return TOOLBAR_ButtonCount (hwnd, wParam, lParam);
 
 	case TB_BUTTONSTRUCTSIZE:
-	    return TOOLBAR_ButtonStructSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_ButtonStructSize (hwnd, wParam, lParam);
 
 	case TB_CHANGEBITMAP:
-	    return TOOLBAR_ChangeBitmap (wndPtr, wParam, lParam);
+	    return TOOLBAR_ChangeBitmap (hwnd, wParam, lParam);
 
 	case TB_CHECKBUTTON:
-	    return TOOLBAR_CheckButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_CheckButton (hwnd, wParam, lParam);
 
 	case TB_COMMANDTOINDEX:
-	    return TOOLBAR_CommandToIndex (wndPtr, wParam, lParam);
+	    return TOOLBAR_CommandToIndex (hwnd, wParam, lParam);
 
 	case TB_CUSTOMIZE:
-	    return TOOLBAR_Customize (wndPtr);
+	    return TOOLBAR_Customize (hwnd);
 
 	case TB_DELETEBUTTON:
-	    return TOOLBAR_DeleteButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_DeleteButton (hwnd, wParam, lParam);
 
 	case TB_ENABLEBUTTON:
-	    return TOOLBAR_EnableButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_EnableButton (hwnd, wParam, lParam);
 
 /*	case TB_GETANCHORHIGHLIGHT:		*/ /* 4.71 */
 
 	case TB_GETBITMAP:
-	    return TOOLBAR_GetBitmap (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetBitmap (hwnd, wParam, lParam);
 
 	case TB_GETBITMAPFLAGS:
-	    return TOOLBAR_GetBitmapFlags (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetBitmapFlags (hwnd, wParam, lParam);
 
 	case TB_GETBUTTON:
-	    return TOOLBAR_GetButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetButton (hwnd, wParam, lParam);
 
 	case TB_GETBUTTONINFOA:
-	    return TOOLBAR_GetButtonInfoA (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetButtonInfoA (hwnd, wParam, lParam);
 
 /*	case TB_GETBUTTONINFO32W:		*/ /* 4.71 */
 
 	case TB_GETBUTTONSIZE:
-	    return TOOLBAR_GetButtonSize (wndPtr);
+	    return TOOLBAR_GetButtonSize (hwnd);
 
 	case TB_GETBUTTONTEXTA:
-	    return TOOLBAR_GetButtonTextA (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetButtonTextA (hwnd, wParam, lParam);
 
 /*	case TB_GETBUTTONTEXT32W: */
 /*	case TB_GETCOLORSCHEME:			*/ /* 4.71 */
 
 	case TB_GETDISABLEDIMAGELIST:
-	    return TOOLBAR_GetDisabledImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetDisabledImageList (hwnd, wParam, lParam);
 
 	case TB_GETEXTENDEDSTYLE:
-	    return TOOLBAR_GetExtendedStyle (wndPtr);
+	    return TOOLBAR_GetExtendedStyle (hwnd);
 
 	case TB_GETHOTIMAGELIST:
-	    return TOOLBAR_GetHotImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetHotImageList (hwnd, wParam, lParam);
 
 /*	case TB_GETHOTITEM:			*/ /* 4.71 */
 
 	case TB_GETIMAGELIST:
-	    return TOOLBAR_GetImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetImageList (hwnd, wParam, lParam);
 
 /*	case TB_GETINSERTMARK:			*/ /* 4.71 */
 /*	case TB_GETINSERTMARKCOLOR:		*/ /* 4.71 */
 
 	case TB_GETITEMRECT:
-	    return TOOLBAR_GetItemRect (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetItemRect (hwnd, wParam, lParam);
 
 	case TB_GETMAXSIZE:
-	    return TOOLBAR_GetMaxSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetMaxSize (hwnd, wParam, lParam);
 
 /*	case TB_GETOBJECT:			*/ /* 4.71 */
 /*	case TB_GETPADDING:			*/ /* 4.71 */
 
 	case TB_GETRECT:
-	    return TOOLBAR_GetRect (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetRect (hwnd, wParam, lParam);
 
 	case TB_GETROWS:
-	    return TOOLBAR_GetRows (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetRows (hwnd, wParam, lParam);
 
 	case TB_GETSTATE:
-	    return TOOLBAR_GetState (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetState (hwnd, wParam, lParam);
 
 	case TB_GETSTYLE:
-	    return TOOLBAR_GetStyle (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetStyle (hwnd, wParam, lParam);
 
 	case TB_GETTEXTROWS:
-	    return TOOLBAR_GetTextRows (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetTextRows (hwnd, wParam, lParam);
 
 	case TB_GETTOOLTIPS:
-	    return TOOLBAR_GetToolTips (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetToolTips (hwnd, wParam, lParam);
 
 	case TB_GETUNICODEFORMAT:
-	    return TOOLBAR_GetUnicodeFormat (wndPtr, wParam, lParam);
+	    return TOOLBAR_GetUnicodeFormat (hwnd, wParam, lParam);
 
 	case TB_HIDEBUTTON:
-	    return TOOLBAR_HideButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_HideButton (hwnd, wParam, lParam);
 
 	case TB_HITTEST:
-	    return TOOLBAR_HitTest (wndPtr, wParam, lParam);
+	    return TOOLBAR_HitTest (hwnd, wParam, lParam);
 
 	case TB_INDETERMINATE:
-	    return TOOLBAR_Indeterminate (wndPtr, wParam, lParam);
+	    return TOOLBAR_Indeterminate (hwnd, wParam, lParam);
 
 	case TB_INSERTBUTTONA:
-	    return TOOLBAR_InsertButtonA (wndPtr, wParam, lParam);
+	    return TOOLBAR_InsertButtonA (hwnd, wParam, lParam);
 
 /*	case TB_INSERTBUTTON32W: */
 /*	case TB_INSERTMARKHITTEST:		*/ /* 4.71 */
 
 	case TB_ISBUTTONCHECKED:
-	    return TOOLBAR_IsButtonChecked (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonChecked (hwnd, wParam, lParam);
 
 	case TB_ISBUTTONENABLED:
-	    return TOOLBAR_IsButtonEnabled (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonEnabled (hwnd, wParam, lParam);
 
 	case TB_ISBUTTONHIDDEN:
-	    return TOOLBAR_IsButtonHidden (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonHidden (hwnd, wParam, lParam);
 
 	case TB_ISBUTTONHIGHLIGHTED:
-	    return TOOLBAR_IsButtonHighlighted (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonHighlighted (hwnd, wParam, lParam);
 
 	case TB_ISBUTTONINDETERMINATE:
-	    return TOOLBAR_IsButtonIndeterminate (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonIndeterminate (hwnd, wParam, lParam);
 
 	case TB_ISBUTTONPRESSED:
-	    return TOOLBAR_IsButtonPressed (wndPtr, wParam, lParam);
+	    return TOOLBAR_IsButtonPressed (hwnd, wParam, lParam);
 
 /*	case TB_LOADIMAGES:			*/ /* 4.70 */
 /*	case TB_MAPACCELERATOR32A:		*/ /* 4.71 */
@@ -2773,136 +2781,136 @@
 /*	case TB_MOVEBUTTON:			*/ /* 4.71 */
 
 	case TB_PRESSBUTTON:
-	    return TOOLBAR_PressButton (wndPtr, wParam, lParam);
+	    return TOOLBAR_PressButton (hwnd, wParam, lParam);
 
 /*	case TB_REPLACEBITMAP: */
 
 	case TB_SAVERESTOREA:
-	    return TOOLBAR_SaveRestoreA (wndPtr, wParam, lParam);
+	    return TOOLBAR_SaveRestoreA (hwnd, wParam, lParam);
 
 /*	case TB_SAVERESTORE32W: */
 /*	case TB_SETANCHORHIGHLIGHT:		*/ /* 4.71 */
 
 	case TB_SETBITMAPSIZE:
-	    return TOOLBAR_SetBitmapSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetBitmapSize (hwnd, wParam, lParam);
 
 	case TB_SETBUTTONINFOA:
-	    return TOOLBAR_SetButtonInfoA (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetButtonInfoA (hwnd, wParam, lParam);
 
 /*	case TB_SETBUTTONINFO32W:		*/ /* 4.71 */
 
 	case TB_SETBUTTONSIZE:
-	    return TOOLBAR_SetButtonSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetButtonSize (hwnd, wParam, lParam);
 
 	case TB_SETBUTTONWIDTH:
-	    return TOOLBAR_SetButtonWidth (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetButtonWidth (hwnd, wParam, lParam);
 
 	case TB_SETCMDID:
-	    return TOOLBAR_SetCmdId (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetCmdId (hwnd, wParam, lParam);
 
 /*	case TB_SETCOLORSCHEME:			*/ /* 4.71 */
 
 	case TB_SETDISABLEDIMAGELIST:
-	    return TOOLBAR_SetDisabledImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetDisabledImageList (hwnd, wParam, lParam);
 
 	case TB_SETDRAWTEXTFLAGS:
-	    return TOOLBAR_SetDrawTextFlags (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetDrawTextFlags (hwnd, wParam, lParam);
 
 	case TB_SETEXTENDEDSTYLE:
-	    return TOOLBAR_SetExtendedStyle (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetExtendedStyle (hwnd, wParam, lParam);
 
 	case TB_SETHOTIMAGELIST:
-	    return TOOLBAR_SetHotImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetHotImageList (hwnd, wParam, lParam);
 
 /*	case TB_SETHOTITEM:			*/ /* 4.71 */
 
 	case TB_SETIMAGELIST:
-	    return TOOLBAR_SetImageList (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetImageList (hwnd, wParam, lParam);
 
 	case TB_SETINDENT:
-	    return TOOLBAR_SetIndent (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetIndent (hwnd, wParam, lParam);
 
 /*	case TB_SETINSERTMARK:			*/ /* 4.71 */
 
 	case TB_SETINSERTMARKCOLOR:
-	    return TOOLBAR_SetInsertMarkColor (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetInsertMarkColor (hwnd, wParam, lParam);
 
 	case TB_SETMAXTEXTROWS:
-	    return TOOLBAR_SetMaxTextRows (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetMaxTextRows (hwnd, wParam, lParam);
 
 /*	case TB_SETPADDING:			*/ /* 4.71 */
 
 	case TB_SETPARENT:
-	    return TOOLBAR_SetParent (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetParent (hwnd, wParam, lParam);
 
 	case TB_SETROWS:
-	    return TOOLBAR_SetRows (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetRows (hwnd, wParam, lParam);
 
 	case TB_SETSTATE:
-	    return TOOLBAR_SetState (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetState (hwnd, wParam, lParam);
 
 	case TB_SETSTYLE:
-	    return TOOLBAR_SetStyle (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetStyle (hwnd, wParam, lParam);
 
 	case TB_SETTOOLTIPS:
-	    return TOOLBAR_SetToolTips (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetToolTips (hwnd, wParam, lParam);
 
 	case TB_SETUNICODEFORMAT:
-	    return TOOLBAR_SetUnicodeFormat (wndPtr, wParam, lParam);
+	    return TOOLBAR_SetUnicodeFormat (hwnd, wParam, lParam);
 
 
 /*	case WM_CHAR: */
 
 	case WM_CREATE:
-	    return TOOLBAR_Create (wndPtr, wParam, lParam);
+	    return TOOLBAR_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return TOOLBAR_Destroy (wndPtr, wParam, lParam);
+	    return TOOLBAR_Destroy (hwnd, wParam, lParam);
 
 	case WM_ERASEBKGND:
-	    return TOOLBAR_EraseBackground (wndPtr, wParam, lParam);
+	    return TOOLBAR_EraseBackground (hwnd, wParam, lParam);
 
 /*	case WM_GETFONT: */
 /*	case WM_KEYDOWN: */
 /*	case WM_KILLFOCUS: */
 
 	case WM_LBUTTONDBLCLK:
-	    return TOOLBAR_LButtonDblClk (wndPtr, wParam, lParam);
+	    return TOOLBAR_LButtonDblClk (hwnd, wParam, lParam);
 
 	case WM_LBUTTONDOWN:
-	    return TOOLBAR_LButtonDown (wndPtr, wParam, lParam);
+	    return TOOLBAR_LButtonDown (hwnd, wParam, lParam);
 
 	case WM_LBUTTONUP:
-	    return TOOLBAR_LButtonUp (wndPtr, wParam, lParam);
+	    return TOOLBAR_LButtonUp (hwnd, wParam, lParam);
 
 	case WM_MOUSEMOVE:
-	    return TOOLBAR_MouseMove (wndPtr, wParam, lParam);
+	    return TOOLBAR_MouseMove (hwnd, wParam, lParam);
 
 	case WM_NCACTIVATE:
-	    return TOOLBAR_NCActivate (wndPtr, wParam, lParam);
+	    return TOOLBAR_NCActivate (hwnd, wParam, lParam);
 
 	case WM_NCCALCSIZE:
-	    return TOOLBAR_NCCalcSize (wndPtr, wParam, lParam);
+	    return TOOLBAR_NCCalcSize (hwnd, wParam, lParam);
 
 	case WM_NCCREATE:
-	    return TOOLBAR_NCCreate (wndPtr, wParam, lParam);
+	    return TOOLBAR_NCCreate (hwnd, wParam, lParam);
 
 	case WM_NCPAINT:
-	    return TOOLBAR_NCPaint (wndPtr, wParam, lParam);
+	    return TOOLBAR_NCPaint (hwnd, wParam, lParam);
 
 	case WM_NOTIFY:
-	    return TOOLBAR_Notify (wndPtr, wParam, lParam);
+	    return TOOLBAR_Notify (hwnd, wParam, lParam);
 
 /*	case WM_NOTIFYFORMAT: */
 
 	case WM_PAINT:
-	    return TOOLBAR_Paint (wndPtr, wParam);
+	    return TOOLBAR_Paint (hwnd, wParam);
 
 	case WM_SIZE:
-	    return TOOLBAR_Size (wndPtr, wParam, lParam);
+	    return TOOLBAR_Size (hwnd, wParam, lParam);
 
 	case WM_STYLECHANGED:
-	    return TOOLBAR_StyleChanged (wndPtr, wParam, lParam);
+	    return TOOLBAR_StyleChanged (hwnd, wParam, lParam);
 
 /*	case WM_SYSCOLORCHANGE: */
 
diff --git a/dlls/comctl32/tooltips.c b/dlls/comctl32/tooltips.c
index 433150b..3d39a02 100644
--- a/dlls/comctl32/tooltips.c
+++ b/dlls/comctl32/tooltips.c
@@ -13,6 +13,7 @@
  *     curtool.exe, deltool.exe, enumtools.exe, getinfo.exe, getiptxt.exe,
  *     hittest.exe, needtext.exe, newrect.exe, updtext.exe and winfrpt.exe.
  */
+
 #include <string.h>
 
 #include "commctrl.h"
@@ -30,7 +31,7 @@
 /* property name of tooltip window handle */
 /*#define TT_SUBCLASS_PROP "CC32SubclassInfo" */
 
-#define TOOLTIPS_GetInfoPtr(wndPtr) ((TOOLTIPS_INFO *)wndPtr->wExtra[0])
+#define TOOLTIPS_GetInfoPtr(wndPtr) ((TOOLTIPS_INFO *)GetWindowLongA (hwnd, 0))
 
 
 LRESULT CALLBACK
@@ -38,9 +39,9 @@
 
 
 static VOID
-TOOLTIPS_Refresh (WND *wndPtr, HDC hdc)
+TOOLTIPS_Refresh (HWND hwnd, HDC hdc)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(hwnd);
     RECT rc;
     INT oldBkMode;
     HFONT hOldFont;
@@ -49,9 +50,9 @@
 
     if (infoPtr->nMaxTipWidth > -1)
 	uFlags |= DT_WORDBREAK;
-    if (wndPtr->dwStyle & TTS_NOPREFIX)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TTS_NOPREFIX)
 	uFlags |= DT_NOPREFIX;
-    GetClientRect (wndPtr->hwndSelf, &rc);
+    GetClientRect (hwnd, &rc);
 
     /* fill the background */
     hBrush = CreateSolidBrush (infoPtr->clrBk);
@@ -76,7 +77,7 @@
 
 
 static VOID
-TOOLTIPS_GetTipText (WND *wndPtr, TOOLTIPS_INFO *infoPtr, INT nTool)
+TOOLTIPS_GetTipText (HWND hwnd, TOOLTIPS_INFO *infoPtr, INT nTool)
 {
     TTTOOL_INFO *toolPtr = &infoPtr->tools[nTool];
 
@@ -93,7 +94,7 @@
 
 	    /* fill NMHDR struct */
 	    ZeroMemory (&ttnmdi, sizeof(NMTTDISPINFOA));
-	    ttnmdi.hdr.hwndFrom = wndPtr->hwndSelf;
+	    ttnmdi.hdr.hwndFrom = hwnd;
 	    ttnmdi.hdr.idFrom = toolPtr->uId;
 	    ttnmdi.hdr.code = TTN_GETDISPINFOA;
 	    ttnmdi.lpszText = (LPSTR)&ttnmdi.szText;
@@ -154,7 +155,7 @@
 
 
 static VOID
-TOOLTIPS_CalcTipSize (WND *wndPtr, TOOLTIPS_INFO *infoPtr, LPSIZE lpSize)
+TOOLTIPS_CalcTipSize (HWND hwnd, TOOLTIPS_INFO *infoPtr, LPSIZE lpSize)
 {
     HDC hdc;
     HFONT hOldFont;
@@ -165,15 +166,15 @@
 	rc.right = infoPtr->nMaxTipWidth;
 	uFlags |= DT_WORDBREAK;
     }
-    if (wndPtr->dwStyle & TTS_NOPREFIX)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TTS_NOPREFIX)
 	uFlags |= DT_NOPREFIX;
     TRACE (tooltips, "\"%s\"\n", debugstr_w(infoPtr->szTipText));
 
-    hdc = GetDC (wndPtr->hwndSelf);
+    hdc = GetDC (hwnd);
     hOldFont = SelectObject (hdc, infoPtr->hFont);
     DrawTextW (hdc, infoPtr->szTipText, -1, &rc, uFlags);
     SelectObject (hdc, hOldFont);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    ReleaseDC (hwnd, hdc);
 
     lpSize->cx = rc.right - rc.left + 4 + 
 		 infoPtr->rcMargin.left + infoPtr->rcMargin.right;
@@ -183,7 +184,7 @@
 
 
 static VOID
-TOOLTIPS_Show (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
+TOOLTIPS_Show (HWND hwnd, TOOLTIPS_INFO *infoPtr)
 {
     TTTOOL_INFO *toolPtr;
     RECT rect;
@@ -200,7 +201,7 @@
 
     TRACE (tooltips, "Show tooltip pre %d!\n", infoPtr->nTool);
 
-    TOOLTIPS_GetTipText (wndPtr, infoPtr, infoPtr->nCurrentTool);
+    TOOLTIPS_GetTipText (hwnd, infoPtr, infoPtr->nCurrentTool);
 
     if (infoPtr->szTipText[0] == L'\0') {
 	infoPtr->nCurrentTool = -1;
@@ -210,7 +211,7 @@
     TRACE (tooltips, "Show tooltip %d!\n", infoPtr->nCurrentTool);
     toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
 
-    hdr.hwndFrom = wndPtr->hwndSelf;
+    hdr.hwndFrom = hwnd;
     hdr.idFrom = toolPtr->uId;
     hdr.code = TTN_SHOW;
     SendMessageA (toolPtr->hwnd, WM_NOTIFY,
@@ -218,7 +219,7 @@
 
     TRACE (tooltips, "\"%s\"\n", debugstr_w(infoPtr->szTipText));
 
-    TOOLTIPS_CalcTipSize (wndPtr, infoPtr, &size);
+    TOOLTIPS_CalcTipSize (hwnd, infoPtr, &size);
     TRACE (tooltips, "size %d - %d\n", size.cx, size.cy);
 
     if (toolPtr->uFlags & TTF_CENTERTIP) {
@@ -245,23 +246,24 @@
     rect.right = rect.left + size.cx;
     rect.bottom = rect.top + size.cy;
 
-    AdjustWindowRectEx (&rect, wndPtr->dwStyle, FALSE, wndPtr->dwExStyle);
+    AdjustWindowRectEx (&rect, GetWindowLongA (hwnd, GWL_STYLE),
+			FALSE, GetWindowLongA (hwnd, GWL_EXSTYLE));
 
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, rect.left, rect.top,
+    SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
 		    rect.right - rect.left, rect.bottom - rect.top,
 		    SWP_SHOWWINDOW);
 
     /* repaint the tooltip */
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLTIPS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLTIPS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
-    SetTimer (wndPtr->hwndSelf, ID_TIMERPOP, infoPtr->nAutoPopTime, 0);
+    SetTimer (hwnd, ID_TIMERPOP, infoPtr->nAutoPopTime, 0);
 }
 
 
 static VOID
-TOOLTIPS_Hide (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
+TOOLTIPS_Hide (HWND hwnd, TOOLTIPS_INFO *infoPtr)
 {
     TTTOOL_INFO *toolPtr;
     NMHDR hdr;
@@ -271,9 +273,9 @@
 
     toolPtr = &infoPtr->tools[infoPtr->nCurrentTool];
     TRACE (tooltips, "Hide tooltip %d!\n", infoPtr->nCurrentTool);
-    KillTimer (wndPtr->hwndSelf, ID_TIMERPOP);
+    KillTimer (hwnd, ID_TIMERPOP);
 
-    hdr.hwndFrom = wndPtr->hwndSelf;
+    hdr.hwndFrom = hwnd;
     hdr.idFrom = toolPtr->uId;
     hdr.code = TTN_POP;
     SendMessageA (toolPtr->hwnd, WM_NOTIFY,
@@ -281,13 +283,13 @@
 
     infoPtr->nCurrentTool = -1;
 
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, 0, 0, 0, 0,
+    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
 		    SWP_NOZORDER | SWP_HIDEWINDOW);
 }
 
 
 static VOID
-TOOLTIPS_TrackShow (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
+TOOLTIPS_TrackShow (HWND hwnd, TOOLTIPS_INFO *infoPtr)
 {
     TTTOOL_INFO *toolPtr;
     RECT rect;
@@ -302,7 +304,7 @@
 
     TRACE (tooltips, "show tracking tooltip pre %d!\n", infoPtr->nTrackTool);
 
-    TOOLTIPS_GetTipText (wndPtr, infoPtr, infoPtr->nTrackTool);
+    TOOLTIPS_GetTipText (hwnd, infoPtr, infoPtr->nTrackTool);
 
     if (infoPtr->szTipText[0] == L'\0') {
 	infoPtr->nTrackTool = -1;
@@ -312,7 +314,7 @@
     TRACE (tooltips, "show tracking tooltip %d!\n", infoPtr->nTrackTool);
     toolPtr = &infoPtr->tools[infoPtr->nTrackTool];
 
-    hdr.hwndFrom = wndPtr->hwndSelf;
+    hdr.hwndFrom = hwnd;
     hdr.idFrom = toolPtr->uId;
     hdr.code = TTN_SHOW;
     SendMessageA (toolPtr->hwnd, WM_NOTIFY,
@@ -320,7 +322,7 @@
 
     TRACE (tooltips, "\"%s\"\n", debugstr_w(infoPtr->szTipText));
 
-    TOOLTIPS_CalcTipSize (wndPtr, infoPtr, &size);
+    TOOLTIPS_CalcTipSize (hwnd, infoPtr, &size);
     TRACE (tooltips, "size %d - %d\n", size.cx, size.cy);
 
     if (toolPtr->uFlags & TTF_ABSOLUTE) {
@@ -361,20 +363,21 @@
     rect.right = rect.left + size.cx;
     rect.bottom = rect.top + size.cy;
 
-    AdjustWindowRectEx (&rect, wndPtr->dwStyle, FALSE, wndPtr->dwExStyle);
+    AdjustWindowRectEx (&rect, GetWindowLongA (hwnd, GWL_STYLE),
+			FALSE, GetWindowLongA (hwnd, GWL_EXSTYLE));
 
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, rect.left, rect.top,
+    SetWindowPos (hwnd, HWND_TOP, rect.left, rect.top,
 		    rect.right - rect.left, rect.bottom - rect.top,
 		    SWP_SHOWWINDOW);
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TOOLTIPS_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TOOLTIPS_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 }
 
 
 static VOID
-TOOLTIPS_TrackHide (WND *wndPtr, TOOLTIPS_INFO *infoPtr)
+TOOLTIPS_TrackHide (HWND hwnd, TOOLTIPS_INFO *infoPtr)
 {
     TTTOOL_INFO *toolPtr;
     NMHDR hdr;
@@ -385,13 +388,13 @@
     toolPtr = &infoPtr->tools[infoPtr->nTrackTool];
     TRACE (tooltips, "hide tracking tooltip %d!\n", infoPtr->nTrackTool);
 
-    hdr.hwndFrom = wndPtr->hwndSelf;
+    hdr.hwndFrom = hwnd;
     hdr.idFrom = toolPtr->uId;
     hdr.code = TTN_POP;
     SendMessageA (toolPtr->hwnd, WM_NOTIFY,
 		    (WPARAM)toolPtr->uId, (LPARAM)&hdr);
 
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, 0, 0, 0, 0,
+    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
 		    SWP_NOZORDER | SWP_HIDEWINDOW);
 }
 
@@ -509,16 +512,15 @@
 
 
 static INT
-TOOLTIPS_CheckTool (WND *wndPtr, BOOL bShowTest)
+TOOLTIPS_CheckTool (HWND hwnd, BOOL bShowTest)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     POINT pt;
     HWND hwndTool;
     INT nTool;
 
     GetCursorPos (&pt);
-    hwndTool =
-	SendMessageA (wndPtr->hwndSelf, TTM_WINDOWFROMPOINT, 0, (LPARAM)&pt);
+    hwndTool = SendMessageA (hwnd, TTM_WINDOWFROMPOINT, 0, (LPARAM)&pt);
     if (hwndTool == 0)
 	return -1;
 
@@ -527,8 +529,8 @@
     if (nTool == -1)
 	return -1;
 
-    if (!(wndPtr->dwStyle & TTS_ALWAYSTIP) && bShowTest) {
-	if (!TOOLTIPS_IsWindowActive (wndPtr->owner->hwndSelf))
+    if (!(GetWindowLongA (hwnd, GWL_STYLE) & TTS_ALWAYSTIP) && bShowTest) {
+	if (!TOOLTIPS_IsWindowActive (GetWindow (hwnd, GW_OWNER)))
 	    return -1;
     }
 
@@ -539,9 +541,9 @@
 
 
 static LRESULT
-TOOLTIPS_Activate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Activate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     infoPtr->bActive = (BOOL)wParam;
 
@@ -549,16 +551,16 @@
 	TRACE (tooltips, "activate!\n");
 
     if (!(infoPtr->bActive) && (infoPtr->nCurrentTool != -1)) 
-	TOOLTIPS_Hide (wndPtr, infoPtr);
+	TOOLTIPS_Hide (hwnd, infoPtr);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_AddToolA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_AddToolA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
 
@@ -568,7 +570,7 @@
 	return FALSE;
 
     TRACE (tooltips, "add tool (%x) %x %d%s!\n",
-	   wndPtr->hwndSelf, lpToolInfo->hwnd, lpToolInfo->uId,
+	   hwnd, lpToolInfo->hwnd, lpToolInfo->uId,
 	   (lpToolInfo->uFlags & TTF_IDISHWND) ? " TTF_IDISHWND" : "");
 
     if (infoPtr->uNumTools == 0) {
@@ -625,7 +627,7 @@
 		lpttsi->wpOrigProc = 
 		    (WNDPROC)SetWindowLongA ((HWND)toolPtr->uId,
 		    GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc);
-		lpttsi->hwndToolTip = wndPtr->hwndSelf;
+		lpttsi->hwndToolTip = hwnd;
 		lpttsi->uRefCount++;
 		SetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass,
 			    (HANDLE)lpttsi);
@@ -642,7 +644,7 @@
 		lpttsi->wpOrigProc = 
 		    (WNDPROC)SetWindowLongA (toolPtr->hwnd,
 		    GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc);
-		lpttsi->hwndToolTip = wndPtr->hwndSelf;
+		lpttsi->hwndToolTip = hwnd;
 		lpttsi->uRefCount++;
 		SetPropA (toolPtr->hwnd, COMCTL32_aSubclass, (HANDLE)lpttsi);
 	    }
@@ -657,9 +659,9 @@
 
 
 static LRESULT
-TOOLTIPS_AddToolW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_AddToolW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
 
@@ -669,7 +671,7 @@
 	return FALSE;
 
     TRACE (tooltips, "add tool (%x) %x %d%s!\n",
-	   wndPtr->hwndSelf, lpToolInfo->hwnd, lpToolInfo->uId,
+	   hwnd, lpToolInfo->hwnd, lpToolInfo->uId,
 	   (lpToolInfo->uFlags & TTF_IDISHWND) ? " TTF_IDISHWND" : "");
 
     if (infoPtr->uNumTools == 0) {
@@ -727,7 +729,7 @@
 		lpttsi->wpOrigProc = 
 		    (WNDPROC)SetWindowLongA ((HWND)toolPtr->uId,
 		    GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc);
-		lpttsi->hwndToolTip = wndPtr->hwndSelf;
+		lpttsi->hwndToolTip = hwnd;
 		lpttsi->uRefCount++;
 		SetPropA ((HWND)toolPtr->uId, COMCTL32_aSubclass,
 			    (HANDLE)lpttsi);
@@ -744,7 +746,7 @@
 		lpttsi->wpOrigProc = 
 		    (WNDPROC)SetWindowLongA (toolPtr->hwnd,
 		    GWL_WNDPROC,(LONG)TOOLTIPS_SubclassProc);
-		lpttsi->hwndToolTip = wndPtr->hwndSelf;
+		lpttsi->hwndToolTip = hwnd;
 		lpttsi->uRefCount++;
 		SetPropA (toolPtr->hwnd, COMCTL32_aSubclass, (HANDLE)lpttsi);
 	    }
@@ -759,9 +761,9 @@
 
 
 static LRESULT
-TOOLTIPS_DelToolA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_DelToolA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -845,9 +847,9 @@
 
 
 static LRESULT
-TOOLTIPS_DelToolW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_DelToolW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -931,9 +933,9 @@
 
 
 static LRESULT
-TOOLTIPS_EnumToolsA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_EnumToolsA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     UINT uIndex = (UINT)wParam;
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
@@ -966,9 +968,9 @@
 
 
 static LRESULT
-TOOLTIPS_EnumToolsW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_EnumToolsW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     UINT uIndex = (UINT)wParam;
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
@@ -1001,9 +1003,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetCurrentToolA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetCurrentToolA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
 
@@ -1039,9 +1041,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetCurrentToolW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetCurrentToolW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
 
@@ -1077,9 +1079,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetDelayTime (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetDelayTime (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     switch (wParam) {
 	case TTDT_AUTOMATIC:
@@ -1100,9 +1102,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetMargin (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetMargin (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPRECT lpRect = (LPRECT)lParam;
 
     lpRect->left   = infoPtr->rcMargin.left;
@@ -1115,18 +1117,18 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_GetMaxTipWidth (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetMaxTipWidth (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     return infoPtr->nMaxTipWidth;
 }
 
 
 static LRESULT
-TOOLTIPS_GetTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     INT nTool;
 
@@ -1145,9 +1147,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     INT nTool;
 
@@ -1166,33 +1168,33 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_GetTipBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     return infoPtr->clrBk;
 }
 
 
 __inline__ static LRESULT
-TOOLTIPS_GetTipTextColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetTipTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     return infoPtr->clrText;
 }
 
 
 __inline__ static LRESULT
-TOOLTIPS_GetToolCount (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetToolCount (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     return infoPtr->uNumTools;
 }
 
 
 static LRESULT
-TOOLTIPS_GetToolInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetToolInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1227,9 +1229,9 @@
 
 
 static LRESULT
-TOOLTIPS_GetToolInfoW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetToolInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1264,9 +1266,9 @@
 
 
 static LRESULT
-TOOLTIPS_HitTestA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_HitTestA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTHITTESTINFOA lptthit = (LPTTHITTESTINFOA)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1299,9 +1301,9 @@
 
 
 static LRESULT
-TOOLTIPS_HitTestW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_HitTestW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTHITTESTINFOW lptthit = (LPTTHITTESTINFOW)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1334,9 +1336,9 @@
 
 
 static LRESULT
-TOOLTIPS_NewToolRectA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_NewToolRectA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpti = (LPTTTOOLINFOA)lParam;
     INT nTool;
 
@@ -1355,9 +1357,9 @@
 
 
 static LRESULT
-TOOLTIPS_NewToolRectW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_NewToolRectW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpti = (LPTTTOOLINFOW)lParam;
     INT nTool;
 
@@ -1376,20 +1378,20 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_Pop (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Pop (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
-    TOOLTIPS_Hide (wndPtr, infoPtr);
+    TOOLTIPS_Hide (hwnd, infoPtr);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_RelayEvent (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_RelayEvent (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPMSG lpMsg = (LPMSG)lParam;
     POINT pt;
 
@@ -1410,8 +1412,8 @@
 	    infoPtr->nOldTool = infoPtr->nTool;
 	    infoPtr->nTool = TOOLTIPS_GetToolFromPoint (infoPtr, lpMsg->hwnd, &pt);
 	    TRACE (tooltips, "tool (%x) %d %d\n",
-		   wndPtr->hwndSelf, infoPtr->nOldTool, infoPtr->nTool);
-	    TOOLTIPS_Hide (wndPtr, infoPtr);
+		   hwnd, infoPtr->nOldTool, infoPtr->nTool);
+	    TOOLTIPS_Hide (hwnd, infoPtr);
 	    break;
 
 	case WM_MOUSEMOVE:
@@ -1420,24 +1422,22 @@
 	    infoPtr->nOldTool = infoPtr->nTool;
 	    infoPtr->nTool = TOOLTIPS_GetToolFromPoint (infoPtr, lpMsg->hwnd, &pt);
 	    TRACE (tooltips, "tool (%x) %d %d\n",
-		   wndPtr->hwndSelf, infoPtr->nOldTool, infoPtr->nTool);
+		   hwnd, infoPtr->nOldTool, infoPtr->nTool);
 	    TRACE (tooltips, "WM_MOUSEMOVE (%04x %ld %ld)\n",
-		   wndPtr->hwndSelf, pt.x, pt.y);
+		   hwnd, pt.x, pt.y);
 	    if ((infoPtr->bActive) && (infoPtr->nTool != infoPtr->nOldTool)) {
 		if (infoPtr->nOldTool == -1) {
-		    SetTimer (wndPtr->hwndSelf, ID_TIMERSHOW,
-				infoPtr->nInitialTime, 0);
+		    SetTimer (hwnd, ID_TIMERSHOW, infoPtr->nInitialTime, 0);
 		    TRACE (tooltips, "timer 1 started!\n");
 		}
 		else {
-		    TOOLTIPS_Hide (wndPtr, infoPtr);
-		    SetTimer (wndPtr->hwndSelf, ID_TIMERSHOW,
-				infoPtr->nReshowTime, 0);
+		    TOOLTIPS_Hide (hwnd, infoPtr);
+		    SetTimer (hwnd, ID_TIMERSHOW, infoPtr->nReshowTime, 0);
 		    TRACE (tooltips, "timer 2 started!\n");
 		}
 	    }
 	    if (infoPtr->nCurrentTool != -1) {
-		SetTimer (wndPtr->hwndSelf, ID_TIMERLEAVE, 100, 0);
+		SetTimer (hwnd, ID_TIMERLEAVE, 100, 0);
 		TRACE (tooltips, "timer 3 started!\n");
 	    }
 	    break;
@@ -1448,9 +1448,9 @@
 
 
 static LRESULT
-TOOLTIPS_SetDelayTime (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetDelayTime (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     INT nTime = (INT)LOWORD(lParam);
 
     switch (wParam) {
@@ -1487,9 +1487,9 @@
 
 
 static LRESULT
-TOOLTIPS_SetMargin (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetMargin (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPRECT lpRect = (LPRECT)lParam;
 
     infoPtr->rcMargin.left   = lpRect->left;
@@ -1502,9 +1502,9 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_SetMaxTipWidth (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetMaxTipWidth (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     INT nTemp = infoPtr->nMaxTipWidth;
 
     infoPtr->nMaxTipWidth = (INT)lParam;
@@ -1514,9 +1514,9 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_SetTipBkColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetTipBkColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     infoPtr->clrBk = (COLORREF)wParam;
 
@@ -1525,9 +1525,9 @@
 
 
 __inline__ static LRESULT
-TOOLTIPS_SetTipTextColor (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetTipTextColor (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     infoPtr->clrText = (COLORREF)wParam;
 
@@ -1536,9 +1536,9 @@
 
 
 static LRESULT
-TOOLTIPS_SetToolInfoA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetToolInfoA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1590,9 +1590,9 @@
 
 
 static LRESULT
-TOOLTIPS_SetToolInfoW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetToolInfoW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1644,9 +1644,9 @@
 
 
 static LRESULT
-TOOLTIPS_TrackActivate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_TrackActivate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
 
     if (lpToolInfo == NULL)
@@ -1660,12 +1660,12 @@
 	if (infoPtr->nTrackTool != -1) {
 	    TRACE (tooltips, "activated!\n");
 	    infoPtr->bTrackActive = TRUE;
-	    TOOLTIPS_TrackShow (wndPtr, infoPtr);
+	    TOOLTIPS_TrackShow (hwnd, infoPtr);
 	}
     }
     else {
 	/* deactivate */
-	TOOLTIPS_TrackHide (wndPtr, infoPtr);
+	TOOLTIPS_TrackHide (hwnd, infoPtr);
 
 	infoPtr->bTrackActive = FALSE;
 	infoPtr->nTrackTool = -1;
@@ -1678,9 +1678,9 @@
 
 
 static LRESULT
-TOOLTIPS_TrackPosition (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_TrackPosition (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     infoPtr->xTrackPos = (INT)LOWORD(lParam);
     infoPtr->yTrackPos = (INT)HIWORD(lParam);
@@ -1689,7 +1689,7 @@
 	TRACE (tooltips, "[%d %d]\n",
 	       infoPtr->xTrackPos, infoPtr->yTrackPos);
 
-	TOOLTIPS_TrackShow (wndPtr, infoPtr);
+	TOOLTIPS_TrackShow (hwnd, infoPtr);
     }
 
     return 0;
@@ -1697,21 +1697,21 @@
 
 
 static LRESULT
-TOOLTIPS_Update (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Update (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     if (infoPtr->nCurrentTool != -1)
-	UpdateWindow (wndPtr->hwndSelf);
+	UpdateWindow (hwnd);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_UpdateTipTextA (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_UpdateTipTextA (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOA lpToolInfo = (LPTTTOOLINFOA)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1752,18 +1752,18 @@
 
     /* force repaint */
     if (infoPtr->bActive)
-	TOOLTIPS_Show (wndPtr, infoPtr);
+	TOOLTIPS_Show (hwnd, infoPtr);
     else if (infoPtr->bTrackActive)
-	TOOLTIPS_TrackShow (wndPtr, infoPtr);
+	TOOLTIPS_TrackShow (hwnd, infoPtr);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_UpdateTipTextW (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_UpdateTipTextW (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     LPTTTOOLINFOW lpToolInfo = (LPTTTOOLINFOW)lParam;
     TTTOOL_INFO *toolPtr;
     INT nTool;
@@ -1805,16 +1805,16 @@
 
     /* force repaint */
     if (infoPtr->bActive)
-	TOOLTIPS_Show (wndPtr, infoPtr);
+	TOOLTIPS_Show (hwnd, infoPtr);
     else if (infoPtr->bTrackActive)
-	TOOLTIPS_TrackShow (wndPtr, infoPtr);
+	TOOLTIPS_TrackShow (hwnd, infoPtr);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_WindowFromPoint (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_WindowFromPoint (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     return WindowFromPoint (*((LPPOINT)lParam));
 }
@@ -1822,7 +1822,7 @@
 
 
 static LRESULT
-TOOLTIPS_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TOOLTIPS_INFO *infoPtr;
     NONCLIENTMETRICSA nclm;
@@ -1830,12 +1830,7 @@
 
     /* allocate memory for info structure */
     infoPtr = (TOOLTIPS_INFO *)COMCTL32_Alloc (sizeof(TOOLTIPS_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
-
-    if (infoPtr == NULL) {
-	ERR (tooltips, "could not allocate info memory!\n");
-	return 0;
-    }
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
     /* initialize info structure */
     infoPtr->bActive = TRUE;
@@ -1858,9 +1853,8 @@
     infoPtr->nAutoPopTime   = 5000;
     infoPtr->nInitialTime   = 500;
 
-    nResult =
-	(INT) SendMessageA (wndPtr->parent->hwndSelf, WM_NOTIFYFORMAT,
-				(WPARAM)wndPtr->hwndSelf, (LPARAM)NF_QUERY);
+    nResult = (INT) SendMessageA (GetParent (hwnd), WM_NOTIFYFORMAT,
+				  (WPARAM)hwnd, (LPARAM)NF_QUERY);
     if (nResult == NFR_ANSI)
 	FIXME (tooltips, " -- WM_NOTIFYFORMAT returns: NFR_ANSI\n");
     else if (nResult == NFR_UNICODE)
@@ -1868,17 +1862,16 @@
     else
 	FIXME (tooltips, " -- WM_NOTIFYFORMAT returns: error!\n");
 
-    SetWindowPos (wndPtr->hwndSelf, HWND_TOP, 0, 0, 0, 0,
-		    SWP_NOZORDER | SWP_HIDEWINDOW);
+    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOZORDER | SWP_HIDEWINDOW);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     TTTOOL_INFO *toolPtr;
     INT i;
 
@@ -1922,14 +1915,14 @@
 
 
 static LRESULT
-TOOLTIPS_EraseBackground (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_EraseBackground (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     RECT rect;
     HBRUSH hBrush;
 
     hBrush = CreateSolidBrush (infoPtr->clrBk);
-    GetClientRect (wndPtr->hwndSelf, &rect);
+    GetClientRect (hwnd, &rect);
     FillRect ((HDC)wParam, &rect, hBrush);
     DeleteObject (hBrush);
 
@@ -1938,39 +1931,42 @@
 
 
 static LRESULT
-TOOLTIPS_GetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_GetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     return infoPtr->hFont;
 }
 
 
 static LRESULT
-TOOLTIPS_MouseMessage (WND *wndPtr, UINT uMsg, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_MouseMessage (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
-    TOOLTIPS_Hide (wndPtr, infoPtr);
+    TOOLTIPS_Hide (hwnd, infoPtr);
 
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_NCCreate (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_NCCreate (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    wndPtr->dwStyle &= 0x0000FFFF;
-    wndPtr->dwStyle |= (WS_POPUP | WS_BORDER | WS_CLIPSIBLINGS);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+
+    dwStyle &= 0x0000FFFF;
+    dwStyle |= (WS_POPUP | WS_BORDER | WS_CLIPSIBLINGS);
+    SetWindowLongA (hwnd, GWL_STYLE, dwStyle);
 
     return TRUE;
 }
 
 
 static LRESULT
-TOOLTIPS_NCHitTest (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_NCHitTest (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     INT nTool = (infoPtr->bTrackActive) ? infoPtr->nTrackTool : infoPtr->nTool;
 
     TRACE (tooltips, " nTool=%d\n", nTool);
@@ -1982,28 +1978,28 @@
 	}
     }
 
-    return DefWindowProcA (wndPtr->hwndSelf, WM_NCHITTEST, wParam, lParam);
+    return DefWindowProcA (hwnd, WM_NCHITTEST, wParam, lParam);
 }
 
 
 static LRESULT
-TOOLTIPS_Paint (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Paint (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = (wParam == 0) ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    TOOLTIPS_Refresh (wndPtr, hdc);
+    hdc = (wParam == 0) ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    TOOLTIPS_Refresh (hwnd, hdc);
     if (!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-TOOLTIPS_SetFont (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
     infoPtr->hFont = (HFONT)wParam;
 
@@ -2016,30 +2012,30 @@
 
 
 static LRESULT
-TOOLTIPS_Timer (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_Timer (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
 
-    TRACE (tooltips, "timer %d (%x) expired!\n", wParam, wndPtr->hwndSelf);
+    TRACE (tooltips, "timer %d (%x) expired!\n", wParam, hwnd);
 
     switch (wParam)
     {
 	case ID_TIMERSHOW:
-	    KillTimer (wndPtr->hwndSelf, ID_TIMERSHOW);
-	    if (TOOLTIPS_CheckTool (wndPtr, TRUE) == infoPtr->nTool)
-		TOOLTIPS_Show (wndPtr, infoPtr);
+	    KillTimer (hwnd, ID_TIMERSHOW);
+	    if (TOOLTIPS_CheckTool (hwnd, TRUE) == infoPtr->nTool)
+		TOOLTIPS_Show (hwnd, infoPtr);
 	    break;
 
 	case ID_TIMERPOP:
-	    TOOLTIPS_Hide (wndPtr, infoPtr);
+	    TOOLTIPS_Hide (hwnd, infoPtr);
 	    break;
 
 	case ID_TIMERLEAVE:
-	    KillTimer (wndPtr->hwndSelf, ID_TIMERLEAVE);
-	    if (TOOLTIPS_CheckTool (wndPtr, FALSE) == -1) {
+	    KillTimer (hwnd, ID_TIMERLEAVE);
+	    if (TOOLTIPS_CheckTool (hwnd, FALSE) == -1) {
 		infoPtr->nTool = -1;
 		infoPtr->nOldTool = -1;
-		TOOLTIPS_Hide (wndPtr, infoPtr);
+		TOOLTIPS_Hide (hwnd, infoPtr);
 	    }
 	    break;
     }
@@ -2048,9 +2044,9 @@
 
 
 static LRESULT
-TOOLTIPS_WinIniChange (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TOOLTIPS_WinIniChange (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+    TOOLTIPS_INFO *infoPtr = TOOLTIPS_GetInfoPtr (hwnd);
     NONCLIENTMETRICSA nclm;
 
     infoPtr->clrBk   = GetSysColor (COLOR_INFOBK);
@@ -2070,7 +2066,6 @@
 {
     LPTT_SUBCLASS_INFO lpttsi =
 	(LPTT_SUBCLASS_INFO)GetPropA (hwnd, COMCTL32_aSubclass);
-    WND *wndPtr;
     TOOLTIPS_INFO *infoPtr;
     UINT nTool;
 
@@ -2081,22 +2076,17 @@
 	case WM_MBUTTONUP:
 	case WM_RBUTTONDOWN:
 	case WM_RBUTTONUP:
-	    {
-		wndPtr = WIN_FindWndPtr(lpttsi->hwndToolTip);
-		infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+	    infoPtr = TOOLTIPS_GetInfoPtr(lpttsi->hwndToolTip);
 		nTool = TOOLTIPS_GetToolFromMessage (infoPtr, hwnd);
 
 		TRACE (tooltips, "subclassed mouse message %04x\n", uMsg);
 		infoPtr->nOldTool = infoPtr->nTool;
 		infoPtr->nTool = nTool;
-		TOOLTIPS_Hide (wndPtr, infoPtr);
-	    }
+	    TOOLTIPS_Hide (lpttsi->hwndToolTip, infoPtr);
 	    break;
 
 	case WM_MOUSEMOVE:
-	    {
-		wndPtr = WIN_FindWndPtr(lpttsi->hwndToolTip);
-		infoPtr = TOOLTIPS_GetInfoPtr(wndPtr);
+	    infoPtr = TOOLTIPS_GetInfoPtr (lpttsi->hwndToolTip);
 		nTool = TOOLTIPS_GetToolFromMessage (infoPtr, hwnd);
 
 		TRACE (tooltips, "subclassed WM_MOUSEMOVE\n");
@@ -2106,22 +2096,21 @@
 		if ((infoPtr->bActive) &&
 		    (infoPtr->nTool != infoPtr->nOldTool)) {
 		    if (infoPtr->nOldTool == -1) {
-			SetTimer (wndPtr->hwndSelf, ID_TIMERSHOW,
+		    SetTimer (hwnd, ID_TIMERSHOW,
 				    infoPtr->nInitialTime, 0);
 			TRACE (tooltips, "timer 1 started!\n");
 		    }
 		    else {
-			TOOLTIPS_Hide (wndPtr, infoPtr);
-			SetTimer (wndPtr->hwndSelf, ID_TIMERSHOW,
+		    TOOLTIPS_Hide (lpttsi->hwndToolTip, infoPtr);
+		    SetTimer (hwnd, ID_TIMERSHOW,
 				infoPtr->nReshowTime, 0);
 			TRACE (tooltips, "timer 2 started!\n");
 		    }
 		}
 		if (infoPtr->nCurrentTool != -1) {
-		    SetTimer (wndPtr->hwndSelf, ID_TIMERLEAVE, 100, 0);
+		SetTimer (hwnd, ID_TIMERLEAVE, 100, 0);
 		    TRACE (tooltips, "timer 3 started!\n");
 		}
-	    }
 	    break;
     }
 
@@ -2132,136 +2121,134 @@
 LRESULT CALLBACK
 TOOLTIPS_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-    WND *wndPtr = WIN_FindWndPtr(hwnd);
-
     switch (uMsg)
     {
 	case TTM_ACTIVATE:
-	    return TOOLTIPS_Activate (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Activate (hwnd, wParam, lParam);
 
 	case TTM_ADDTOOLA:
-	    return TOOLTIPS_AddToolA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_AddToolA (hwnd, wParam, lParam);
 
 	case TTM_ADDTOOLW:
-	    return TOOLTIPS_AddToolW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_AddToolW (hwnd, wParam, lParam);
 
 	case TTM_DELTOOLA:
-	    return TOOLTIPS_DelToolA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_DelToolA (hwnd, wParam, lParam);
 
 	case TTM_DELTOOLW:
-	    return TOOLTIPS_DelToolW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_DelToolW (hwnd, wParam, lParam);
 
 	case TTM_ENUMTOOLSA:
-	    return TOOLTIPS_EnumToolsA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_EnumToolsA (hwnd, wParam, lParam);
 
 	case TTM_ENUMTOOLSW:
-	    return TOOLTIPS_EnumToolsW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_EnumToolsW (hwnd, wParam, lParam);
 
 	case TTM_GETCURRENTTOOLA:
-	    return TOOLTIPS_GetCurrentToolA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetCurrentToolA (hwnd, wParam, lParam);
 
 	case TTM_GETCURRENTTOOLW:
-	    return TOOLTIPS_GetCurrentToolW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetCurrentToolW (hwnd, wParam, lParam);
 
 	case TTM_GETDELAYTIME:
-	    return TOOLTIPS_GetDelayTime (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetDelayTime (hwnd, wParam, lParam);
 
 	case TTM_GETMARGIN:
-	    return TOOLTIPS_GetMargin (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetMargin (hwnd, wParam, lParam);
 
 	case TTM_GETMAXTIPWIDTH:
-	    return TOOLTIPS_GetMaxTipWidth (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetMaxTipWidth (hwnd, wParam, lParam);
 
 	case TTM_GETTEXTA:
-	    return TOOLTIPS_GetTextA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetTextA (hwnd, wParam, lParam);
 
 	case TTM_GETTEXTW:
-	    return TOOLTIPS_GetTextW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetTextW (hwnd, wParam, lParam);
 
 	case TTM_GETTIPBKCOLOR:
-	    return TOOLTIPS_GetTipBkColor (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetTipBkColor (hwnd, wParam, lParam);
 
 	case TTM_GETTIPTEXTCOLOR:
-	    return TOOLTIPS_GetTipTextColor (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetTipTextColor (hwnd, wParam, lParam);
 
 	case TTM_GETTOOLCOUNT:
-	    return TOOLTIPS_GetToolCount (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetToolCount (hwnd, wParam, lParam);
 
 	case TTM_GETTOOLINFOA:
-	    return TOOLTIPS_GetToolInfoA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetToolInfoA (hwnd, wParam, lParam);
 
 	case TTM_GETTOOLINFOW:
-	    return TOOLTIPS_GetToolInfoW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetToolInfoW (hwnd, wParam, lParam);
 
 	case TTM_HITTESTA:
-	    return TOOLTIPS_HitTestA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_HitTestA (hwnd, wParam, lParam);
 
 	case TTM_HITTESTW:
-	    return TOOLTIPS_HitTestW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_HitTestW (hwnd, wParam, lParam);
 
 	case TTM_NEWTOOLRECTA:
-	    return TOOLTIPS_NewToolRectA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_NewToolRectA (hwnd, wParam, lParam);
 
 	case TTM_NEWTOOLRECTW:
-	    return TOOLTIPS_NewToolRectW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_NewToolRectW (hwnd, wParam, lParam);
 
 	case TTM_POP:
-	    return TOOLTIPS_Pop (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Pop (hwnd, wParam, lParam);
 
 	case TTM_RELAYEVENT:
-	    return TOOLTIPS_RelayEvent (wndPtr, wParam, lParam);
+	    return TOOLTIPS_RelayEvent (hwnd, wParam, lParam);
 
 	case TTM_SETDELAYTIME:
-	    return TOOLTIPS_SetDelayTime (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetDelayTime (hwnd, wParam, lParam);
 
 	case TTM_SETMARGIN:
-	    return TOOLTIPS_SetMargin (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetMargin (hwnd, wParam, lParam);
 
 	case TTM_SETMAXTIPWIDTH:
-	    return TOOLTIPS_SetMaxTipWidth (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetMaxTipWidth (hwnd, wParam, lParam);
 
 	case TTM_SETTIPBKCOLOR:
-	    return TOOLTIPS_SetTipBkColor (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetTipBkColor (hwnd, wParam, lParam);
 
 	case TTM_SETTIPTEXTCOLOR:
-	    return TOOLTIPS_SetTipTextColor (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetTipTextColor (hwnd, wParam, lParam);
 
 	case TTM_SETTOOLINFOA:
-	    return TOOLTIPS_SetToolInfoA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetToolInfoA (hwnd, wParam, lParam);
 
 	case TTM_SETTOOLINFOW:
-	    return TOOLTIPS_SetToolInfoW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetToolInfoW (hwnd, wParam, lParam);
 
 	case TTM_TRACKACTIVATE:
-	    return TOOLTIPS_TrackActivate (wndPtr, wParam, lParam);
+	    return TOOLTIPS_TrackActivate (hwnd, wParam, lParam);
 
 	case TTM_TRACKPOSITION:
-	    return TOOLTIPS_TrackPosition (wndPtr, wParam, lParam);
+	    return TOOLTIPS_TrackPosition (hwnd, wParam, lParam);
 
 	case TTM_UPDATE:
-	    return TOOLTIPS_Update (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Update (hwnd, wParam, lParam);
 
 	case TTM_UPDATETIPTEXTA:
-	    return TOOLTIPS_UpdateTipTextA (wndPtr, wParam, lParam);
+	    return TOOLTIPS_UpdateTipTextA (hwnd, wParam, lParam);
 
 	case TTM_UPDATETIPTEXTW:
-	    return TOOLTIPS_UpdateTipTextW (wndPtr, wParam, lParam);
+	    return TOOLTIPS_UpdateTipTextW (hwnd, wParam, lParam);
 
 	case TTM_WINDOWFROMPOINT:
-	    return TOOLTIPS_WindowFromPoint (wndPtr, wParam, lParam);
+	    return TOOLTIPS_WindowFromPoint (hwnd, wParam, lParam);
 
 
 	case WM_CREATE:
-	    return TOOLTIPS_Create (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return TOOLTIPS_Destroy (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Destroy (hwnd, wParam, lParam);
 
 	case WM_ERASEBKGND:
-	    return TOOLTIPS_EraseBackground (wndPtr, wParam, lParam);
+	    return TOOLTIPS_EraseBackground (hwnd, wParam, lParam);
 
 	case WM_GETFONT:
-	    return TOOLTIPS_GetFont (wndPtr, wParam, lParam);
+	    return TOOLTIPS_GetFont (hwnd, wParam, lParam);
 
 	case WM_LBUTTONDOWN:
 	case WM_LBUTTONUP:
@@ -2270,28 +2257,28 @@
 	case WM_RBUTTONDOWN:
 	case WM_RBUTTONUP:
 	case WM_MOUSEMOVE:
-	    return TOOLTIPS_MouseMessage (wndPtr, uMsg, wParam, lParam);
+	    return TOOLTIPS_MouseMessage (hwnd, uMsg, wParam, lParam);
 
 	case WM_NCCREATE:
-	    return TOOLTIPS_NCCreate (wndPtr, wParam, lParam);
+	    return TOOLTIPS_NCCreate (hwnd, wParam, lParam);
 
 	case WM_NCHITTEST:
-	    return TOOLTIPS_NCHitTest (wndPtr, wParam, lParam);
+	    return TOOLTIPS_NCHitTest (hwnd, wParam, lParam);
 
 /*	case WM_NOTIFYFORMAT: */
-/*	    return TOOLTIPS_NotifyFormat (wndPtr, wParam, lParam); */
+/*	    return TOOLTIPS_NotifyFormat (hwnd, wParam, lParam); */
 
 	case WM_PAINT:
-	    return TOOLTIPS_Paint (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Paint (hwnd, wParam, lParam);
 
 	case WM_SETFONT:
-	    return TOOLTIPS_SetFont (wndPtr, wParam, lParam);
+	    return TOOLTIPS_SetFont (hwnd, wParam, lParam);
 
 	case WM_TIMER:
-	    return TOOLTIPS_Timer (wndPtr, wParam, lParam);
+	    return TOOLTIPS_Timer (hwnd, wParam, lParam);
 
 	case WM_WININICHANGE:
-	    return TOOLTIPS_WinIniChange (wndPtr, wParam, lParam);
+	    return TOOLTIPS_WinIniChange (hwnd, wParam, lParam);
 
 	default:
 	    if (uMsg >= WM_USER)
diff --git a/dlls/comctl32/trackbar.c b/dlls/comctl32/trackbar.c
index 17cb9b7..e331be9 100644
--- a/dlls/comctl32/trackbar.c
+++ b/dlls/comctl32/trackbar.c
@@ -1,7 +1,7 @@
 /*
  * Trackbar control
  *
- * Copyright 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
+ * Copyright 1998, 1999 Eric Kohl <ekohl@abo.rhein-zeitung.de>
  * Copyright 1998,1999 Alex Priem <alexp@sci.kun.nl>
  *
  *
@@ -30,7 +30,7 @@
 #include "debug.h"
 
 
-#define TRACKBAR_GetInfoPtr(wndPtr) ((TRACKBAR_INFO *)wndPtr->wExtra[0])
+#define TRACKBAR_GetInfoPtr(wndPtr) ((TRACKBAR_INFO *)GetWindowLongA (hwnd,0))
 
 
 /* Used by TRACKBAR_Refresh to find out which parts of the control 
@@ -55,7 +55,7 @@
 #define TIC_SELECTIONMARKMIN 	0x100
 #define TIC_SELECTIONMARK		(TIC_SELECTIONMARKMAX | TIC_SELECTIONMARKMIN)
 
-static BOOL TRACKBAR_SendNotify (WND *wndPtr, UINT code);
+static BOOL TRACKBAR_SendNotify (HWND hwnd, UINT code);
 
 void TRACKBAR_RecalculateTics (TRACKBAR_INFO *infoPtr)
 
@@ -108,27 +108,28 @@
 
 
 static VOID
-TRACKBAR_CalcChannel (WND *wndPtr, TRACKBAR_INFO *infoPtr)
+TRACKBAR_CalcChannel (HWND hwnd, TRACKBAR_INFO *infoPtr)
 {
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
     INT cyChannel;
 	RECT lpRect,*channel = & infoPtr->rcChannel;
 
-    GetClientRect (wndPtr->hwndSelf, &lpRect);
+    GetClientRect (hwnd, &lpRect);
 
-    if (wndPtr->dwStyle & TBS_ENABLESELRANGE)
+    if (dwStyle & TBS_ENABLESELRANGE)
 		cyChannel = MAX(infoPtr->uThumbLen - 8, 4);
     else
 		cyChannel = 4;
 
-    if (wndPtr->dwStyle & TBS_VERT) {
+    if (dwStyle & TBS_VERT) {
 		channel->top    = lpRect.top + 8;
 		channel->bottom = lpRect.bottom - 8;
 
-			if (wndPtr->dwStyle & TBS_BOTH) {
+	if (dwStyle & TBS_BOTH) {
 	    		channel->left  = (lpRect.right - cyChannel) / 2;
 	    		channel->right = (lpRect.right + cyChannel) / 2;
 			}
-			else if (wndPtr->dwStyle & TBS_LEFT) {
+			else if (dwStyle & TBS_LEFT) {
 	    			channel->left  = lpRect.left + 10;
 	    			channel->right = channel->left + cyChannel;
 				}
@@ -140,11 +141,11 @@
    	else {
 			channel->left = lpRect.left + 8;
 			channel->right = lpRect.right - 8;
-			if (wndPtr->dwStyle & TBS_BOTH) {
+			if (dwStyle & TBS_BOTH) {
 	    		channel->top		= (lpRect.bottom - cyChannel) / 2;
 	    		channel->bottom 	= (lpRect.bottom + cyChannel) / 2;
 			}
-			else if (wndPtr->dwStyle & TBS_TOP) {
+			else if (dwStyle & TBS_TOP) {
 	    			channel->top    = lpRect.top + 10;
 	    			channel->bottom = channel->top + cyChannel;
 				}
@@ -156,7 +157,7 @@
 }
 
 static VOID
-TRACKBAR_CalcThumb (WND *wndPtr, TRACKBAR_INFO *infoPtr)
+TRACKBAR_CalcThumb (HWND hwnd, TRACKBAR_INFO *infoPtr)
 
 {
 	RECT *thumb;
@@ -164,7 +165,7 @@
 	
 	thumb=&infoPtr->rcThumb;
 	range=infoPtr->nRangeMax - infoPtr->nRangeMin;
-	if (wndPtr->dwStyle & TBS_VERT) {
+	if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_VERT) {
     	width=infoPtr->rcChannel.bottom - infoPtr->rcChannel.top;
 		thumb->left  = infoPtr->rcChannel.left - 1;
 		thumb->right  = infoPtr->rcChannel.left + infoPtr->uThumbLen - 8;
@@ -183,7 +184,7 @@
 }
 
 static VOID
-TRACKBAR_CalcSelection (WND *wndPtr, TRACKBAR_INFO *infoPtr)
+TRACKBAR_CalcSelection (HWND hwnd, TRACKBAR_INFO *infoPtr)
 {
 	RECT *selection;
 	int range, width;
@@ -195,7 +196,7 @@
 	if (range <= 0) 
 		SetRectEmpty (selection);
 	else 
-		if (wndPtr->dwStyle & TBS_VERT) {
+		if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_VERT) {
 			selection->left   = infoPtr->rcChannel.left +
 								(width*infoPtr->nSelMin)/range;
 			selection->right  = infoPtr->rcChannel.left +
@@ -214,17 +215,16 @@
 
 
 static void
-TRACKBAR_QueueRefresh (WND *wndPtr)
-
+TRACKBAR_QueueRefresh (HWND hwnd)
 {
- TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
  TRACE (trackbar,"queued\n");
  if (infoPtr->flags & TB_REFRESH_TIMER_SET) {
-    KillTimer (wndPtr->hwndSelf, TB_REFRESH_TIMER);
+	KillTimer (hwnd, TB_REFRESH_TIMER);
  }
 
- SetTimer (wndPtr->hwndSelf, TB_REFRESH_TIMER, TB_REFRESH_DELAY, 0);
+    SetTimer (hwnd, TB_REFRESH_TIMER, TB_REFRESH_DELAY, 0);
  infoPtr->flags|=TB_REFRESH_TIMER_SET;
 }
 
@@ -365,20 +365,21 @@
 
 
 static VOID
-TRACKBAR_Refresh (WND *wndPtr, HDC hdc)
+TRACKBAR_Refresh (HWND hwnd, HDC hdc)
 {
-	TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+	TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
+	DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
 	RECT rcClient, rcChannel, rcSelection;
 	HBRUSH hBrush = CreateSolidBrush (infoPtr->clrBk);
 	int i;
 
-    GetClientRect (wndPtr->hwndSelf, &rcClient);
+    GetClientRect (hwnd, &rcClient);
 	hBrush = CreateSolidBrush (infoPtr->clrBk);
 	FillRect (hdc, &rcClient, hBrush);
     DeleteObject (hBrush);
 
     if (infoPtr->flags & TB_REFRESH_TIMER_SET) {
-        KillTimer (wndPtr->hwndSelf, TB_REFRESH_TIMER);
+        KillTimer (hwnd, TB_REFRESH_TIMER);
         infoPtr->flags &= ~TB_REFRESH_TIMER_SET;
     }
 
@@ -388,12 +389,12 @@
 	}
 	
 	if (infoPtr->flags & TB_THUMBCHANGED) {
-		TRACKBAR_CalcThumb	(wndPtr, infoPtr);
+		TRACKBAR_CalcThumb	(hwnd, infoPtr);
 		if (infoPtr->flags & TB_THUMBSIZECHANGED) 
-			TRACKBAR_CalcChannel (wndPtr, infoPtr);
+			TRACKBAR_CalcChannel (hwnd, infoPtr);
 	}
 	if (infoPtr->flags & TB_SELECTIONCHANGED)
-		TRACKBAR_CalcSelection (wndPtr, infoPtr);
+		TRACKBAR_CalcSelection (hwnd, infoPtr);
 	infoPtr->flags &= ~ (TB_THUMBCHANGED | TB_SELECTIONCHANGED | TB_DRAGPOSVALID);
 
     /* draw channel */
@@ -402,12 +403,12 @@
     rcSelection= infoPtr->rcSelection;
     DrawEdge (hdc, &rcChannel, EDGE_SUNKEN, BF_RECT | BF_ADJUST);
 
-    if (wndPtr->dwStyle & TBS_ENABLESELRANGE) {		 /* fill the channel */
+    if (dwStyle & TBS_ENABLESELRANGE) {		 /* fill the channel */
 		HBRUSH hbr = CreateSolidBrush (RGB(255,255,255));
 		FillRect (hdc, &rcChannel, hbr);
-		if (((wndPtr->dwStyle & TBS_VERT) && 
+		if (((dwStyle & TBS_VERT) && 
 		    (rcSelection.left!=rcSelection.right)) || 
-		    ((!(wndPtr->dwStyle & TBS_VERT)) && 	
+		    ((!(dwStyle & TBS_VERT)) && 	
 		    (rcSelection.left!=rcSelection.right))) {
 				hbr=CreateSolidBrush (COLOR_HIGHLIGHT); 
 				FillRect (hdc, &rcSelection, hbr);
@@ -418,8 +419,8 @@
 
     /* draw tics */
 
-    if (!(wndPtr->dwStyle & TBS_NOTICKS)) {
-		int ticFlags=wndPtr->dwStyle & 0x0f;
+    if (!(dwStyle & TBS_NOTICKS)) {
+		int ticFlags = dwStyle & 0x0f;
 		COLORREF clrTic=GetSysColor (COLOR_3DDKSHADOW);
 
         for (i=0; i<infoPtr->uNumTics; i++) 
@@ -429,7 +430,7 @@
     	TRACKBAR_DrawTics (infoPtr, hdc, 0, ticFlags | TIC_LEFTEDGE, clrTic);
     	TRACKBAR_DrawTics (infoPtr, hdc, 0, ticFlags | TIC_RIGHTEDGE, clrTic);
           
-		if ((wndPtr->dwStyle & TBS_ENABLESELRANGE) && 
+		if ((dwStyle & TBS_ENABLESELRANGE) && 
 			(rcSelection.left!=rcSelection.right)) {
 			TRACKBAR_DrawTics (infoPtr, hdc, infoPtr->nSelMin, 
 								ticFlags | TIC_SELECTIONMARKMIN, clrTic);
@@ -440,14 +441,14 @@
 
      /* draw thumb */
 
-     if (!(wndPtr->dwStyle & TBS_NOTHUMB)) {
+     if (!(dwStyle & TBS_NOTHUMB)) {
 		
         HBRUSH hbr = CreateSolidBrush (COLOR_BACKGROUND);
 		RECT thumb = infoPtr->rcThumb;
 
 		SelectObject (hdc, hbr);
 		
-		if (wndPtr->dwStyle & TBS_BOTH) {
+		if (dwStyle & TBS_BOTH) {
         	FillRect (hdc, &thumb, hbr);
   			DrawEdge (hdc, &thumb, EDGE_RAISED, BF_TOPLEFT);
 		} else {
@@ -472,7 +473,7 @@
 		points[5].y=points[0].y;
 		Polygon (hdc, points, 6);
 
-		if (wndPtr->dwStyle & TBS_VERT) {
+		if (dwStyle & TBS_VERT) {
                     /*   draw edge  */
 		} else {
 			RECT triangle;	/* for correct shadows of thumb */
@@ -503,13 +504,14 @@
 
 
 static VOID
-TRACKBAR_AlignBuddies (WND *wndPtr, TRACKBAR_INFO *infoPtr)
+TRACKBAR_AlignBuddies (HWND hwnd, TRACKBAR_INFO *infoPtr)
 {
-    HWND hwndParent = GetParent (wndPtr->hwndSelf);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    HWND hwndParent = GetParent (hwnd);
     RECT rcSelf, rcBuddy;
     INT x, y;
 
-    GetWindowRect (wndPtr->hwndSelf, &rcSelf);
+    GetWindowRect (hwnd, &rcSelf);
     MapWindowPoints (HWND_DESKTOP, hwndParent, (LPPOINT)&rcSelf, 2);
 
     /* align buddy left or above */
@@ -517,7 +519,7 @@
 	GetWindowRect (infoPtr->hwndBuddyLA, &rcBuddy);
 	MapWindowPoints (HWND_DESKTOP, hwndParent, (LPPOINT)&rcBuddy, 2);
 
-	if (wndPtr->dwStyle & TBS_VERT) {
+	if (dwStyle & TBS_VERT) {
 	    x = (infoPtr->rcChannel.right + infoPtr->rcChannel.left) / 2 -
 		(rcBuddy.right - rcBuddy.left) / 2 + rcSelf.left;
 	    y = rcSelf.top - (rcBuddy.bottom - rcBuddy.top);
@@ -538,7 +540,7 @@
 	GetWindowRect (infoPtr->hwndBuddyRB, &rcBuddy);
 	MapWindowPoints (HWND_DESKTOP, hwndParent, (LPPOINT)&rcBuddy, 2);
 
-	if (wndPtr->dwStyle & TBS_VERT) {
+	if (dwStyle & TBS_VERT) {
 	    x = (infoPtr->rcChannel.right + infoPtr->rcChannel.left) / 2 -
 		(rcBuddy.right - rcBuddy.left) / 2 + rcSelf.left;
 	    y = rcSelf.bottom;
@@ -555,18 +557,18 @@
 
 
 static LRESULT
-TRACKBAR_ClearSel (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_ClearSel (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->nSelMin = 0;
     infoPtr->nSelMax = 0;
 	infoPtr->flags |=TB_SELECTIONCHANGED;
 
     if ((BOOL)wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+	TRACKBAR_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -574,9 +576,9 @@
 
 
 static LRESULT
-TRACKBAR_ClearTics (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_ClearTics (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     if (infoPtr->tics) {
 		COMCTL32_Free (infoPtr->tics);
@@ -585,9 +587,9 @@
     }
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+	TRACKBAR_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -595,9 +597,9 @@
 
 
 static LRESULT
-TRACKBAR_GetBuddy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetBuddy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     if (wParam)		 /* buddy is left or above */
 		return (LRESULT)infoPtr->hwndBuddyLA;
@@ -608,9 +610,9 @@
 
 
 static LRESULT
-TRACKBAR_GetChannelRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetChannelRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     LPRECT lprc = (LPRECT)lParam;
 
     if (lprc == NULL)
@@ -626,20 +628,20 @@
 
 
 static LRESULT
-TRACKBAR_GetLineSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetLineSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nLineSize;
 }
 
 
 static LRESULT
-TRACKBAR_GetNumTics (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetNumTics (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBS_NOTICKS)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_NOTICKS)
 		return 0;
 
     return infoPtr->uNumTics+2;
@@ -647,18 +649,18 @@
 
 
 static LRESULT
-TRACKBAR_GetPageSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetPageSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nPageSize;
 }
 
 
 static LRESULT
-TRACKBAR_GetPos (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetPos (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nPos;
 }
@@ -667,61 +669,61 @@
 
 
 static LRESULT
-TRACKBAR_GetRangeMax (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetRangeMax (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nRangeMax;
 }
 
 
 static LRESULT
-TRACKBAR_GetRangeMin (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetRangeMin (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nRangeMin;
 }
 
 
 static LRESULT
-TRACKBAR_GetSelEnd (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetSelEnd (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nSelMax;
 }
 
 
 static LRESULT
-TRACKBAR_GetSelStart (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetSelStart (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->nSelMin;
 }
 
 
 static LRESULT
-TRACKBAR_GetThumbLength (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetThumbLength (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     return infoPtr->uThumbLen;
 }
 
 static LRESULT
-TRACKBAR_GetPTics (WND *wndPtr)
+TRACKBAR_GetPTics (HWND hwnd)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     
    return (LRESULT) infoPtr->tics;
 }
 
 static LRESULT
-TRACKBAR_GetThumbRect (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetThumbRect (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     LPRECT lprc = (LPRECT)lParam;
     
     if (lprc == NULL)
@@ -740,10 +742,10 @@
 
 
 static LRESULT
-TRACKBAR_GetTic (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetTic (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
 {
- TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+ TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
  INT iTic;
 
  iTic=(INT) wParam;
@@ -756,10 +758,9 @@
 
 
 static LRESULT
-TRACKBAR_GetTicPos (WND *wndPtr, WPARAM wParam, LPARAM lParam)
-
+TRACKBAR_GetTicPos (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
- TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+ TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
  INT iTic, range, width, pos;
  
 
@@ -776,11 +777,11 @@
 }
 
 static LRESULT
-TRACKBAR_GetToolTips (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_GetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
-    if (wndPtr->dwStyle & TBS_TOOLTIPS)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_TOOLTIPS)
 		return (LRESULT)infoPtr->hwndToolTip;
     return 0;
 }
@@ -790,9 +791,9 @@
 
 
 static LRESULT
-TRACKBAR_SetBuddy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetBuddy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     HWND hwndTemp;
 
     if (wParam) {
@@ -810,16 +811,16 @@
 		FIXME (trackbar, "move buddy!\n");
     }
 
-    TRACKBAR_AlignBuddies (wndPtr, infoPtr);
+    TRACKBAR_AlignBuddies (hwnd, infoPtr);
 
     return (LRESULT)hwndTemp;
 }
 
 
 static LRESULT
-TRACKBAR_SetLineSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetLineSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     INT nTemp = infoPtr->nLineSize;
 
     infoPtr->nLineSize = (INT)lParam;
@@ -829,9 +830,9 @@
 
 
 static LRESULT
-TRACKBAR_SetPageSize (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetPageSize (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     INT nTemp = infoPtr->nPageSize;
 
     infoPtr->nPageSize = (INT)lParam;
@@ -841,9 +842,9 @@
 
 
 static LRESULT
-TRACKBAR_SetPos (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetPos (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->nPos = (INT)HIWORD(lParam);
 
@@ -855,9 +856,9 @@
 	infoPtr->flags |=TB_THUMBPOSCHANGED;
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HDC hdc = GetDC (hwnd);
+		TRACKBAR_Refresh (hwnd, hdc);
+		ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -865,9 +866,9 @@
 
 
 static LRESULT
-TRACKBAR_SetRange (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetRange (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     infoPtr->nRangeMin = (INT)LOWORD(lParam);
     infoPtr->nRangeMax = (INT)HIWORD(lParam);
 
@@ -885,9 +886,9 @@
 	TRACKBAR_RecalculateTics (infoPtr);
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HDC hdc = GetDC (hwnd);
+		TRACKBAR_Refresh (hwnd, hdc);
+		ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -895,9 +896,9 @@
 
 
 static LRESULT
-TRACKBAR_SetRangeMax (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetRangeMax (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->nRangeMax = (INT)lParam;
     if (infoPtr->nPos > infoPtr->nRangeMax) {
@@ -909,9 +910,9 @@
 	TRACKBAR_RecalculateTics (infoPtr);
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HDC hdc = GetDC (hwnd);
+		TRACKBAR_Refresh (hwnd, hdc);
+		ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -919,9 +920,9 @@
 
 
 static LRESULT
-TRACKBAR_SetRangeMin (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetRangeMin (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->nRangeMin = (INT)lParam;
     if (infoPtr->nPos < infoPtr->nRangeMin) {
@@ -933,42 +934,43 @@
 	TRACKBAR_RecalculateTics (infoPtr);
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+		HDC hdc = GetDC (hwnd);
+		TRACKBAR_Refresh (hwnd, hdc);
+		ReleaseDC (hwnd, hdc);
     }
 
     return 0;
 }
 
 static LRESULT
-TRACKBAR_SetTicFreq (WND *wndPtr, WPARAM wParam)
+TRACKBAR_SetTicFreq (HWND hwnd, WPARAM wParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 	HDC hdc;
 	
-    if (wndPtr->dwStyle & TBS_AUTOTICKS) 
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_AUTOTICKS)
            	infoPtr->uTicFreq=(UINT) wParam; 
 	
 	TRACKBAR_RecalculateTics (infoPtr);
 
-	hdc = GetDC (wndPtr->hwndSelf);
-    TRACKBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TRACKBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
+
 	return 0;
 }   
 
 
 static LRESULT
-TRACKBAR_SetSel (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetSel (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->nSelMin = (INT)LOWORD(lParam);
     infoPtr->nSelMax = (INT)HIWORD(lParam);
 	infoPtr->flags |=TB_SELECTIONCHANGED;
 
-    if (!wndPtr->dwStyle & TBS_ENABLESELRANGE)
+    if (!GetWindowLongA (hwnd, GWL_STYLE) & TBS_ENABLESELRANGE)
 		return 0;
 
     if (infoPtr->nSelMin < infoPtr->nRangeMin)
@@ -977,9 +979,9 @@
 		infoPtr->nSelMax = infoPtr->nRangeMax;
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+	TRACKBAR_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -987,11 +989,11 @@
 
 
 static LRESULT
-TRACKBAR_SetSelEnd (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetSelEnd (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
-    if (!wndPtr->dwStyle & TBS_ENABLESELRANGE)
+    if (!GetWindowLongA (hwnd, GWL_STYLE) & TBS_ENABLESELRANGE)
 	return 0;
 
     infoPtr->nSelMax = (INT)lParam;
@@ -1001,9 +1003,9 @@
 		infoPtr->nSelMax = infoPtr->nRangeMax;
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+	TRACKBAR_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -1011,22 +1013,23 @@
 
 
 static LRESULT
-TRACKBAR_SetSelStart (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetSelStart (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
-    if (!wndPtr->dwStyle & TBS_ENABLESELRANGE)
+    if (!GetWindowLongA (hwnd, GWL_STYLE) & TBS_ENABLESELRANGE)
 	return 0;
 
     infoPtr->nSelMin = (INT)lParam;
 	infoPtr->flags  |=TB_SELECTIONCHANGED;
+
     if (infoPtr->nSelMin < infoPtr->nRangeMin)
 		infoPtr->nSelMin = infoPtr->nRangeMin;
 
     if (wParam) {
-		HDC hdc = GetDC (wndPtr->hwndSelf);
-		TRACKBAR_Refresh (wndPtr, hdc);
-		ReleaseDC (wndPtr->hwndSelf, hdc);
+	HDC hdc = GetDC (hwnd);
+	TRACKBAR_Refresh (hwnd, hdc);
+	ReleaseDC (hwnd, hdc);
     }
 
     return 0;
@@ -1034,27 +1037,28 @@
 
 
 static LRESULT
-TRACKBAR_SetThumbLength (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetThumbLength (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 	HDC hdc;
 
-    if (wndPtr->dwStyle & TBS_FIXEDLENGTH)
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_FIXEDLENGTH)
 		infoPtr->uThumbLen = (UINT)wParam;
 
-	hdc = GetDC (wndPtr->hwndSelf);
 	infoPtr->flags |=TB_THUMBSIZECHANGED;
-	TRACKBAR_Refresh (wndPtr, hdc);
-	ReleaseDC (wndPtr->hwndSelf, hdc);
+
+    hdc = GetDC (hwnd);
+    TRACKBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 	
     return 0;
 }
 
 
 static LRESULT
-TRACKBAR_SetTic (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetTic (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     INT nPos = (INT)lParam;
 	HDC hdc;
 
@@ -1066,9 +1070,9 @@
                            (infoPtr->uNumTics)*sizeof (DWORD));
     infoPtr->tics[infoPtr->uNumTics-1]=nPos;
 
- 	hdc = GetDC (wndPtr->hwndSelf);
-    TRACKBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TRACKBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return TRUE;
 }
@@ -1077,9 +1081,9 @@
 
 
 static LRESULT
-TRACKBAR_SetTipSide (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetTipSide (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     INT fTemp = infoPtr->fLocation;
 
     infoPtr->fLocation = (INT)wParam;
@@ -1089,9 +1093,9 @@
 
 
 static LRESULT
-TRACKBAR_SetToolTips (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetToolTips (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->hwndToolTip = (HWND)wParam;
 
@@ -1103,14 +1107,14 @@
 
 
 static LRESULT
-TRACKBAR_InitializeThumb (WND *wndPtr)
+TRACKBAR_InitializeThumb (HWND hwnd)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
     infoPtr->uThumbLen = 23;   /* initial thumb length */
 
-	TRACKBAR_CalcChannel (wndPtr,infoPtr);
-	TRACKBAR_CalcThumb (wndPtr, infoPtr);
+	TRACKBAR_CalcChannel (hwnd,infoPtr);
+	TRACKBAR_CalcThumb (hwnd, infoPtr);
 	infoPtr->flags &= ~TB_SELECTIONCHANGED;
 
 	return 0;
@@ -1118,15 +1122,15 @@
 
 
 static LRESULT
-TRACKBAR_Create (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_Create (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
     TRACKBAR_INFO *infoPtr;
 
     infoPtr = (TRACKBAR_INFO *)COMCTL32_Alloc (sizeof(TRACKBAR_INFO));
-    wndPtr->wExtra[0] = (DWORD)infoPtr;
+    SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
 
-
-    infoPtr->nRangeMin = 0;			 /* default values */
+    /* set default values */
+    infoPtr->nRangeMin = 0;
     infoPtr->nRangeMax = 100;
     infoPtr->nLineSize = 1;
     infoPtr->nPageSize = 20;
@@ -1138,54 +1142,55 @@
 	infoPtr->uTicFreq  = 1;
 	infoPtr->tics	   = NULL;
 	infoPtr->clrBk	   = GetSysColor (COLOR_BACKGROUND);
-	infoPtr->hwndNotify = GetParent (wndPtr->hwndSelf);
+    infoPtr->hwndNotify = GetParent (hwnd);
 
-	TRACKBAR_InitializeThumb (wndPtr);
+    TRACKBAR_InitializeThumb (hwnd);
 
-	 if (wndPtr->dwStyle & TBS_TOOLTIPS) { /* Create tooltip control */
+    /* Create tooltip control */
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_TOOLTIPS) {
 		TTTOOLINFOA ti;
 
     	infoPtr->hwndToolTip =
         	CreateWindowExA (0, TOOLTIPS_CLASSA, NULL, 0,
                    CW_USEDEFAULT, CW_USEDEFAULT,
                    CW_USEDEFAULT, CW_USEDEFAULT,
-                   wndPtr->hwndSelf, 0, 0, 0);
+                   hwnd, 0, 0, 0);
 
     /* Send NM_TOOLTIPSCREATED notification */
     	if (infoPtr->hwndToolTip) {
         	NMTOOLTIPSCREATED nmttc;
 
-        	nmttc.hdr.hwndFrom = wndPtr->hwndSelf;
-        	nmttc.hdr.idFrom = wndPtr->wIDmenu;
+        	nmttc.hdr.hwndFrom = hwnd;
+        	nmttc.hdr.idFrom   = GetWindowLongA (hwnd, GWL_ID);
         	nmttc.hdr.code = NM_TOOLTIPSCREATED;
         	nmttc.hwndToolTips = infoPtr->hwndToolTip;
 
-        	SendMessageA (GetParent (wndPtr->hwndSelf), WM_NOTIFY,
-                (WPARAM)wndPtr->wIDmenu, (LPARAM)&nmttc);
+        	SendMessageA (GetParent (hwnd), WM_NOTIFY,
+                (WPARAM)nmttc.hdr.idFrom, (LPARAM)&nmttc);
     	}
 
 		ZeroMemory (&ti, sizeof(TTTOOLINFOA));
 	 	ti.cbSize   = sizeof(TTTOOLINFOA);
      	ti.uFlags   = TTF_IDISHWND | TTF_TRACK;
-     	ti.hwnd     = wndPtr->hwndSelf;
+	ti.hwnd     = hwnd;
         ti.uId      = 0;
         ti.lpszText = "Test"; /* LPSTR_TEXTCALLBACK */
         SetRectEmpty (&ti.rect);
 
         SendMessageA (infoPtr->hwndToolTip, TTM_ADDTOOLA, 0, (LPARAM)&ti);
-
 	}
+
     return 0;
 }
 
 
 static LRESULT
-TRACKBAR_Destroy (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
 	if (infoPtr->flags & TB_REFRESH_TIMER_SET) 
-        KillTimer (wndPtr->hwndSelf, TB_REFRESH_TIMER);
+	KillTimer (hwnd, TB_REFRESH_TIMER);
 
 	 /* delete tooltip control */
     if (infoPtr->hwndToolTip)
@@ -1197,30 +1202,32 @@
 
 
 static LRESULT
-TRACKBAR_KillFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_KillFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
 	TRACE (trackbar,"\n");
 
     infoPtr->bFocus = FALSE;
 	infoPtr->flags &= ~TB_DRAG_MODE;
-    TRACKBAR_QueueRefresh (wndPtr);
-    InvalidateRect (wndPtr->hwndSelf, NULL, TRUE);
+
+    TRACKBAR_QueueRefresh (hwnd);
+    InvalidateRect (hwnd, NULL, TRUE);
 
     return 0;
 }
 
 
 static LRESULT
-TRACKBAR_LButtonDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_LButtonDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
 	int clickPlace,prevPos,clickPos,vertical;
 	
-    SetFocus (wndPtr->hwndSelf);
+    SetFocus (hwnd);
 
-	vertical=wndPtr->dwStyle & TBS_VERT;
+	vertical = dwStyle & TBS_VERT;
 	if (vertical)
 		clickPlace=(INT)HIWORD(lParam);
 	else
@@ -1233,7 +1240,7 @@
 	   (clickPlace>infoPtr->rcThumb.left) && 
 		(clickPlace<infoPtr->rcThumb.right))) {
 		infoPtr->flags |= TB_DRAG_MODE;
-	 	if (wndPtr->dwStyle & TBS_TOOLTIPS) {  /* enable tooltip */
+	 	if (dwStyle & TBS_TOOLTIPS) {  /* enable tooltip */
         	TTTOOLINFOA ti;
         	POINT pt;
 
@@ -1243,10 +1250,10 @@
 
         	ti.cbSize   = sizeof(TTTOOLINFOA);
         	ti.uId      = 0;
-        	ti.hwnd     = (UINT)wndPtr->hwndSelf;
+        	ti.hwnd     = (UINT)hwnd;
 
         	infoPtr->flags |= TB_SHOW_TOOLTIP;
-        	SetCapture (wndPtr->hwndSelf);
+        	SetCapture (hwnd);
         	SendMessageA (infoPtr->hwndToolTip, TTM_TRACKACTIVATE, 
 						(WPARAM)TRUE, (LPARAM)&ti);
 	 	}
@@ -1260,38 +1267,38 @@
 		infoPtr->nPos += infoPtr->nPageSize;
         if (infoPtr->nPos > infoPtr->nRangeMax)
 			infoPtr->nPos = infoPtr->nRangeMax;
-		TRACKBAR_SendNotify (wndPtr, TB_PAGEUP);  
+		TRACKBAR_SendNotify (hwnd, TB_PAGEUP);  
 	} else {
         infoPtr->nPos -= infoPtr->nPageSize;	/* similar to VK_PRIOR */
         if (infoPtr->nPos < infoPtr->nRangeMin)
             infoPtr->nPos = infoPtr->nRangeMin;
-        TRACKBAR_SendNotify (wndPtr, TB_PAGEDOWN);
+        TRACKBAR_SendNotify (hwnd, TB_PAGEDOWN);
 	}
 	
 	if (prevPos!=infoPtr->nPos) {
 		infoPtr->flags |=TB_THUMBPOSCHANGED;
-    	TRACKBAR_QueueRefresh (wndPtr);
+    	TRACKBAR_QueueRefresh (hwnd);
  	}
 	
     return 0;
 }
 
 static LRESULT
-TRACKBAR_LButtonUp (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_LButtonUp (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
- 	TRACKBAR_QueueRefresh (wndPtr);
-	TRACKBAR_SendNotify (wndPtr, TB_ENDTRACK);
+ 	TRACKBAR_QueueRefresh (hwnd);
+	TRACKBAR_SendNotify (hwnd, TB_ENDTRACK);
 
 	infoPtr->flags &= ~TB_DRAG_MODE;
 
-    if (wndPtr->dwStyle & TBS_TOOLTIPS) {  /* disable tooltip */
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_TOOLTIPS) {  /* disable tooltip */
     	TTTOOLINFOA ti;
 
         ti.cbSize   = sizeof(TTTOOLINFOA);
         ti.uId      = 0;
-        ti.hwnd     = (UINT)wndPtr->hwndSelf;
+        ti.hwnd     = (UINT)hwnd;
 
         infoPtr->flags &= ~TB_SHOW_TOOLTIP;
         ReleaseCapture ();
@@ -1303,59 +1310,59 @@
 }
 
 static LRESULT
-TRACKBAR_CaptureChanged (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_CaptureChanged (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 	
 	if (infoPtr->flags & TB_DRAGPOSVALID) {
 		infoPtr->nPos=infoPtr->dragPos;
-		TRACKBAR_QueueRefresh (wndPtr);
+		TRACKBAR_QueueRefresh (hwnd);
 	}
 	
 	infoPtr->flags &= ~ TB_DRAGPOSVALID;
 
-	TRACKBAR_SendNotify (wndPtr, TB_ENDTRACK);
+	TRACKBAR_SendNotify (hwnd, TB_ENDTRACK);
 	return 0;
 }
 
 static LRESULT
-TRACKBAR_Paint (WND *wndPtr, WPARAM wParam)
+TRACKBAR_Paint (HWND hwnd, WPARAM wParam)
 {
     HDC hdc;
     PAINTSTRUCT ps;
 
-    hdc = wParam==0 ? BeginPaint (wndPtr->hwndSelf, &ps) : (HDC)wParam;
-    TRACKBAR_Refresh (wndPtr, hdc);
+    hdc = wParam==0 ? BeginPaint (hwnd, &ps) : (HDC)wParam;
+    TRACKBAR_Refresh (hwnd, hdc);
     if(!wParam)
-	EndPaint (wndPtr->hwndSelf, &ps);
+	EndPaint (hwnd, &ps);
     return 0;
 }
 
 
 static LRESULT
-TRACKBAR_SetFocus (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_SetFocus (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
     HDC hdc;
 
 	TRACE (trackbar,"\n");
     infoPtr->bFocus = TRUE;
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TRACKBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TRACKBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
     return 0;
 }
 
 
 static LRESULT
-TRACKBAR_Size (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_Size (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 
-    TRACKBAR_CalcChannel (wndPtr, infoPtr);
-    TRACKBAR_AlignBuddies (wndPtr, infoPtr);
+    TRACKBAR_CalcChannel (hwnd, infoPtr);
+    TRACKBAR_AlignBuddies (hwnd, infoPtr);
 
     return 0;
 }
@@ -1363,54 +1370,55 @@
 
 
 static BOOL
-TRACKBAR_SendNotify (WND *wndPtr, UINT code)
+TRACKBAR_SendNotify (HWND hwnd, UINT code)
 
 {
     TRACE (trackbar, "%x\n",code);
-	if (wndPtr->dwStyle & TBS_VERT) 
-    	return (BOOL) SendMessageA (GetParent (wndPtr->hwndSelf), 
-						WM_VSCROLL, (WPARAM)code, (LPARAM) wndPtr->hwndSelf);
 
-   	return (BOOL) SendMessageA (GetParent (wndPtr->hwndSelf), 
-						WM_HSCROLL, (WPARAM)code, (LPARAM) wndPtr->hwndSelf);
-	return 0;
+    if (GetWindowLongA (hwnd, GWL_STYLE) & TBS_VERT) 
+    	return (BOOL) SendMessageA (GetParent (hwnd), 
+						WM_VSCROLL, (WPARAM)code, (LPARAM)hwnd);
+
+    return (BOOL) SendMessageA (GetParent (hwnd), 
+						WM_HSCROLL, (WPARAM)code, (LPARAM)hwnd);
 }
 
 static LRESULT
-TRACKBAR_MouseMove (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_MouseMove (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
-	INT clickPlace,vertical;
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
+    DWORD dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
+    INT clickPlace;
 	HDC hdc;
 	char buf[80];
 			
     TRACE (trackbar, "%x\n",wParam);
 
-	vertical=wndPtr->dwStyle & TBS_VERT;
-	if (vertical)
+    if (dwStyle & TBS_VERT)
 		clickPlace=(INT)HIWORD(lParam);
 	else
 		clickPlace=(INT)LOWORD(lParam);
 
-	if (!(infoPtr->flags & TB_DRAG_MODE)) return TRUE;
+    if (!(infoPtr->flags & TB_DRAG_MODE))
+	return TRUE;
 
-	infoPtr->dragPos=TRACKBAR_ConvertPlaceToPosition (infoPtr, clickPlace, vertical);
+    infoPtr->dragPos = TRACKBAR_ConvertPlaceToPosition (infoPtr, clickPlace, dwStyle & TBS_VERT);
 	infoPtr->flags|= TB_DRAGPOSVALID;
-	TRACKBAR_SendNotify (wndPtr, TB_THUMBTRACK | (infoPtr->nPos>>16));
+    TRACKBAR_SendNotify (hwnd, TB_THUMBTRACK | (infoPtr->nPos>>16));
 
     if (infoPtr->flags & TB_SHOW_TOOLTIP) {
 		POINT pt;
     	TTTOOLINFOA ti;
 	
     	ti.cbSize = sizeof(TTTOOLINFOA);
-    	ti.hwnd = wndPtr->hwndSelf;
+	ti.hwnd = hwnd;
     	ti.uId = 0;
 		ti.hinst=0;
 		sprintf (buf,"%d",infoPtr->nPos);
     	ti.lpszText = (LPSTR) buf;
 		GetCursorPos (&pt);
 		
-		if (vertical) {
+	if (dwStyle & TBS_VERT) {
         	SendMessageA (infoPtr->hwndToolTip, TTM_TRACKPOSITION, 
 							0, (LPARAM)MAKELPARAM(pt.x+5, pt.y+15));
 		} else {
@@ -1421,18 +1429,18 @@
             0, (LPARAM)&ti);
 	}
 
-    hdc = GetDC (wndPtr->hwndSelf);
-    TRACKBAR_Refresh (wndPtr, hdc);
-    ReleaseDC (wndPtr->hwndSelf, hdc);
+    hdc = GetDC (hwnd);
+    TRACKBAR_Refresh (hwnd, hdc);
+    ReleaseDC (hwnd, hdc);
 
  	return TRUE;
 }
 
 
 static LRESULT
-TRACKBAR_KeyDown (WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_KeyDown (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
-    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+    TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
 	INT pos;
 
     TRACE (trackbar, "%x\n",wParam);
@@ -1445,7 +1453,7 @@
 			infoPtr->nPos -= infoPtr->nLineSize;
 			if (infoPtr->nPos < infoPtr->nRangeMin) 
 				infoPtr->nPos = infoPtr->nRangeMin;
-			TRACKBAR_SendNotify (wndPtr, TB_LINEUP);
+			TRACKBAR_SendNotify (hwnd, TB_LINEUP);
 			break;
 		case VK_RIGHT:
 		case VK_DOWN: 
@@ -1453,44 +1461,44 @@
 			infoPtr->nPos += infoPtr->nLineSize;
 			if (infoPtr->nPos > infoPtr->nRangeMax) 
 				infoPtr->nPos = infoPtr->nRangeMax;
-			TRACKBAR_SendNotify (wndPtr, TB_LINEDOWN);
+			TRACKBAR_SendNotify (hwnd, TB_LINEDOWN);
             break;
 		case VK_NEXT:
 			if (infoPtr->nPos == infoPtr->nRangeMax) return FALSE;
 			infoPtr->nPos += infoPtr->nPageSize;
 			if (infoPtr->nPos > infoPtr->nRangeMax) 
 				infoPtr->nPos = infoPtr->nRangeMax;
-			 TRACKBAR_SendNotify (wndPtr, TB_PAGEUP);
+			 TRACKBAR_SendNotify (hwnd, TB_PAGEUP);
             break;
 		case VK_PRIOR:
 			if (infoPtr->nPos == infoPtr->nRangeMin) return FALSE;
 			infoPtr->nPos -= infoPtr->nPageSize;
 			if (infoPtr->nPos < infoPtr->nRangeMin) 
 				infoPtr->nPos = infoPtr->nRangeMin;
-			TRACKBAR_SendNotify (wndPtr, TB_PAGEDOWN);
+			TRACKBAR_SendNotify (hwnd, TB_PAGEDOWN);
             break;
 		case VK_HOME: 
 			if (infoPtr->nPos == infoPtr->nRangeMin) return FALSE;
 			infoPtr->nPos = infoPtr->nRangeMin;
-			TRACKBAR_SendNotify (wndPtr, TB_TOP);
+			TRACKBAR_SendNotify (hwnd, TB_TOP);
             break;
 		case VK_END: 
 			if (infoPtr->nPos == infoPtr->nRangeMax) return FALSE;
 			infoPtr->nPos = infoPtr->nRangeMax;
-	 		TRACKBAR_SendNotify (wndPtr, TB_BOTTOM);
+	 		TRACKBAR_SendNotify (hwnd, TB_BOTTOM);
             break;
 	}
 
  if (pos!=infoPtr->nPos) { 
 	infoPtr->flags |=TB_THUMBPOSCHANGED;
-	TRACKBAR_QueueRefresh (wndPtr);
+	TRACKBAR_QueueRefresh (hwnd);
  }
 
  return TRUE;
 }
 
 static LRESULT
-TRACKBAR_KeyUp (WND *wndPtr, WPARAM wParam)
+TRACKBAR_KeyUp (HWND hwnd, WPARAM wParam)
 {
 	switch (wParam) {
 		case VK_LEFT:
@@ -1500,31 +1508,32 @@
 		case VK_NEXT:
 		case VK_PRIOR:
 		case VK_HOME: 
-		case VK_END: 	TRACKBAR_SendNotify (wndPtr, TB_ENDTRACK);
+	case VK_END:
+	    TRACKBAR_SendNotify (hwnd, TB_ENDTRACK);
 	}
  return TRUE;
 }
 
 
 static LRESULT 
-TRACKBAR_HandleTimer ( WND *wndPtr, WPARAM wParam, LPARAM lParam)
+TRACKBAR_HandleTimer (HWND hwnd, WPARAM wParam, LPARAM lParam)
 {
- TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr(wndPtr);
+ TRACKBAR_INFO *infoPtr = TRACKBAR_GetInfoPtr (hwnd);
  HDC hdc;
 
  TRACE (trackbar,"timer\n");
 
  switch (wParam) {
 	case TB_REFRESH_TIMER: 
-		KillTimer (wndPtr->hwndSelf, TB_REFRESH_TIMER );
+		KillTimer (hwnd, TB_REFRESH_TIMER );
 		if (infoPtr->flags & TB_DRAGPOSVALID)  {
 			infoPtr->nPos=infoPtr->dragPos;
 			infoPtr->flags |= TB_THUMBPOSCHANGED;
 		}
 		infoPtr->flags &= ~ (TB_REFRESH_TIMER_SET | TB_DRAGPOSVALID);
-        hdc=GetDC (wndPtr->hwndSelf);
-        TRACKBAR_Refresh (wndPtr, hdc);
-        ReleaseDC (wndPtr->hwndSelf, hdc);
+        hdc=GetDC (hwnd);
+        TRACKBAR_Refresh (hwnd, hdc);
+        ReleaseDC (hwnd, hdc);
 		return 0;
 	}
  return 1;
@@ -1534,125 +1543,120 @@
 LRESULT WINAPI
 TRACKBAR_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-     WND *wndPtr = WIN_FindWndPtr(hwnd);
-
-/*	TRACE (trackbar, "msg %04x wp=%08x lp=%08lx\n", uMsg, wParam, lParam); */
-
     switch (uMsg)
     {
 	case TBM_CLEARSEL:
-	    return TRACKBAR_ClearSel (wndPtr, wParam, lParam);
+	    return TRACKBAR_ClearSel (hwnd, wParam, lParam);
 
 	case TBM_CLEARTICS:
-	    return TRACKBAR_ClearTics (wndPtr, wParam, lParam);
+	    return TRACKBAR_ClearTics (hwnd, wParam, lParam);
 
 	case TBM_GETBUDDY:
-	    return TRACKBAR_GetBuddy (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetBuddy (hwnd, wParam, lParam);
 
 	case TBM_GETCHANNELRECT:
-	    return TRACKBAR_GetChannelRect (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetChannelRect (hwnd, wParam, lParam);
 
 	case TBM_GETLINESIZE:
-	    return TRACKBAR_GetLineSize (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetLineSize (hwnd, wParam, lParam);
 
 	case TBM_GETNUMTICS:
-	    return TRACKBAR_GetNumTics (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetNumTics (hwnd, wParam, lParam);
 
 	case TBM_GETPAGESIZE:
-	    return TRACKBAR_GetPageSize (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetPageSize (hwnd, wParam, lParam);
 
 	case TBM_GETPOS:
-	    return TRACKBAR_GetPos (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetPos (hwnd, wParam, lParam);
 
 	case TBM_GETPTICS:
-		 return TRACKBAR_GetPTics (wndPtr);
+		 return TRACKBAR_GetPTics (hwnd);
 
 	case TBM_GETRANGEMAX:
-	    return TRACKBAR_GetRangeMax (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetRangeMax (hwnd, wParam, lParam);
 
 	case TBM_GETRANGEMIN:
-	    return TRACKBAR_GetRangeMin (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetRangeMin (hwnd, wParam, lParam);
 
 	case TBM_GETSELEND:
-	    return TRACKBAR_GetSelEnd (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetSelEnd (hwnd, wParam, lParam);
 
 	case TBM_GETSELSTART:
-	    return TRACKBAR_GetSelStart (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetSelStart (hwnd, wParam, lParam);
 
 	case TBM_GETTHUMBLENGTH:
-	    return TRACKBAR_GetThumbLength (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetThumbLength (hwnd, wParam, lParam);
 
 	case TBM_GETTHUMBRECT:
-        return TRACKBAR_GetThumbRect (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetThumbRect (hwnd, wParam, lParam);
 
     case TBM_GETTIC:
-        return TRACKBAR_GetTic (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetTic (hwnd, wParam, lParam);
  
     case TBM_GETTICPOS:
-        return TRACKBAR_GetTicPos (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetTicPos (hwnd, wParam, lParam);
  
 	case TBM_GETTOOLTIPS:
-	    return TRACKBAR_GetToolTips (wndPtr, wParam, lParam);
+	    return TRACKBAR_GetToolTips (hwnd, wParam, lParam);
 
 /*	case TBM_GETUNICODEFORMAT: */
 
 	case TBM_SETBUDDY:
-	    return TRACKBAR_SetBuddy (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetBuddy (hwnd, wParam, lParam);
 
 	case TBM_SETLINESIZE:
-	    return TRACKBAR_SetLineSize (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetLineSize (hwnd, wParam, lParam);
 
 	case TBM_SETPAGESIZE:
-	    return TRACKBAR_SetPageSize (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetPageSize (hwnd, wParam, lParam);
 
 	case TBM_SETPOS:
-	    return TRACKBAR_SetPos (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetPos (hwnd, wParam, lParam);
 
 	case TBM_SETRANGE:
-	    return TRACKBAR_SetRange (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetRange (hwnd, wParam, lParam);
 
 	case TBM_SETRANGEMAX:
-	    return TRACKBAR_SetRangeMax (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetRangeMax (hwnd, wParam, lParam);
 
 	case TBM_SETRANGEMIN:
-	    return TRACKBAR_SetRangeMin (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetRangeMin (hwnd, wParam, lParam);
 
 	case TBM_SETSEL:
-	    return TRACKBAR_SetSel (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetSel (hwnd, wParam, lParam);
 
 	case TBM_SETSELEND:
-	    return TRACKBAR_SetSelEnd (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetSelEnd (hwnd, wParam, lParam);
 
 	case TBM_SETSELSTART:
-	    return TRACKBAR_SetSelStart (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetSelStart (hwnd, wParam, lParam);
 
 	case TBM_SETTHUMBLENGTH:
-	    return TRACKBAR_SetThumbLength (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetThumbLength (hwnd, wParam, lParam);
 
 	case TBM_SETTIC:
-	    return TRACKBAR_SetTic (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetTic (hwnd, wParam, lParam);
 
     case TBM_SETTICFREQ:
-       return TRACKBAR_SetTicFreq (wndPtr, wParam);
-
+	    return TRACKBAR_SetTicFreq (hwnd, wParam);
 
 	case TBM_SETTIPSIDE:
-	    return TRACKBAR_SetTipSide (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetTipSide (hwnd, wParam, lParam);
 
 	case TBM_SETTOOLTIPS:
-	    return TRACKBAR_SetToolTips (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetToolTips (hwnd, wParam, lParam);
 
 /*	case TBM_SETUNICODEFORMAT: */
 
 
 	case WM_CAPTURECHANGED:
-	    return TRACKBAR_CaptureChanged (wndPtr, wParam, lParam);
+	    return TRACKBAR_CaptureChanged (hwnd, wParam, lParam);
 
 	case WM_CREATE:
-	    return TRACKBAR_Create (wndPtr, wParam, lParam);
+	    return TRACKBAR_Create (hwnd, wParam, lParam);
 
 	case WM_DESTROY:
-	    return TRACKBAR_Destroy (wndPtr, wParam, lParam);
+	    return TRACKBAR_Destroy (hwnd, wParam, lParam);
 
 /*	case WM_ENABLE: */
 
@@ -1663,37 +1667,37 @@
 	    return DLGC_WANTARROWS;
 
  	case WM_KEYDOWN:
-       return TRACKBAR_KeyDown (wndPtr, wParam, lParam);
+	    return TRACKBAR_KeyDown (hwnd, wParam, lParam);
         
   	case WM_KEYUP:
-       return TRACKBAR_KeyUp (wndPtr, wParam);
+	    return TRACKBAR_KeyUp (hwnd, wParam);
 
 	case WM_KILLFOCUS:
-	    return TRACKBAR_KillFocus (wndPtr, wParam, lParam);
+	    return TRACKBAR_KillFocus (hwnd, wParam, lParam);
 
 	case WM_LBUTTONDOWN:
-	    return TRACKBAR_LButtonDown (wndPtr, wParam, lParam);
+	    return TRACKBAR_LButtonDown (hwnd, wParam, lParam);
 
 	case WM_LBUTTONUP:
-	    return TRACKBAR_LButtonUp (wndPtr, wParam, lParam);
+	    return TRACKBAR_LButtonUp (hwnd, wParam, lParam);
 
 	case WM_MOUSEMOVE:
-	    return TRACKBAR_MouseMove (wndPtr, wParam, lParam);
+	    return TRACKBAR_MouseMove (hwnd, wParam, lParam);
 
 	case WM_PAINT:
-	    return TRACKBAR_Paint (wndPtr, wParam);
+	    return TRACKBAR_Paint (hwnd, wParam);
 
 	case WM_SETFOCUS:
-	    return TRACKBAR_SetFocus (wndPtr, wParam, lParam);
+	    return TRACKBAR_SetFocus (hwnd, wParam, lParam);
 
 	case WM_SIZE:
-	    return TRACKBAR_Size (wndPtr, wParam, lParam);
+	    return TRACKBAR_Size (hwnd, wParam, lParam);
 
   	case WM_TIMER:
-		return TRACKBAR_HandleTimer (wndPtr, wParam, lParam);
+	    return TRACKBAR_HandleTimer (hwnd, wParam, lParam);
 
 	case WM_WININICHANGE:
-		return TRACKBAR_InitializeThumb (wndPtr);
+		return TRACKBAR_InitializeThumb (hwnd);
 
 	default:
 		if (uMsg >= WM_USER)
diff --git a/include/ipaddress.h b/include/ipaddress.h
index 943b244..1d50c6e 100644
--- a/include/ipaddress.h
+++ b/include/ipaddress.h
@@ -22,7 +22,7 @@
     WNDPROC wpOrigProc[4];
     HWND    hwndIP[4];
 	IPADDRESS_INFO *infoPtr;
-	WND 	  *wndPtr;
+    HWND    hwnd;
     UINT    uRefCount;
 } IP_SUBCLASS_INFO, *LPIP_SUBCLASS_INFO;
 
diff --git a/include/updown.h b/include/updown.h
index e7bfbd9..54444fd 100644
--- a/include/updown.h
+++ b/include/updown.h
@@ -19,6 +19,7 @@
   INT       MinVal;       /* Minimum up-down value */
   INT       MaxVal;       /* Maximum up-down value */
   HWND      Buddy;        /* Handle to the buddy window */
+  CHAR      szBuddyClass[40]; /* Buddy window class name */
   INT       Flags;        /* Internal Flags FLAG_* */
 } UPDOWN_INFO;