MFC对话框利用空闲时间的方法

OnIdle:MFC空闲处理 当没有任何 Windows 消息正在被处理时,框架调用 CWinApp 的成员函数 OnIdle(如“MFC 库参考”中所述)。重写 OnIdle 以执行后台任务。默认版本更新用户界面对象(如工具栏按钮)的状态,并对框架在操作期间创建的临时对象执行清理工作。下图阐释了在队列中没有任何消息时消息循环调用 OnIdle 的方式。消息循环代码:int CWinThread::Run( 阅读详情

方法一:

1,
BOOL CMFC_3DSphereApp::InitInstance()
{
 ...

 //////CMFC_3DSphereDlg dlg;
 //////m_pMainWnd = &dlg;
 //////INT_PTR nResponse = dlg.DoModal();
 //////if (nResponse == IDOK)
 //////{
 ////// // TODO: 在此处放置处理何时用“确定”来关闭
 ////// //  对话框的代码
 //////}
 //////else if (nResponse == IDCANCEL)
 //////{
 ////// // TODO: 在此放置处理何时用“取消”来关闭
 ////// //  对话框的代码
 //////}

 //////// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
 ////////  而不是启动应用程序的消息泵。
 //////return FALSE;

 static CMFC_3DSphereDlg dlg;
 dlg.Create(IDD_MFC_3DSPHERE_DIALOG,   NULL);  //IDD_MFC_3DSPHERE_DIALOG是程序主对话框ID
 m_pMainWnd = &dlg;
 return TRUE;
}
2,
AfxGetApp()->PostThreadMessage(WM_QUIT,   0,   0);
3,
#define ID_RENDER     1007
ON_COMMAND(ID_RENDER, OnRender)
4,
BOOL CMFC_3DSphereApp::OnIdle(LONG lCount)
{
 // TODO: 在此添加专用代码和/或调用基类
 /*lCount表示上次有消息和下次有消息之间
 OnIdle被调用的次数
 返回值真则再产生一个空闲消息,
 返回值假则退出
 CWinApp::OnIdle(lCount);
 /*
 OnIdle要处理完才会进行下一个消息
 所以把要处理的功能通过消息机制外包出去
 */
 m_pMainWnd->SendMessage(WM_COMMAND, ID_RENDER);
 return true;
 //(InvalidateRect的消息会被忽略,所以一直返回真)
}
5,
void CMFC_3DSphereDlg::OnRender()
{
 CRect rect(0,0,1,1);
 InvalidateRect(&rect);
}

 

方法二:
1,
dlg.cpp 包含#include <afxpriv.h>

2,
dlg.h
声明
afx_msg LRESULT OnKickIdle(WPARAM wParam, LPARAM ICount);
void OnRender();

3,
#define ID_RENDER     1007
ON_MESSAGE(WM_KICKIDLE , OnKickIdle)
ON_COMMAND(ID_RENDER, OnRender)   

4,
LRESULT CMFC_3DSphereDlg::OnKickIdle(WPARAM wParam, LPARAM ICount)
{
/*
 OnKickIdle要处理完才会进行下一个消息
 所以把要处理的功能通过消息机制外包出去
 */
 SendMessage(WM_COMMAND,IDC_RENDER);
 return 1;
}

5,
void CMFC_3DSphereDlg::OnRender()
{
 CRect rect(0,0,1,1);
 InvalidateRect(&rect);
}

QT 利用空闲时间(OnIdle)处理work QAbstractEventDispatcher允许将自己的事件插入到Qt的事件循环中。它也允许监视事件循环。每个需要使用空闲时间的widget,注册当前QObject,添加到总的队列中。当空闲时间到达时,循环处理队列中的widget,向每一个widget发送idlewidget事件。所谓空闲时间(idle time),是指系统中没有任何消息等待处理的时间。比如某个时刻,没有碰触键盘和鼠标,那么,系统就处于所谓的空闲时间。WM_ENTERIDLE消息,发送到进入空闲状态的模式对话框或菜单的所有者窗口。 阅读详情

相关推荐

获取键盘和鼠标处于空闲状态的时间

   我采用的方法是利用全局的钩子对键盘、鼠标进行监控。Windows中的钩子实际上是一个回调函数,当用户有键盘或者鼠标动作的时候,Windows就调用这个函数。比较典型的系统钩子应用就是键盘钩子和鼠标钩子: HHOOK g_hHookKbd = NULL;HHOOK g_hHookMouse = NULL;             在Windows中,一个系统(相对于一个特定进程

3096

MFC Windows程序设计--计时器和空闲处理

CWnd::SetTimer CWnd::KillTimer// 两种定时器机制 1.给指定窗口发WM_TIMER。 2.调用应用定义的回调函数。计时器消息不会积压在消息队列中。SetTimer(1, 2, 3); 1,计时器ID 2,时间间隔 3,回调函数Windows计时器基于的硬件计时器一般54.9ms走一下,如编写精确计时的应用程序,则用多媒体定时器,可以把间隔设置为1ms或更小

x13262608581的博客 1154

MFC消息机制+UI线程和工作线程+模式对话框原理

MFC消息机制,UI线程,工作线程,模式对话框原理,非模式对话框原理

Jiangislogining的博客 6507

MFC编程1

MFC编程1  微软基础类库(MFC:Microsoft Foundation Class)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。使用MFC类库的好处是:首先,MFC提供了一个标准化的结构,这样开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是“站在巨人肩膀上”,从一个比较高的起点编程,故节省了大量的时

macro78的专栏 3762

1.13 空闲时间处理: Onldle <深入浅出MFC读书笔记>

空闲时间处理 1.什么是空闲时间 2.空闲时间可以用来做什么 什么是空闲时间 书上的概念是这样的: 系统中没有任何消息等待处理 例如: 假如我们的我们鼠标从屏幕划过, 可能产生很多的消息, 但是电脑的运行速度实在是太快了, 因此在每个消息被处理的间隙都会产生很多的空闲时间. 空闲时间可以用来做什么 空闲的时间可以用来处理后台工作 传统的SDK程序如果需要处理空闲时间可以用以下代码来代替WinMain中传统的消息循环 while(TRUE) { if(PeekMessage(......)) { i

qq_46001440的博客 364

对话框 重载OnIdle(6月8日)

 今天看《深入浅出MFC》,想试试里面侯捷的那个关于OnIdle函数的例子。于是在一个基于对话框的application里面测试。却发现程序没有进入OnIdle这个函数。我知道这个函数是在CWinApp::run这个函数里面调用的,也就是接在InitInstance()后面的消息循环里面会处理空闲时间。没进入,奇怪!仔细看了下MFC向导自动生成的代码,在InitInstance()里面,它

Randyqiu的专栏 3047

【转】MFC OnIdle的详细说明

转载出处:http://blog.youkuaiyun.com/tsing_best/article/details/25055707 CWinApp::OnIdlevirtual BOOL OnIdle( LONG lCount );返回值:   如果要接收更多的空闲处理时间,则返回非零值;如果不需要更多的空闲时间则返回0。参数:   lCount 该参数是一个计数值,当应用程序的消息队列为空,OnIdle...

weixin_34120274的博客 317

系统空闲计时器,无操作时自动执行指令

计算系统空闲时间,并执行指定的指令,程序是VC++写的,注释也有,应该比较好懂。

[转]关于VC++ MFC中的空闲Idle处理机制!

      关键词:   先根据空闲标志以及消息队列是否为空这两个条件判断当前线程是否处于空闲状态(这个“空闲”的含义同操作系统的含义不同,是MFC自己所谓的“空闲”),如果是,就调用CWinThread::OnIdle(),这也是我们比较熟悉的一个虚拟函数。 如果不是,从消息队列中取出消息,进行处理,直到消息队列为空。 /thrdcore.cpp // main running routine...

weixin_34295316的博客 270

手把手教你用Anaconda安装李沐d2l-zh包(附常见报错解决方案)

本文提供了一份详尽的Anaconda环境下安装李沐d2l-zh包的实战指南。文章从创建虚拟环境、配置国内镜像源加速下载入手,分步讲解核心依赖的预安装策略,并重点剖析了安装过程中常见的报错及其解决方法,旨在帮助初学者和开发者高效、稳定地搭建深度学习实验环境。

efc1234567的博客 1010

Ubuntu 20.04下IgH EtherCAT主站部署实战

本文详细介绍了在Ubuntu 20.04系统上部署IgH EtherCAT主站的完整流程,包括环境准备、源码编译、内核模块配置、网络接口设置及实时性优化等关键步骤。通过实战案例和常见问题排查,帮助开发者快速掌握EtherCAT主站部署技巧,提升工业自动化系统的稳定性和实时性。

weixin_30596343的博客 1071

MFC- OnIdle空闲处理

MFC- OnIdle空闲处理 CWinApp::OnIdlevirtual BOOL OnIdle( LONG lCount );返回值:  如果要接收更多的空闲处理时间,则返回非零值;如果不需要更多的空闲时间则返回0。参数:  lCount 该参数是一个计数值,当应用程序的消息队列为空,OnIdle函数被调用时,该计数值就增加1。  每当一条新...

heshaai6843的博客 551

CPU设计实战:Loongarch版 lab6--20条指令单周期CPU

这个debug卡我时间最长的就是通用寄存器的写使能信号,当时一直没找到,甚至把golden—trace生成了一遍又一遍,对照test,检查了各种,卡了很长时间,我都以为是我之前哪一步搞错了,或者环境什么的,但是一步步做下来并没有,并且“机器永远是对的”让我终于查到了错。debug到一半才想起来写个博客,就不写过程了,下个lab再写过程。下面是两个模块的代码,运行已通过仿真验证。其他的bug就还好,如果认真跟着。就能马上找出来,,上面的每一句话都很重要。走,按逻辑检查并且查。

m0_65369544的博客 6303

在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)

June 1995,Microsoft System Journal Paul DiLascia 是一个自由软件顾问,专长是训练和软件开发(C++ and Windows).他是Windows ++: Writing Reusable Code in C++ (Addison-Wesley, 1992)的作者.问:我的问题是OnIdle在通常的文档/视图程序中可以工作,但是

蒋晟的专栏 3309

非标准包 game.rgss3a 的打开方法 | 2023 年实测

生活笔记

陌雨’的博客 1万+

RAID 0/1/5/10 性能实测:4块 SATA SSD 组阵列,顺序读写速度对比

本文通过实测对比了RAID 0/1/5/10在4块SATA SSD上的顺序读写性能,详细展示了不同RAID级别的配置方法、理论性能与实际测试数据。测试结果显示,RAID 0在顺序读写速度上表现最佳,而RAID 10则在性能与数据安全之间取得了平衡,适合数据库服务器等关键应用场景。

weixin_33462167的博客 424

技术演进中的开发沉思-32 MFC系列:生命周期

本文梳理了MFC框架的核心概念:类层次结构如同家族族谱,CObject为基类;程序需要函数库和头文件作为"食材";典型程序包含CWinApp和CFrameWnd类;消息映射机制像邮局分拣系统,将消息与处理函数绑定;空闲处理机制适合后台轻量任务;对话框与控件则像商店柜台与商品,提供用户交互界面。文章通过生动比喻展现了MFC的设计思想,包括封装、继承和消息驱动等特性,这些概念至今仍影响着现代GUI框架。

你的天空阅读专栏 1027

CAPL编程规范与最佳实践

通过本文的学习,读者应该对CAPL编程规范与最佳实践有了初步的了解,并能够编写高质量的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1748

c++中MFC消息机制,UI线程和工作线程,模式对话框原理

c++

u011555996的博客 2136

Android 13.0 展讯平台关机充电动画横屏显示修改

在13.0的系统rom定制化开发中,在关于展讯平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范, 所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能

安卓兼职framework和app工程师的博客 409

主题045:四足机器人的运动仿真

四足机器人(Quadruped Robot)是模仿哺乳动物四肢运动设计的机器人系统,具有优异的地形适应性和运动稳定性。与双足机器人相比,四足机器人在静态和动态稳定性方面具有天然优势,能够在复杂地形(如楼梯、斜坡、碎石地面)上稳定行走,因此在野外探索、救援任务、军事应用等领域具有广阔的应用前景。本教程将介绍四足机器人的运动学建模、步态规划、稳定性分析和控制策略,并通过Python仿真验证相关理论。典型的四足机器人每条腿包含3个关节:常见的腿部构型包括:对于单腿,足部位置 pfoot\mathbf{p}_{fo

kkchenjj的博客 682

MFC应用程序中实现在空闲(idle)状态超过15分钟后,用户再进行操作时显示提示的功能,你需要追踪用户的最后活动时间。当检测到用户在超过15分钟后重新进行操作时,显示提示

在每次用户活动(如鼠标点击、键盘输入等)时更新记录的最后活动时间。

chenhao0568的专栏 635

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深入理解MFC消息循环和消息泵的原理

首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息循环,他的作用是从应用程序的消息队列中读取消息,并把它派送出去(::DispatchMessage)。而消息路由是指消息派送出去之后,系统(USER32.DLL)把消息投递到哪个窗口,以及以后消息在窗口之间的传递是怎样的。   消息分为队.

u011555996的博客 1951

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MFC里的OnIdle()

CWinThread::Run是程序生命的"活水源头"(侯捷:《深入浅出MFC》,函数存在于VC++ 6.0安装目录下提供的THRDCORE.CPP文件中): // main running routine until thread exitsint CWinThread::Run(){ ASSERT_VALID(this); // for tracking the idle time s

hell2pradise'blog 3353

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

空闲时间的处理:OnIdle,以消息循环过程中为例(顺便解释PeekMessage与GetMessage的不同)

所谓空闲时间(idle time),是指「系统中没有任何消息等待处理」的时间。举个例子, 没有任何程序使用定时器(timer,它会定时送来WM_TIMER),使用者也没有碰触键盘 和鼠标或任何外围,那么,系统就处于所谓的空闲时间。 空闲时间常常发生。不要认为你移动鼠标时产生一大堆的WM_MOUSEMOVE,事实上夹 杂在每一个WM_MOUSEMOVE 之间就可能存在许多空闲时间。毕竟,计算

ylwdi的专栏 2143
上一篇: 短信操作 3
下一篇: RTTI、虚函数和虚基类的开销分析及使用指导
xiaodan007
博客等级 码龄18年 112粉丝 242原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值