wxDELETE(m_pClientWindow);
 
 #if wxUSE_MENUS
+    wxDELETE(m_pMyMenuBar);
     RemoveWindowMenu(GetMenuBar());
-    delete m_pWindowMenu;
+    wxDELETE(m_pWindowMenu);
 #endif // wxUSE_MENUS
 }
 
     AddWindowMenu(pMenuBar);
 
     wxFrame::SetMenuBar(pMenuBar);
-    m_pMyMenuBar = GetMenuBar();
+    //m_pMyMenuBar = GetMenuBar();
 }
 #endif // wxUSE_MENUS
 
         SetMenuBar(m_pMyMenuBar);
 
         // Make sure we know our menu bar is in use
-        //m_pMyMenuBar = NULL;
+        m_pMyMenuBar = NULL;
     }
      else
     {
 
 wxAuiMDIChildFrame::~wxAuiMDIChildFrame()
 {
+    wxAuiMDIParentFrame* pParentFrame = GetMDIParentFrame();
+    if (pParentFrame && pParentFrame->GetActiveChild() == this)
+    {
+        pParentFrame->SetActiveChild(NULL);
+        pParentFrame->SetChildMenuBar(NULL);
+    }
+    
 #if wxUSE_MENUS
     wxDELETE(m_pMenuBar);
 #endif // wxUSE_MENUS