wxIdleEvent 空闲事件处理

说明

当没有消息需要处理的情况下,可以通过定义OnIdle事件处理消息函数,来达到充分利用CPU的目的。当用户鼠标按下,执行大量的渲染,可能会出现屏幕的卡顿,如果让OnIdle函数处理,就可以避免出现这个问题

例子

#include "wx/event.h"

void OnIdle(wxIdleEvent& event);

EVT_IDLE(CFlightInstrumentPanel::OnIdle)

void CFlightInstrumentPanel::OnIdle( wxIdleEvent& event )

{

static int x = 0;

if (x<1000)

{

wxClientDC dc(this);

wxPen pen(*wxRED,1);

dc.SetPen(pen);

dc.DrawRectangle(x, 0, 200, 300);

dc.SetPen(wxNullPen);

x=x+100;

}

event.Skip();

}

缺点:不是一个定时器,而且只是在消息循环体中没有任何消息的情况下,执行该事件

时间: 2024-10-27 03:09:30

wxIdleEvent 空闲事件处理的相关文章

揭开.NET消息循环的神秘面纱(GetMessage()无法取得任何消息,就会进入Idle(空闲)状态,进入睡眠状态(而不是Busy Waiting)。当消息队列不再为空的时候,程序会自动醒过来)

揭开.NET消息循环的神秘面纱(-) http://hi.baidu.com/sakiwer/item/f17dc33274a04df2a9842866 曾经在Win32平台下奋战的程序员们想必记得,为了弄清楚“消息循环”的概念,度过多少不眠之夜.尽管如今在应用程序代码的编写过程中,我们已经不再需要它,但是深刻理解Windows平台内部的消息流转机制依然必要.. 在早年直接用Win32/Win16 API写程序的时代,消息循环是我们必须搞懂的第一个观念.现在,不管你用是Windows上面的哪一套

Qemu事件处理机制简介

Qmeu 采用了基于事件驱动的架构,所有的事件都在一个事件循环(event loop)中被处理,系统中默认的事件循环是在main-loop.c 中的主循环(main loop).我们也可以使用 –object iothread,id=my-iothread自己创建事件循环. Qemu 中的事件架构来源于glib,其实qemu本身就是基于glib的,qemu中有大量的概念来源于glib,所以在学习qemu之前先了解一下glib有助于更快的理解qemu.下面首先介绍一下glib中的事件机制. Gli

事件处理机制--浏览器流程处理分析

事件处理机制--浏览器流程处理分析 js的运行是单线程的,单线程即一个时间只能做一件事.浏览器的运行是多线程的. 如下三种情况会进入事件队列(任务队列)中,但不立即执行: 1.定时函数 2.事件函数 3.ajax的回调函数(xhr.onreadystatechange = function(){};  //会调用多次) 主线程中先执行非事件队列函数,再执行事件队列函数,事件队列中的事件先进去的先被判断,但不一定先被执行.事件队列中谁先满足条件先执行谁. 事件队列中的任务执行是有条件的:(前提条件

第三十八课、Qt中的事件处理(上)

一.图形界面应用程序的消息处理模型 二.Qt的事件处理 1.Qt平台将系统产生的消息转换为Qt事件(每一个系统消息对象Qt平台的一个事件) (1).Qt事件是一个QEvent的对象 (2).Qt事件用于描述程序内部或者外部发生的动作 (3).任意的QObject对象都具备事件处理的能力 2.GUI应用程序的事件处理方式 (1).Qt事件产生后立即被分发到QWidget对象 (2).QWidget中的event(QEvent*)进行事件处理 (3).event()根据事件类型调用不同的事件处理函数

Unit02: jQuery事件处理 、 jQuery动画

Unit02: jQuery事件处理 . jQuery动画 jQuery实现购物车案例 <!DOCTYPE html> <html> <head> <title>购物车</title> <meta charset="utf-8" /> <style type="text/css"> h1 { text-align:center; } table { margin:0 auto; wi

第38课 Qt中的事件处理(上)

1. GUI程序原理回顾 (1)图形界面应用程序的消息处理模型 (2)思考:操作系统发送的消息如何转变为Qt信号 2. Qt中的事件处理 (1)Qt平台将系统产生的消息转换为Qt事件 ①Qt事件是一个QEvent的对象 ②Qt事件用于描述程序内部或外部发生的动作 ③任意的QObject对象都具备事件处理的能力 (2)GUI应用程序的事件处理方式 ①Qt事件产生后立即被分发到QWidget对象 ②QWidget中的event(QEvent*)进行事件处理 ③event()根据事件类型的不同,调用不

UI_04 事件处理

?.事件 iOS 有三种事件类型: 触控事件(UIEventTypeTouches):单点.多点触控以及各种手势操作: 传感器事件(UIEventTypeMotion):重力.加速度传感器等: 远程控制事件(UIEventTypeRemoteControl):远程遥控iOS设备多媒体播放等: ?.触摸的基本概念 UIView?持触摸事件(因为继承于UIResponder),?且?持多点触摸.需要定义UIView?类,实现触摸相关的?法. 事件处理方法 UIResponder中定义了一系列对事件的

jQuery事件处理

1.使用jQuery实现事件绑定 语法: $obj.bind(事件类型,事件处理函数) 如: $obj.bink('click',fn); 简写形式 $obj,click(fn); 注: $obj.click()则代表触发了click事件. 2.获得事件对象event 只需要为事件处理函数传递任意一个参数 如: $obj.click(function(e){...}) e就是事件对象,但已经经过jQuery对底层事件对象的封装 封装后的事件对象可以方便的兼容各浏览器 3.事件对象常用的属性 获取

&lt;PY&gt;&lt;目录操作&gt;自制空闲磁盘擦除器(反数据恢复软件)

使用ccleaner的时候有一个安全擦除MFT的选项,发现速度奇慢,而且可定制性很差 所以自己用python写了一个小程序来擦除数据 原理是通过产生文件覆盖空闲空间,然后删除这些文件,来实现原来残留文件的不可恢复,从而使数据恢复软件失效,来确保已删除(清空回收站之后)的数据的安全 理论上设置size=1000000,便不可恢复1MB以上的文件:设置1000,便不可恢复1KB以上的文件 先上效果图 代码如下: import os,win32file,shutil def getpath(): tr