return;
}
+ m_frameMenuBar = NULL;
+
+ // Can set a menubar several times.
+ // TODO: how to prevent a memory leak if you have a currently-unattached
+ // menubar? wxWindows assumes that the frame will delete the menu (otherwise
+ // there are problems for MDI).
+ if (menu_bar->GetHMenu())
+ {
+ m_hMenu = menu_bar->GetHMenu();
+ }
+ else
+ {
+ menu_bar->Detach();
+
+ m_hMenu = menu_bar->Create();
+
+ if ( !m_hMenu )
+ return;
+ }
+
+ InternalSetMenuBar();
+
+ m_frameMenuBar = menu_bar;
+ menu_bar->Attach(this);
+
+#if 0 // Old code that assumes only one call of SetMenuBar per frame.
+ if (!menu_bar)
+ {
+ DetachMenuBar();
+ return;
+ }
+
wxCHECK_RET( !menu_bar->GetFrame(), wxT("this menubar is already attached") );
if (m_frameMenuBar)
m_frameMenuBar = menu_bar;
menu_bar->Attach(this);
+#endif
}
void wxFrame::InternalSetMenuBar()
void wxMenuBar::Refresh()
{
- wxCHECK_RET( IsAttached(), wxT("can't refresh unatteched menubar") );
+ wxCHECK_RET( IsAttached(), wxT("can't refresh unattached menubar") );
DrawMenuBar(GetHwndOf(m_menuBarFrame));
}
void wxMenuBar::Attach(wxFrame *frame)
{
- wxASSERT_MSG( !IsAttached(), wxT("menubar already attached!") );
+// wxASSERT_MSG( !IsAttached(), wxT("menubar already attached!") );
m_menuBarFrame = frame;