如何在继承的wxMenuBar中响应MENU_SELECTED事件?

时间:2016-08-03 03:45:24

标签: wxwidgets

我曾尝试过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");
        }

1 个答案:

答案 0 :(得分:0)

以前在较旧的wxWidgets版本中已经打破了这个问题,你只需要在包含菜单栏的wxFrame而不是菜单栏本身处理菜单事件,但它应该是fixed一些很久以前,也许你需要升级?

如果您确实使用受该bug影响且无法升级的版本,则处理框架中的事件是最简单的解决方法。