wxWidgets:动态EVENT绑定

我们已经看到如何使用静态EVENT TABLE来处理EVENT;但这种方式不够灵活。下面我们来看看如何在Event和处理函数间实现动态Bind。

仍然以那个简陋的Frame作为例子。

首先删除所有的静态Event处理代码;包括wxDECLARE_EVENT_TABLE和wxBEGIN_EVENT_TABLE/wxEND_EVENT_TABLE。但保留MyFrame::OnQuitButton事件处理函数。在MyFrame的构造函数的末尾添加一行代码,如下所示:

复制代码
MyFrame :: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
              : wxFrame(NULL, wxID_ANY, title, pos, size)
{
    toolBar = new wxToolBar(this, wxID_ANY);
    quitButton = new wxButton(toolBar, ID_BUTTON_QUIT, wxT("Click me"));
    toolBar->AddControl(quitButton);
    SetToolBar(toolBar);
    // bind event dynamic
    Bind(wxEVT_BUTTON, &MyFrame::OnQuitButton, this, ID_BUTTON_QUIT);
}
复制代码

Bind参数含义如下:

wxEVT_BUTTON:表示将要Bind一个Button Event。

&MyFrame::OnQuitButton:将由MyFrame的OnQuitButton成员函数处理该事件。

this:处理该事件的EventHandler。MyFrame继承于wxFrame,所以MyFrame实际上间接继承于EventHandler class。

ID_BUTTON_QUIT:Button Control的ID。

posted @ 2017-06-13 17:16  吴雨欣  阅读(1185)  评论(0编辑  收藏  举报
友情链接:回力鞋官网 | 中老年高档女装