MFC 程序的延时操作
来源:互联网 发布:mac 怎么恢复safari 编辑:程序博客网 时间:2024/04/29 04:24
具体实现的目标:
1、延迟要执行的操作
2、下次延时操作到来时,判断上一次的延时操作是否已经完成,
A:如果上一次操作还没开始做,结束上一次延时,本次延时开始;
B:如果上一次操作正在执行中,执行完上一次操作,本次延时开始;
C:如果已经完成,执行本次延时
最近做了个项目,在项目中,我用了CEdit的EN_KILLFOCUS来执行一次改变图形状态的操作,但是,这样需要CEdit控件在推动焦点后去执行动作,老板的需要确是用户做完后就得执行,这样的话,就得用EN_CHANGE事件来做这次的事了,但是如果用EN_CHANGE,新的问题又来了,这样执行的操作太过频繁,会影响效率和用户体验!所以要做到用户正直输入完成后才去执行这个动作才是最好的!于是我就想到了给程序做延时操作,以前一直用MFC的SetTimer来做,但是SetTimer个人觉得还是不方便
下面开始贴代码:
1、SetTimer形式实现延时操作:
//定义Timer事件
#define TM_MSG 10000
//执行延时操作的地方
void XXXX::DoningSomething()
{
KillTimer(TM_MSG);
SetTimer(TM_MSG,1000,NULL);
}
void CXScrollBar::OnTimer(UINT nIDEvent)
//=============================================================================
{
//=============================================================================
{
if(TM_MSG == nIDEvent)
{//具体实现}
}
2、新方法,自己用线程实现了一个Timer
//加入头文件
#include "MoTimer/MoTimer.h"
//在类中定义成员变量
CMoTimer m_mtChangeChartInfo;
//初始化
,m_mtChangeChartInfo(true)//构造函数,true是只执行一次,false是无限次循环执行
m_mtChangeChartInfo.registerHandler(TimerChangeChartInfohProc, this);//转要执行的函数和该函数的参数
m_mtChangeChartInfo.setInterval(1000);//延时时间
m_mtChangeChartInfo.setInterval(1000);//延时时间
//在要进行延时操作的地方做延时
m_mtChangeChartInfo.Cancel();
m_mtChangeChartInfo.Start();
m_mtChangeChartInfo.Start();
//具体的实现函数格式
typedef void(CALLBACK *Timerfunc)(void* p);
typedef Timerfunc TimerHandler;
typedef Timerfunc TimerHandler;
附上下载地址:http://download.csdn.net/detail/blackoto/4806122
- MFC 程序的延时操作
- MFC中程序的延时
- 微信小程序延时操作
- 延时操作的方式:
- 程序启动画面+线程中的延时操作
- 最简单的延时程序
- 我的C51延时程序
- IAR 的精确延时程序
- IAR的精确延时程序
- AVR 的精确延时程序
- 线程延时操作的实现
- AndroidL 操作延时的方法
- ios常用的延时操作
- 关于延时操作的使用
- MFC延时功能GetTickCount的实现
- 如何正确计算多重循环延时程序的延时时间
- 51单片机汇编语言--延时程序的延时时间
- 延时程序
- #pragma
- 成为高效程序员的搜索技巧
- UVa 839 - Not so Mobile
- 想成为嵌入式程序员应知道的10个基本问题
- 学好大学课程
- MFC 程序的延时操作
- 数组指针与指针数组
- java的布局-3
- 最全的smarty‘总结~耿兴隆老师著作,学子Jye献上
- .net下在Web.Config文件中添加连接字符串
- .Net 与 MFC 的区别 .
- Java Layout总结-BorderLayout
- C/C++指针相关
- 20条常见的编码陷阱 你中枪了没?(非常不错,推荐大家看一下)