如何在一个继承自wxMenuBar的类中响应Menu Item的点击事件?

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
winzjqwin
In need of some credit
In need of some credit
Posts: 3
Joined: Wed Aug 03, 2016 6:25 am

如何在一个继承自wxMenuBar的类中响应Menu Item的点击事件?

Post by winzjqwin »

我试了使用DECLARE_EVENT_TABLE()和Connect()的方式。但点击并没有反应。
应该怎么做才行呢?
我的代码如下:

Code: Select all

    	//.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");
        }
combo
In need of some credit
In need of some credit
Posts: 8
Joined: Sun Aug 26, 2012 10:09 pm

Re: 如何在一个继承自wxMenuBar的类中响应Menu Item的点击事件?

Post by combo »

没明白楼主这样做的目的何在啊。
平时我们响应Menu Item的点击事件是在调用wxMenuBar的地方定义EVT_MENU以及指定一个包含wxCommandEvent的函数实现的。
就算使用自定义的wxMenuBar,也应该按原来的做法而不必在wxMenuBar的子类中再定义一个EVT_MENU去拦截它啊。
Post Reply