wxCommandEvent::Checked() was renamed to IsChecked() (keeping the old name
too, of course), now works for menu item in wxMSW too and is documented accordingly. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -47,7 +47,9 @@ class MyFrame: public wxFrame
|
||||
public:
|
||||
MyFrame();
|
||||
|
||||
virtual ~MyFrame() { delete m_menu; }
|
||||
virtual ~MyFrame();
|
||||
|
||||
void LogMenuEvent(const wxCommandEvent& event);
|
||||
|
||||
void OnQuit(wxCommandEvent& event);
|
||||
void OnAbout(wxCommandEvent& event);
|
||||
@@ -88,6 +90,25 @@ private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// A small helper class which intercepts all menu events and logs them
|
||||
class MyEvtHandler : public wxEvtHandler
|
||||
{
|
||||
public:
|
||||
MyEvtHandler(MyFrame *frame) { m_frame = frame; }
|
||||
|
||||
void OnMenuEvent(wxCommandEvent& event)
|
||||
{
|
||||
m_frame->LogMenuEvent(event);
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
private:
|
||||
MyFrame *m_frame;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -164,6 +185,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_RIGHT_DOWN(MyFrame::OnRightDown)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
BEGIN_EVENT_TABLE(MyEvtHandler, wxEvtHandler)
|
||||
EVT_MENU(-1, MyEvtHandler::OnMenuEvent)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
@@ -202,7 +227,7 @@ MyFrame::MyFrame()
|
||||
m_menu = NULL;
|
||||
m_countDummy = 0;
|
||||
|
||||
CreateStatusBar();
|
||||
CreateStatusBar(2);
|
||||
|
||||
// create the menubar
|
||||
wxMenu *fileMenu = new wxMenu;
|
||||
@@ -267,6 +292,17 @@ MyFrame::MyFrame()
|
||||
|
||||
// associate the menu bar with the frame
|
||||
SetMenuBar(menuBar);
|
||||
|
||||
// intercept all menu events and log them in this custom event handler
|
||||
PushEventHandler(new MyEvtHandler(this));
|
||||
}
|
||||
|
||||
MyFrame::~MyFrame()
|
||||
{
|
||||
delete m_menu;
|
||||
|
||||
// delete the event handler installed in ctor
|
||||
PopEventHandler(TRUE);
|
||||
}
|
||||
|
||||
wxMenu *MyFrame::CreateDummyMenu(wxString *title)
|
||||
@@ -302,6 +338,23 @@ wxMenuItem *MyFrame::GetLastMenuItem() const
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::LogMenuEvent(const wxCommandEvent& event)
|
||||
{
|
||||
int id = event.GetId();
|
||||
wxString msg = wxString::Format("Menu command %d", id);
|
||||
if ( GetMenuBar()->FindItem(id)->IsCheckable() )
|
||||
{
|
||||
msg += wxString::Format(" (the item is currently %schecked)",
|
||||
event.IsChecked() ? "" : "not ");
|
||||
}
|
||||
|
||||
SetStatusText(msg, 1);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// menu callbacks
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
Close(TRUE);
|
||||
|
Reference in New Issue
Block a user