事件驱动
贡献者:jackwang 浏览:1557次 创建时间:2009-06-18
-
weWidgets的中所有可以处理事件的类都继承自wxEvtHandler,其中包含frames, buttons, menus, even documents,所有的窗体类(即从wxWindow继承的类)和程序类(application class).
这些类可以有一个事件表,用来绑定事件和被调用的函数(handler functions).
过程 3.2. 建立一个静态事件表(即编译时生成的事件表)的操作步骤
建立一个新类(直接或间接从wxEvtHandler继承)
为每个要处理的事件声明被调用的函数
在被处理的事件所在的类的声明中加入宏DECLARE_EVENT_TABLE
在宏BEGIN_EVENT_TABLE... END_EVENT_TABLE(就是事件表)中将函数与枚举的数字绑定(因为产生该类型的事件的按钮不唯一,要用枚举数来区分);有些事件不必与枚举数绑定,因为产生该类型的事件的对象可以确定(比如就是this).
例 3.1. 一个事件表
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU (wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU (wxID_EXIT, MyFrame::OnQuit)
EVT_SIZE ( MyFrame::OnSize)
//不必与枚举数绑定,因为产生该类型的事件的对象是this
EVT_BUTTON (wxID_OK, MyFrame::OnButtonOK)
END_EVENT_TABLE()
在事件中指定被绑定的数字,wxWidgets会将其映射到对应的函数,并调用函数
所有在事件表中被绑定的函数有相似的形式:返回值都是void,不是virtual函数,参数为wxCommandEvent类型
开放分类
参考资料
贡献者
本词条在以下词条中被提及:
关于本词条的评论共:(0条)