wxWidgets中事件处理过程

 

一、事件表的创建和事件的处理过程

    1、静态事件表的创建过程:

        (1)、定义一个直接或者间接继承自wxEvtHandler的类。

        (2)、定义想处理事件的事件处理函数。
        (3)、在DECLARE_EVENT_TABLE中声明事件表。
        (4)、在.cpp中用BEGIN_EVENT_TABLE和END_EVENT_TABLE实现一个事件表。
        (5)、在事件表中加入事件宏,来实现事件到事件处理过程的映射。

    2、事件处理函数的形式

        (1)、返回值为void。

        (2)、都不是虚函数。

        (3)、一个事件对象做为参数。

    3、事件处理过程

        (1)、需要递归查找类事件表的是:wxCommandEvent以及直接或者间接继承此事件的事件。

        (2)、不能传递给父窗口处理的事件:wxActivate,wxCloseEvent,wxEraseEvent,wxFocu-
               sEvent,wxKeyEvent,wxIdleEvent,wxInitDialogEvent,wxJoystickEvent,wxMenuEvent,
             wxMouseEvent,wxMoveEvent,wxPaintEvent,wxQueryLayoutInfoEvent,wxSizeEvent,
             wxScrollWinEvent,wxSysColourChangedEvent。原因在于这些事件只对本窗口有意义。

二、事件的过滤

处理按钮单击事件的过程

    以上为处理按钮单击事件的过程,由此可知:通过这种方法可以改变本地控件的默认行为,方法是继承一个父控件的继承类,在事件表中使用事件映射宏过滤不想要的事件。

    文本框只接受"a"~"z"和"A"~"Z"的输入:

三、事件表的挂载

    正在理解。。。

四、动态事件的处理方法

    也就是运行期改变事件表的映射关系。

    两个有关动态事件处理的API:wxEvtHandler::Connect和wxEvtHandler::Disconnect,一般不用手动调用wxEvtHandler::Disconnect,窗口类被释放的时候自动被调用。

    举例:

五、窗口标示符

    窗口标识符是在事件系统中用来唯一确定窗口的整数。事实上,在整个应用程序的范围内,窗口标识符不必一定是唯一的,而只要在某个固定的上下文(比如说,在一个frame窗口和它的所有子窗口)内是唯一的就可以了。举例来说:你可以在无数个对话框中使用wxID_OK这个标识符,只要在某个对话框内不要重复使用就可以了。

    wxWidgets自动创建的标识符是总是一个负数,所以永远不会和用户定义的窗口标识符重复,用户定义的窗口标识符只能是正整数。

 

标识符名称描述
wxID_ANY让wxWidgets自动产生一个标识符
wxID_LOWEST最小的系统标识符值 (4999)
wxID_HIGHEST最大的系统标识符值 (5999)
wxID_OPEN打开文件
wxID_CLOSE关闭窗口
wxID_NEW新建窗口文件或者文档
wxID_SAVE保存文件
wxID_SAVEAS文件另存为(应该弹出文件位置对话框)
wxID_REVERT恢复文件在磁盘上的状态
wxID_EXIT退出应用程序
wxID_UNDO撤消最近一次操作
wxID_REDO重复最近一次操作
wxID_HELP帮助 (例如对话框上的帮助按钮可以用这个标识符)
wxID_PRINT打印
wxID_PRINT_SETUP打印设置
wxID_PREVIEW打印预览
wxID_ABOUT显示一个用来描述整个程序的对话框
wxID_HELP_CONTENTS显示上下文帮助
wxID_HELP_COMMANDS显示应用程序命令
wxID_HELP_PROCEDURES显示应用程序过程
wxID_HELP_CONTEXT未使用
wxID_CUT剪切
wxID_COPY复制到剪贴板
wxID_PASTE粘贴
wxID_CLEAR清除
wxID_FIND查找
wxID_DUPLICATE复制
wxID_SELECTALL全选
wxID_DELETE删除
wxID_REPLACE覆盖
wxID_REPLACE_ALL全部覆盖
wxID_PROPERTIES查看属性
wxID_VIEW_DETAILS列表框中的按照详细信息方式显示
wxID_VIEW_LARGEICONS列表框按照大图标的方式显示
wxID_VIEW_SMALLICONS列表框中按照小图标的方式显示
wxID_VIEW_LIST列表框中按照列表的的方式显示
wxID_VIEW_SORTDATE按照日期排序
wxID_VIEW_SORTNAME按照名称排序
wxID_VIEW_SORTSIZE按照大小排序
wxID_VIEW_SORTTYPE按照类型排序
wxID_FILE1 to wxID_FILE9显示最近使用的文件
wxID_OK确定
wxID_CANCEL取消
wxID_APPLY应用变更
wxID_YESYES
wxID_NONo
wxID_STATIC静态文本或者静态图片可以用这个标识符
wxID_FORWARD向前 
wxID_BACKWARD向后
wxID_DEFAULT恢复默认设置
wxID_MORE显示更多选项
wxID_SETUP显示一个设置对话框
wxID_RESET重置所有选项
wxID_CONTEXT_HELP显示上下文帮助
wxID_YESTOALL全部选是
wxID_NOTOALL全部选否
wxID_ABORT中止当前操作
wxID_RETRY重试
wxID_IGNORE忽略错误
wxID_UP向上
wxID_DOWN向下
wxID_HOME首页
wxID_REFRESH刷新
wxID_STOP停止正在进行的操作
wxID_INDEX显示一个索引
wxID_BOLD加粗显示
wxID_ITALIC斜体显示
wxID_JUSTIFY_CENTER居中
wxID_JUSTIFY_FILL格式
wxID_JUSTIFY_RIGHT右对齐
wxID_JUSTIFY_LEFT左对齐
wxID_UNDERLINE下划线
wxID_INDENT缩进
wxID_UNINDENT反缩进
wxID_ZOOM_100放大到100%
wxID_ZOOM_FIT缩放到整页
wxID_ZOOM_IN放大
wxID_ZOOM_OUT缩小
wxID_UNDELETE反删除
wxID_REVERT_TO_SAVED恢复到上次保存的状态

 

      为了避免你自己定义的标识符和这些预定义的标识符重复,你可以使用大于wxID_HIGHEST的标识符或者小于wxID_LOWEST的标识符。

六、自定义事件

    理解中。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bill Adams

喜欢?打赏一杯阔乐吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值