• 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。

  • 相关阅读:
    async/await
    js继承
    js处理上下文代码的2个阶段
    js相关地址
    vue自定义指令钩子函数
    vue 组件
    vue methods和computed,v-show和v-if
    vue 生命周期
    DOM操作——怎样添加、移除、移动、复制、创建和查找节点
    js 传递参数
  • 原文地址:https://www.cnblogs.com/byeyear/p/3488143.html
Copyright © 2020-2023  润新知