diff --git a/dlls/comctl32/toolbar.c b/dlls/comctl32/toolbar.c
index 3bccd30bccdaf0cab75b6a9cea8761c75eec6031..b3fd83f3a03a3ff8f1681f128cca24739c8e0de8 100644
--- a/dlls/comctl32/toolbar.c
+++ b/dlls/comctl32/toolbar.c
@@ -2943,6 +2943,7 @@ TOOLBAR_Destroy (HWND hwnd, WPARAM wParam, LPARAM lParam)
 
     /* free toolbar info data */
     COMCTL32_Free (infoPtr);
+    SetWindowLongA (hwnd, 0, 0);
 
     return 0;
 }
@@ -3411,6 +3412,21 @@ TOOLBAR_StyleChanged (HWND hwnd, INT nType, LPSTYLESTRUCT lpStyle)
 static LRESULT WINAPI
 ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
+
+    switch (uMsg)
+    {
+       case WM_DESTROY:
+           return TOOLBAR_Destroy (hwnd, wParam, lParam);
+
+       case WM_NCCREATE:
+           return TOOLBAR_NCCreate (hwnd, wParam, lParam);
+    }
+
+    if (!TOOLBAR_GetInfoPtr (hwnd))
+    {
+       return DefWindowProcA (hwnd, uMsg, wParam, lParam);
+    }
+
     switch (uMsg)
     {
 	case TB_ADDBITMAP:
@@ -3671,9 +3687,6 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	case WM_CREATE:
 	    return TOOLBAR_Create (hwnd, wParam, lParam);
 
-	case WM_DESTROY:
-	    return TOOLBAR_Destroy (hwnd, wParam, lParam);
-
 	case WM_ERASEBKGND:
 	    return TOOLBAR_EraseBackground (hwnd, wParam, lParam);
 
@@ -3701,9 +3714,6 @@ ToolbarWindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	case WM_NCCALCSIZE:
 	    return TOOLBAR_NCCalcSize (hwnd, wParam, lParam);
 
-	case WM_NCCREATE:
-	    return TOOLBAR_NCCreate (hwnd, wParam, lParam);
-
 	case WM_NCPAINT:
 	    return TOOLBAR_NCPaint (hwnd, wParam, lParam);