wxWidgets自定义消息及处理
来源:互联网 发布:js删除cookie值的方法 编辑:程序博客网 时间:2024/06/01 07:31
自定义消息
用户自定义消息通常从wxEvent派生,下面,以一个用户自定义的ProjectEvent为例,说明自定义消息的步骤:
首先,在头文件中声明消息。
/// UserEvent.hclass ProjectEvent :wxEvent{public: ProjectEvent(int itemId, int eventTag);public: int mItemId; int mEventTag; ……}wxDECLARE_EVENT(PROJECT_EVENT, ProjectEvent);
其中,wxDECLARE_EVENT(PROJECT_EVENT, ProjectEvent)的含义是声明了一个新的消息类型PROJECT_EVENT,该消息类型对应的消息类是ProjectEvent。即,用户在消息循环中处理PROJECT_EVENT消息时,消息循环给用户消息处理函数提供的参数类别是ProjectEvent类。
然后,在源文件中定义消息。
/// UserEvent.cpp#include "UserEvent.h"wxDEFINE_EVENT(PROJECT_EVENT, ProjectEvent);ProjectEvent::ProjectEvent(int itemId, int eventTag): wxEvent(), mItemId(itemId), mEventTag(eventTag){}
注意,必须在源文件中声明wxDEFINE_EVENT(PROJECT_EVENT, ProjectEvent)。否则会在执行过程中出错。出错的主要原因似是有关消息代码的分配。
自定义消息的处理
自定义消息的处理与预定义消息的处理方式相同,主要包括两种处理方式:静态处理和动态处理。
静态处理示例。
在头文件中声明消息处理函数。
/// MainFrame.hclass MainFrame : public wxFrame{ ……public: void OnProject(wxEvent & evt); …… DECLARE_EVENT_TABLE();}
在实现文件中定义消息处理函数。
/// MainFrame.cpp#include "MainFrame.h"#include "UserEvent.h"BEGIN_EVENT_TABLE(MainFrame, wxFrame) …… EVT_CUSTOM(PROJECT_EVENT, wxID_ANY, OnProject) ……END_EVENT_TABLE()void MainFrame::OnProject(wxEvent & evt){ /// 作为参数的event类型,应可以转换为ProjectEvent类型. ProjectEvent * projEvt = dynamic_cast<ProjectEvent *>(& evt); ……}
动态处理示例。
头文件中声明与静态处理相同。
实现文件中,不用定义消息处理表,在初始化时动态绑定消息处理函数。代码如下:
/// MainFrame.cpp#include "MainFrame.h"#include "UserEvent.h"void MainFrame::MainFrame(…){ …… Bind(PROJECT_EVENT, &MainFrame::OnProject, this, wxID_ANY); ……}
自定义消息的发送
用户通过对指定窗口调用ProcessWindowEvent函数,参数为自定义的ProjectEvent消息类型,即刻向指定窗口发送ProjectEvent消息,并由该窗口的消息处理函数进行处理。
代码如下:
/// MainFrame.cppvoid MainFrame::SendEvent(…){ …… ProjectEvent event(id, tag); targetWnd->ProcessWindowEvent(event); /// targetWnd窗口处理消息 ……}
注意,该函数采用同步处理机制,类似MFC中的SendMessage,即消息处理完成后该函数才返回。与MFC类似,wxWidgets还有异步的消息发送机制,通过调用QueueEvent可以完成消息的异步消息发送,即发送完消息立刻返回,目标窗口将在后续的空闲消息循环中处理用户消息,类似MFC中的PostMessage。
- wxWidgets自定义消息及处理
- wxwidgets的自定义消息与处理
- wxWidgets处理Windows消息
- wxWidgets自定义事件处理
- wxWidgets:使用connect自定义消息
- Looper原理及自定义消息处理线程
- wxWidgets的配置过程及出错处理
- overlapped I/O的学习,及自定义消息的处理
- 自定义消息发送与处理及获取枚举名称
- 自定义消息的处理
- 处理自定义消息
- 自定义消息处理示例
- NSNotificationCenter 处理自定义消息
- 添加自定义消息处理
- 自定义消息及发送
- vc 添加自定义消息及消息处理函数分5步
- vc 添加自定义消息及消息处理函数分5步
- vc 添加自定义消息及消息处理函数分5步
- JavaScript权威指南笔记2
- Java基础—面向对象(三)
- SDL_Texture与SDL_Renderer示例
- 线程死锁测试_加锁次序导致死锁
- JNDI配置tomcat数据连接池技术
- wxWidgets自定义消息及处理
- db2 load数据报错且异常代码为空
- 总结:ubuntu或是win7系统下,利用python语言来使用数据库mysql<一>
- 使用XenCenter创建半虚拟化CentOS模板
- flex
- new 与 opeartor new【转】
- RichEditor for Android
- 阿里2015在线笔试,被虐坏了!
- Linux文件搜索命令