博客
关于我
wxwidgets事件处理
阅读量:666 次
发布时间:2019-03-16

本文共 1295 字,大约阅读时间需要 4 分钟。

HTML代码在外部优化后如下:

WXWidgets事件处理技术指南

事件类型

事件类型是一个唯一标识事件类型的东西,通常使用宏定义的形式。在WXWidgets中,事件类型由一系列预设的宏定义符表示。例如,按键点击事件可以通过#define wxEVT_COMMAND_BUTTON_CLICKED wxEVT_BUTTON宏定义的方式标识。这个宏定义与具体的事件类(如wxCommandEvent)结合,共同描述了事件的类型和范围。

事件所携带的信息

每个事件都会携带与之相关的信息,这些数据通过从wxEvent派生的类实现。不同类型的事件可以使用相同的事件类。例如,按button和选择listbox事件都使用wxCommandEvent类,因为它们都是基于command事件类型的控制事件。然而,键盘事件则使用wxKeyEvent类,因为它们携带不同的信息类型。

事件源

在WXWidgets中,事件源是标识事件产生的对象。在窗口应用程序中,事件源通常是窗口的唯一标识ID。每个窗口可能有多个控件(如按钮、菜单等)产生相同类型的事件,但通过检查事件源ID,可以识别具体是哪一个控件触发了事件。

事件处理方法

静态事件表

在WXWidgets中,事件处理可以通过静态事件表或动态绑定来实现。静态事件表是在编译时将事件与处理函数绑定的方式。具体步骤包括:

  • 定义一个派生自wxWindows的窗口类
  • 在类中 声明一个事件表(使用wxBEGIN_EVENT_TABLE和wxEND_EVENT_TABLE标签)
  • 为每个事件定义处理函数
  • 在cpp文件中使用宏定义将事件与处理函数关联起来(如 EVT_BUTTON)

动态绑定

动态绑定是指在运行时动态地将事件与处理函数绑定的过程。这允许更灵活的事件管理方式,适用于以下场景:

  • 绑定普通函数或lambda表达式
  • 绑定第三方库提供的处理函数(如boost::function或std::function)

使用Bind方法实现动态绑定。例如:

binding Event类型(如wxEVT_COMMAND_BUTTON_CLICKED)到特定处理函数,并指定事件源ID等参数。

静态事件表与动态绑定的区别

  • 事件处理函数可以随时绑定和解绑(支持�后期绑定)
  • 支持绑定三种类型的事件处理:对象方法、函数以及第三方库处理
  • 静态事件表在特定情况下(如非command事件)无法实现复杂的事件传递逻辑

转载地址:http://tgeqz.baihongyu.com/

你可能感兴趣的文章
文件系统的层次结构
查看>>
vue(渐进式前端框架)
查看>>
vscode设置eslint保存文件时自动修复eslint错误
查看>>
Remove Extra one 维护前缀最大最小值
查看>>
Linux操作系统的安装与使用
查看>>
C++ 继承 详解
查看>>
OSPF多区域
查看>>
Docker入门之-镜像(二)
查看>>
去了解拉绳位移编码器的影响因素
查看>>
无法初始化Winsock2.2处理
查看>>
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
查看>>
重置UAG Application admin密码
查看>>
Horizon Daas租户管理平台扩展分配时报:内部错误
查看>>
嵌入式系统试题库(CSU)
查看>>
【自考】之信息资源管理(一)
查看>>
setup facatory9.0打包详细教程(含静默安装和卸载)
查看>>
java.security.InvalidKeyException: Illegal key size
查看>>
Linux kernel pwn --- CSAW2015 StringIPC
查看>>
IDEA 找不到 Persistence窗口解决办法
查看>>
C++ Primer Plus读书笔记:循环读取(错误处理)
查看>>