Я пробовал DECLARE_EVENT_TABLE() & & Connect(), но он не работает. Мой код просто так. Как заставить его работать?Как реагировать на событие MENU_SELECTED в унаследованном wxMenuBar?
//.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");
}
Я использую версию 3.1.0. Что-то другое не так? – youzhiwan
Нет, я не вижу ничего неправильного в приведенном здесь коде, поэтому я не знаю, что может быть неправильным. Как всегда, если вы попытаетесь воспроизвести проблему в существующем образце wxWidgets, например [минимальный образец] (https://github.com/wxWidgets/wxWidgets/tree/v3.1.0/samples/minimal/minimal.cpp) , это может сузить проблему, например мы бы по крайней мере знали, связано ли это с использованием XRC или независимо от него и т. д. –