`
wx1569567608
  • 浏览: 71211 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

wxWidgets事件(Event)处理(一)

 
阅读更多

处理函数介绍

看源代码include/wx/event.h中如下代码:
class WXDLLIMPEXP_BASE wxEvtHandler : public wxObject
{
..........................................

// 立即处理一个事件
virtual bool ProcessEvent(wxEvent& event);

// 添加一个事件到待处理队列
void AddPendingEvent(wxEvent& event);

....................................
}

// 添加一个事件到对应句柄的待处理队列,在下次事件循环迭代后处理该事件
inline void wxPostEvent(wxEvtHandler *dest, wxEvent& event)
{
wxCHECK_RET( dest, wxT("need an object to post event to in wxPostEvent") );

dest->AddPendingEvent(event);
}

以上代码说明了wxwidgets的两个重要事件处理函数ProcessEvent和wxPostEvent,我们可以这样理解:
ProcessEvent是同步处理一个事件,只有该事件被处理完才结束;
wxPostEvent是异步处理一个事件,该函数仅仅将事件加入到对应事件句柄的事件待处理队列,不等事件被处理就直接返回。
所以在不同的使用环境中我们要妥善使用这两个函数,尤其在多线程和UI编程(如容易引起界面阻塞的操作)环境下!

转载于:https://my.oschina.net/u/2332347/blog/637842

分享到:
评论

相关推荐

    wxwidgets 事件类

    wxCommandEvent 是一个基本的事件类,它提供了基本的事件处理机制,而 wxNotifyEvent 则提供了更加复杂的事件处理机制,包括对事件的 veto 机制。 在定义事件类时,我们需要声明动态类型信息和实现 Clone 函数,...

    最简单的wxWidgets实例

    通过学习和实践这个实例,你可以逐步掌握如何利用wxWidgets库构建更复杂的应用,理解窗口和控件的创建、布局管理、事件处理等核心概念。随着经验的积累,你将能够创建功能丰富的、跨平台的桌面应用程序。

    wxWidgets中的wxTimer使用

    如果你使用默认的`wxTimer`,则可能需要为`wxEVT_TIMER`事件绑定一个处理函数。 3. **启动定时器**: 使用`Start(int milliseconds, bool oneShot = false)`方法来启动定时器。`milliseconds`参数指定了定时器的...

    wxWidgets Hello World 源码(中文注释)

    - 使用`BEGIN_EVENT_TABLE`和`END_EVENT_TABLE`宏来定义事件处理表。 - 通过`EVT_MENU`宏将菜单项与相应的事件处理函数关联起来。 - 当菜单项ID为`ID_Quit`时,触发`OnQuit`方法。 - 当菜单项ID为`ID_About`时,...

    wxWidgets学习笔记

    下面是对wxWidgets的学习笔记,包括安装、第一个程序、事件处理、菜单和状态栏的创建、绘画和鼠标响应等。 一、安装wxWidgets 安装wxWidgets需要使用vs2005作为IDE,wxWidgets提供了完善的安装向导,安装过程中...

    使用wxWidgets进行跨平台程序开发(中文版)

    **wxWidgets**是一个开源的C++库,它允许开发者创建能够在多个操作系统上运行的图形用户界面(GUI)应用程序。这个库提供了丰富的控件和组件,使得开发者能够利用原生的系统外观和感觉,同时保持代码的可移植性。在...

    多线程测试(wxWidgets)

    一个进程可以包含一个或多个线程,共享同一块内存空间,这样就实现了数据的快速交换和并行处理。 在C++中,多线程支持主要依赖于标准库中的`<thread>`头文件。你可以创建一个新的线程来执行一个函数或者一个可调用...

    wxwidgets 3.1.2 头文件

    10. **wx/event.h**: 定义了事件处理相关的类和枚举,如`wxEvtHandler`和`wxEvent`,以及事件类型`wxEVT_*`。 11. **wx/datetime.h**: 提供了`wxDateTime`类,用于处理日期和时间。 12. **wx/image.h**: `wxImage`...

    wxWidgets2.9.2的helloword

    - wxWidgets 采用事件驱动模型,事件由控件触发,然后被相应的事件处理器处理。`wxEVT_COMMAND_BUTTON_CLICKED` 是一个常见的按钮点击事件类型。 - 控件如按钮、文本框等,可以通过 `Bind` 函数绑定事件处理函数,...

    [使用wxWidgets进行跨平台程序开发].wxWidgets-2.9.0-chm.zip

    二、wxWidgets的事件处理机制 wxWidgets使用基于事件驱动的模型,允许开发者对用户的交互行为(如点击按钮、选择菜单项)进行响应。通过连接事件处理函数(如OnButtonClicked)到特定的事件,可以编写处理这些事件...

    wxWidgets_全能的跨平台软件开发包

    - **事件处理**:wxWidgets使用事件驱动的模型来处理用户的输入。每当用户触发某种交互行为时,如点击按钮,系统就会生成一个相应的事件。 - **事件处理器**:为了响应这些事件,需要定义事件处理器函数。这些函数会...

    重写事件处理函数.rar

    在许多面向对象的编程框架中,如Qt或wxWidgets,事件处理通常通过信号和槽机制来实现。信号是当特定事件发生时由对象发出的通知,而槽是接收并响应这些信号的函数。当一个信号被触发时,它会连接到一个或多个槽,...

    以CodeBlocks为IDE,在wxWidgets中实现窗体透明效果

    在IT行业中,开发图形用户界面...这只是一个基本的示例,实际应用中你还可以根据需求添加更多的功能,如控件、事件处理等。继续深入学习`wxWidgets`和`CodeBlocks`,可以帮你构建更复杂、功能丰富的跨平台应用程序。

    使用wxWidgets进行跨平台程序开发

    4. **事件处理**:通过连接事件处理器函数(event handler)来响应用户的操作,如点击按钮、输入文本等。 5. **布局管理**:利用wxWidgets的布局管理器(如BoxSizer、GridSizer)来自动或手动调整控件的位置和大小...

    窗体界面的交互和事件处理.rar

    Windows Forms提供了多种控件,事件处理通常通过事件处理程序(Event Handlers)进行。WPF使用XAML语言定义界面,事件处理同样简单,只需将事件处理程序与事件绑定。 5. **jsp(JavaServer Pages)**:在Web开发中...

    用wxWidgets编写的访问PostgreSQL的例子

    在本文中,我们将深入探讨如何使用wxWidgets库来编写一个应用程序,该程序能够与PostgreSQL数据库进行交互。wxWidgets是一个跨平台的C++库,它提供了丰富的用户界面元素,允许开发者创建美观且功能强大的应用程序。...

    wxWidgets实现无标题栏窗口拖动效果

    要实现无标题栏窗口拖动效果,我们需要使用wxWidgets的事件处理机制来捕获鼠标事件,并根据鼠标的移动来移动窗口。具体来说,我们需要实现以下三个步骤: 1. 在鼠标左键按下时,记录下鼠标位置,并使用CaptureMouse...

    在CodeBlocks中用wxWidgets创建不规则窗口

    这样,我们可以在该类中重写`OnPaint`事件处理函数,实现自定义绘制。例如: ```cpp class MyFrame : public wxFrame { public: MyFrame(const wxString& title); ~MyFrame(); protected: void OnPaint...

    event-driven_io-源码.rar

    在计算机编程领域,事件驱动I/O(Event Driven Input/Output)是一种高效且灵活的处理并发请求的编程模型,它广泛应用于网络服务、图形用户界面(GUI)以及现代微服务架构中。本资料"event-driven_io-源码.rar"提供...

Global site tag (gtag.js) - Google Analytics