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:
Vadim Zeitlin
2000-07-18 07:59:05 +00:00
parent 90678ba2ea
commit b98b2b27d6
3 changed files with 67 additions and 4 deletions

View File

@@ -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);