wxFrame::~wxFrame()
{
- m_isBeingDeleted = true;
+ SendDestroyEvent();
+
DeleteAllBars();
}
}
// generate an artificial resize event
-void wxFrame::SendSizeEvent()
+void wxFrame::SendSizeEvent(int flags)
{
if ( !m_iconized )
{
RECT r = wxGetWindowRect(GetHwnd());
- (void)::PostMessage(GetHwnd(), WM_SIZE,
- IsMaximized() ? SIZE_MAXIMIZED : SIZE_RESTORED,
- MAKELPARAM(r.right - r.left, r.bottom - r.top));
+ if ( flags & wxSEND_EVENT_POST )
+ {
+ ::PostMessage(GetHwnd(), WM_SIZE,
+ IsMaximized() ? SIZE_MAXIMIZED : SIZE_RESTORED,
+ MAKELPARAM(r.right - r.left, r.bottom - r.top));
+ }
+ else // send it
+ {
+ ::SendMessage(GetHwnd(), WM_SIZE,
+ IsMaximized() ? SIZE_MAXIMIZED : SIZE_RESTORED,
+ MAKELPARAM(r.right - r.left, r.bottom - r.top));
+ }
}
}
SetToolBar(toolBar);
menubar->SetToolBar(toolBar);
}
- // Now adjust size for menu bar
- int menuHeight = 26;
- //When the main window is created using CW_USEDEFAULT the height of the
- // is created is not taken into account). So we resize the window after
- // if a menubar is present
+ // When the main window is created using CW_USEDEFAULT the height of the
+ // menubar is not taken into account, so we resize it afterwards if a
+ // menubar is present
+ HWND hwndMenuBar = SHFindMenuBar(GetHwnd());
+ if ( hwndMenuBar )
{
+ RECT mbRect;
+ ::GetWindowRect(hwndMenuBar, &mbRect);
+ const int menuHeight = mbRect.bottom - mbRect.top;
+
RECT rc;
- ::GetWindowRect((HWND) GetHWND(), &rc);
+ ::GetWindowRect(GetHwnd(), &rc);
// adjust for menu / titlebar height
rc.bottom -= (2*menuHeight-1);
- ::MoveWindow((HWND) GetHWND(), rc.left, rc.top, rc.right, rc.bottom, FALSE);
+ ::MoveWindow(Gethwnd(), rc.left, rc.top, rc.right, rc.bottom, FALSE);
}
#endif
#if wxUSE_MENUS
if (m_fsStyle & wxFULLSCREEN_NOMENUBAR)
{
- WXHMENU menu = m_hMenu;
-
-#if wxUSE_MDI_ARCHITECTURE
- wxMDIParentFrame *frame = wxDynamicCast(this, wxMDIParentFrame);
- if (frame)
- {
- wxMDIChildFrame *child = frame->GetActiveChild();
- if (child)
- {
- menu = child->GetWinMenu();
- }
- }
-#endif // wxUSE_MDI_ARCHITECTURE
-
- if (menu)
- {
- ::SetMenu(GetHwnd(), (HMENU)menu);
- }
+ const WXHMENU hmenu = MSWGetActiveMenu();
+ if ( hmenu )
+ ::SetMenu(GetHwnd(), (HMENU)hmenu);
}
#endif // wxUSE_MENUS
toolbar->GetPosition( &tx, &ty );
toolbar->GetSize( &tw, &th );
- int x = 0, y = 0;
+ int x, y;
if ( toolbar->HasFlag(wxTB_BOTTOM) )
{
x = 0;
return true;
#if wxUSE_MENUS && wxUSE_ACCEL && !defined(__WXUNIVERSAL__)
- // try the menu bar accels
+ // try the menu bar accelerators
wxMenuBar *menuBar = GetMenuBar();
- if ( menuBar )
- {
- const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable();
- return acceleratorTable.Translate(frame, pMsg);
- }
+ if ( menuBar && menuBar->GetAcceleratorTable()->Translate(frame, pMsg) )
+ return true;
#endif // wxUSE_MENUS && wxUSE_ACCEL
return false;
return false;
}
-bool wxFrame::HandleCommand(WXWORD id_, WXWORD cmd, WXHWND control)
+bool wxFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND control)
{
+#if wxUSE_MENUS
// we only need to handle the menu and accelerator commands from the items
// of our menu bar, base wxWindow class already handles the rest
if ( !control && (cmd == 0 /* menu */ || cmd == 1 /* accel */) )
if ( !wxCurrentPopupMenu )
#endif // wxUSE_MENUS_NATIVE
{
- wxMenuBar * const mbar = GetMenuBar();
- if ( mbar )
- {
- // sign extend to int from short before comparing with the
- // other int ids
- const int id = (signed short)id_;
-
- wxMenuItem * const mitem = mbar->FindItem(id);
- if ( mitem )
- return ProcessCommand(mitem);
- }
+ wxMenuItem * const mitem = FindItemInMenuBar((signed short)id);
+ if ( mitem )
+ return ProcessCommand(mitem);
}
}
+#endif // wxUSE_MENUS
- return wxFrameBase::HandleCommand(id_, cmd, control);;
+ return wxFrameBase::HandleCommand(id, cmd, control);;
}
#if wxUSE_MENUS