博客
关于我
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/

你可能感兴趣的文章
AttributeError: ‘list‘ object has no attribute ‘astype‘
查看>>
网络协议和支持(一)、uuid模块
查看>>
numpy.vstack
查看>>
numpy.frombuffer()
查看>>
文件结束符EOF
查看>>
Latex 错误集合
查看>>
Python的一个报错——OSError: [Errno 22] Invalid argument
查看>>
Python的内置函数(四十一)、 index()
查看>>
Python 代码占多行
查看>>
TypeError: string indices must be integers
查看>>
卷积神经网络的工程技巧总结
查看>>
OSError: [Errno 22] Invalid argument: ‘D:\test\x07‘
查看>>
Python的内置函数(十六)、strip()
查看>>
Python字符串操作之字符串分割与组合
查看>>
tf.parse_single_example()
查看>>
latex表示极限
查看>>
tf.tuple
查看>>
C++实现二叉树的最近公共祖先
查看>>
CentOS7安装mysql5.6
查看>>
windows下通过cmd杀死进程的方法
查看>>