EVT_SYS_COLOUR_CHANGED(wxFrameOS2::OnSysColourChanged)
 END_EVENT_TABLE()
 
-IMPLEMENT_DYNAMIC_CLASS(wxFrameOS2, wxWindow)
-
 #ifndef __WXUNIVERSAL__
-IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW)
+IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow)
 #endif
 
 // ============================================================================
     }
 } // end of wxFrameOS2::SetMenuBar
 
+void wxFrameOS2::AttachMenuBar(
+  wxMenuBar*                        pMenubar
+)
+{
+    m_frameMenuBar = pMenubar;
+
+    if (!pMenubar)
+    {
+        //
+        // Actually remove the menu from the frame
+        //
+        m_hMenu = (WXHMENU)0;
+        InternalSetMenuBar();
+    }
+    else // Set new non NULL menu bar
+    {
+        //
+        // Can set a menubar several times.
+        //
+        if (pMenubar->GetHMenu())
+        {
+            m_hMenu = pMenubar->GetHMenu();
+        }
+        else
+        {
+            if (pMenubar->IsAttached())
+                pMenubar->Detach();
+
+            m_hMenu = pMenubar->Create();
+
+            if (!m_hMenu)
+                return;
+        }
+        InternalSetMenuBar();
+    }
+} // end of wxFrameOS2::AttachMenuBar
+
 void wxFrameOS2::InternalSetMenuBar()
 {
     ERRORID                         vError;