}
     else
     {
-        // we have nothing to with it
+        // we have nothing to do with it
         return FALSE;
     }
 
     HWND oldHandle = (HWND)GetHWND();
     SendMessage(GetWinHwnd(parent->GetClientWindow()), WM_MDIDESTROY,
                 (WPARAM)oldHandle, 0);
+
+    if (parent->GetActiveChild() == (wxMDIChildFrame*) NULL)
+        ResetWindowStyle((void*) NULL);
+
     invalidHandle = 0;
 
     if (m_hMenu)
 
     {
         wxLayoutAlgorithm layout;
         layout.LayoutMDIFrame(this);
+
+#if defined(__WXMSW__) && defined(__WIN95__)
+        // Need to do something else to get it to refresh properly
+        // when a client frame is first displayed; moving the client
+        // window doesn't cause the proper refresh. Just refreshing the
+        // client doesn't work (presumably because it's clipping the
+        // children).
+        // TODO: how to put this fix in wxWindows, and not the app.
+        // How about at least having a wxWindow::RedrawWindow?
+        wxMDIChildFrame* childFrame = GetActiveChild();
+        if (childFrame)
+        {
+            HWND hWnd = (HWND) childFrame->GetHWND();
+            ::RedrawWindow(hWnd, NULL, NULL, RDW_FRAME|RDW_ALLCHILDREN|RDW_INVALIDATE );
+
+        }
+#endif
     }
 }