我曾尝试过DECLARE_EVENT_TABLE()&&连接(),但它不起作用。我的代码就像这样。如何使它工作?
//.h
class MainFrameMenuBar :public wxMenuBar
//...
private:
DECLARE_EVENT_TABLE();
};
/...
//.cpp
BEGIN_EVENT_TABLE(MainFrameMenuBar, wxMenuBar)
EVT_MENU(XRCID("ID_MENU_FIGURE"), MainFrameMenuBar::onMenuItemFigure)
END_EVENT_TABLE()
MainFrameMenuBar::MainFrameMenuBar(wxWindow* parent)
{
wxXmlResource::Get()->LoadMenuBar(parent,wxT("ID_MAIN_MENUBAR"));
//int id = XRCID("ID_MENU_FIGURE");
//Connect(id, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrameMenuBar::onMenuItemFigure), NULL, this);
}
void MainFrameMenuBar::onMenuItemFigure(wxCommandEvent& event)
{
printf("abc");
}
答案 0 :(得分:0)
以前在较旧的wxWidgets版本中已经打破了这个问题,你只需要在包含菜单栏的wxFrame
而不是菜单栏本身处理菜单事件,但它应该是fixed一些很久以前,也许你需要升级?
如果您确实使用受该bug影响且无法升级的版本,则处理框架中的事件是最简单的解决方法。