ComboLBWndProc: fall through to ListBoxWndProc if the listbox is not a
ComboLBox.

diff --git a/controls/listbox.c b/controls/listbox.c
index e537a5e..4379645 100644
--- a/controls/listbox.c
+++ b/controls/listbox.c
@@ -3056,24 +3056,30 @@
                                              WPARAM wParam, LPARAM lParam, BOOL unicode )
 {
     LRESULT lRet = 0;
-    LB_DESCR *descr = (LB_DESCR *)GetWindowLongA( hwnd, 0 );
+    LB_DESCR *descr;
+    LPHEADCOMBO lphc;
+
+    if (!(descr = (LB_DESCR *)GetWindowLongA( hwnd, 0 )))
+    {
+        if (msg == WM_CREATE)
+        {
+            CREATESTRUCTA *lpcs = (CREATESTRUCTA *)lParam;
+            TRACE_(combo)("\tpassed parent handle = %p\n",lpcs->lpCreateParams);
+            lphc = (LPHEADCOMBO)(lpcs->lpCreateParams);
+            return LISTBOX_Create( hwnd, lphc );
+        }
+        /* Ignore all other messages before we get a WM_CREATE */
+        return unicode ? DefWindowProcW( hwnd, msg, wParam, lParam ) :
+                         DefWindowProcA( hwnd, msg, wParam, lParam );
+    }
 
     TRACE_(combo)("[%04x]: msg %s wp %08x lp %08lx\n",
                   hwnd, SPY_GetMsgName(msg, hwnd), wParam, lParam );
 
-    if( descr || msg == WM_CREATE )
+    if ((lphc = descr->lphc) != NULL)
     {
-        LPHEADCOMBO lphc = (descr) ? descr->lphc : NULL;
-
         switch( msg )
         {
-        case WM_CREATE:
-            {
-                CREATESTRUCTA *lpcs = (CREATESTRUCTA *)lParam;
-                TRACE_(combo)("\tpassed parent handle = %p\n",lpcs->lpCreateParams);
-                lphc = (LPHEADCOMBO)(lpcs->lpCreateParams);
-                return LISTBOX_Create( hwnd, lphc );
-            }
         case WM_MOUSEMOVE:
             if ( (TWEAK_WineLook > WIN31_LOOK) &&
                  (CB_GETTYPE(lphc) != CBS_SIMPLE) )
@@ -3111,14 +3117,9 @@
                 return 0;
 
             }
-            else
-            {
-                /*
-                 * If we are in Win3.1 look, go with the default behavior.
-                 */
-                return unicode ? ListBoxWndProcW( hwnd, msg, wParam, lParam ) :
-                    ListBoxWndProcA( hwnd, msg, wParam, lParam );
-            }
+            /* else we are in Win3.1 look, go with the default behavior. */
+            break;
+
         case WM_LBUTTONUP:
             if (TWEAK_WineLook > WIN31_LOOK)
             {
@@ -3180,15 +3181,13 @@
         case WM_NCDESTROY:
             if( CB_GETTYPE(lphc) != CBS_SIMPLE )
                 lphc->hWndLBox = 0;
-            /* fall through */
-
-        default:
-            return unicode ? ListBoxWndProcW( hwnd, msg, wParam, lParam ) :
-                ListBoxWndProcA( hwnd, msg, wParam, lParam );
+            break;
         }
     }
-    lRet = unicode ? DefWindowProcW( hwnd, msg, wParam, lParam ) :
-        DefWindowProcA( hwnd, msg, wParam, lParam );
+
+    /* default handling: call listbox wnd proc */
+    lRet = unicode ? ListBoxWndProcW( hwnd, msg, wParam, lParam ) :
+                     ListBoxWndProcA( hwnd, msg, wParam, lParam );
 
     TRACE_(combo)("\t default on msg [%04x]\n", (UINT16)msg );