我们已经看到如何使用静态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。

wxWidgets:动态EVENT绑定的更多相关文章

  1. GridView 动态添加绑定列和模板列

    动态添加绑定列很简单:例如: GridView1.DataSourceID = "SqlDataSource1"; BoundField bf1 = new BoundField( ...

  2. jQuery插件 -- 动态事件绑定插件jquery.livequery.js

    http://blog.csdn.net/zzq58157383/article/details/7721974 动态事件绑定插件livequery, 可以利用它给相应的DOM元素注册事件或者触发回调 ...

  3. KnockoutJS 3.X API 第四章 表单绑定(7) event绑定

    目的 event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数.例如keypress,mouseover或者mouseout等 例如: Mouse over me Details var vi ...

  4. [HTML5]原生事件绑定和jquery动态事件绑定的区别

    原生事件绑定: <!-- 标签上绑定的事件是由window对象帮助调用,因此方法内的this其实是window对象 --> <label><input type=&quo ...

  5. Knockout.Js官网学习(event绑定、submit绑定)

    event绑定 event绑定在DOM元素上添加指定的事件句柄以便元素被触发的时候执行定义的JavaScript 函数.大部分情况下是用在keypress,mouseover和mouseout上. 简 ...

  6. jquery 动态事件绑定(0512)

    jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",fun ...

  7. Dynamic Method Binding in Delphi 动态方法绑定

    Dynamic Method Binding in Delphi  动态方法绑定 https://docs.dataabstract.com/Delphi/AdvancedTopics/Dynamic ...

  8. Java前期(静态)绑定和后期(动态)绑定

    Java前期(静态)绑定和后期(动态)绑定 程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来.对java来说,绑定分为静态绑定和动态绑定:或者叫做前期绑定和后期绑定. 静态绑 ...

  9. 编程开发之--Oracle数据库--存储过程使用动态参数绑定(3)

    1.动态参数绑定,可以实现动态的执行不同的sql --创建包 create or replace PACKAGE MYPACKAGE AS type empcursor is ref cursor; ...

随机推荐

  1. 基于嵌入式Linux的千兆以太网卡驱动程序设计及测试

    一. 引言 千兆以太网是一种具有高带宽和高响应的新网络技术,相关协议遵循IEEE 802.3规范标准.采用和10M以太网相似的帧格式.网络协议和布线系统,基于光纤和短距离同轴电缆的物理层介质,更适用于 ...

  2. [转载]oracle物化视图

    原文URL:http://lzfhope.blog.163.com/blog/static/636399220124942523943/?suggestedreading&wumii 环境or ...

  3. C标准中一些预定义的宏,如__FILE__,__func__等

    C标准中一些预定义的宏 C标准中指定了一些预定义的宏,对于编程经常会用到.下面这个表中就是一些常常用到的预定义宏. 宏 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串 ...

  4. Android开发入门要点记录:四大组件

    cocos2dx跨平台开发中需要了解android开发,昨天快速的浏览了一本Android开发入门教程,因为之前也似懂非懂的写过Activity,Intent,XML文件,还有里面许多控件甚至编程思想 ...

  5. android短彩信附件机制

    将一些认识写下来,和大家交流一下,同时也方便自己复习. 用户可以通过附件按钮,添加附件.以添加幻灯片为例: 如果点击幻灯片,会走如下代码: ComposeMessageActivity.java pr ...

  6. FTP 主动模式 与被动模式

    今天在被电信运营商给的没有内网ip被nat后的内网ip访问我的ftp服务器时出现了,连接被关闭的错误,经过多番查询发现问题原因是因为NAT内网ip没有被有效地转换为外网ip,也即是说NAT对ftp协议 ...

  7. ROS功能包- rrt_exploration

    一种基于RRT实现的多机器人地图探测算法的ROS软件包. 它还具有使用图像处理提取边界点.基于图像的边界检测等功能. 适用版本:indigo.jade.kinetic.lunar. 注意事项:官网文档 ...

  8. sql,将一天所有记录按小时划分

    mysql: select date_format(H_TIME,'%H') as HOUR, ROUND(AVG(H_TEMPERATURE),1) as TEMP, ROUND(AVG(H_HUM ...

  9. 使用Django+MySQL+Apache+Linux创建简单的博客

    本教程基于慕课网<Django入门与实践>编写,基于CentOS 7 基础知识 什么是django? Django是一个基于Python的高级Web开发框架, 特点:高效,快速,高度集成( ...

  10. 了解dto概念,什么是DTO

    了解dto概念   此博文收集整理了一些主流的文章对于DTO模式的解读,他们大体相似而又各有所不同.对于设计模式的解读也是一个仁者见仁智者见智的事情,不过设计模式往往都是前辈们在遇到一类特定的问题下而 ...