wxWidgets事件

事件驱动

所有的GUI程序,都是事件驱动的,用到的是事件驱动的编程方法。是指,程序进入一个循环了,等待用户或者其它来源来产生事件,程序随后将这个事件分发给对应的处理函数,处理完后,程序又回到这个循环里,等待下一次事件。

事件表event table

可以包含事件表的对象有:所有wxEvtHandler的子类,包括框架(窗口)frames、按钮 buttons、菜单 menus、文档 documents和窗口类wxWindow的子类等。

其包括静态事件表和动态事件表两类。

创建静态事件表

a) 声明一个wxEvtHandler的子类。

b)将每个事件处理函数添加为成员函数。只有一个参数event。

c)在这个子类里再用DECLARE_EVENT_TABLE 创建事件表。

d)在源文件里用BEGIN_EVENT_TABLE, END_EVENT_TABLE 来定义事件表。

e)向表里插入元素,将每一个事件于对应的事件处理函数对应起来。

创建自定义事件

a)创建合适的子类,声明动态类型信息,加入一个clone函数。

b)为处理函数定义一个typedef

c)为自己的事件类定义事件类型表

d)为每个事件类型表定义宏