一 SetTimer函数的用法
1) 函数原型及变形
SetTimer这个API函数的原型 :
UINT_PTR SetTimer(
HWND hWnd, // 窗口句柄
UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器
UINT uElapse, // 时间间隔,单位为毫秒
TIMERPROC lpTimerFunc // 回调函数
);
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
回调函数:在这个函数里,放入你想要做的事情的代码,你可以将它设定为NULL, 也就是使用系统默认的回调函数,系统默认认的是onTime函数。
例如 :
SetTimer(m_hWnd,1,1000,NULL); //一个1秒触发一次的定时器
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了
于是SetTimer函数的原型变为:
UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)) ,用法如:SetTimer(1,1000,NULL);
2)函数生成方法
在ClassWizard里,选择需要计时器的类,添加WM_TIME消息映射,就自动生成onTime函数了。然后在函数里添加代码,让代码实现功能。
每隔一段时间就会自动执行一次。
3) 回调函数的格式
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);
二. 多个Timer
把ID的值设为〉1的数,如:SetTimer(3,500,NULL);
由WINDOWS会协调他们的然onTimer函数要在函数体内添加每一个timer的处理代码:
onTimer(nIDEvent)
{
switch(nIDEvent)
{
case 1:........;
break;
case 2:.......;
break;
case 3:......;
break;
}
三、KillTimer:取消定时器不再使用定时器后,我们应该调用KillTimer来取消定时。
KillTimer的原型:
BOOL KillTimer(HWND hWnd, // 窗口句柄
UINT_PTR uIDEvent // ID);
在MFC程序中我们可以直接调用KillTimer(int nIDEvent)来取消定时器。
分享到:
相关推荐
MFC 使用定时器的示例. 1,选择Dialog视图,右击选择“事件”. 2,选择“新建Windows消息/事件(N)”列表,添加WM_TIMER到右侧列表内。 3,cpp会自动生成 ...4,使用SetTimer启动定时器. 5,使用KillTimer取消定时器.
SetTimer函数的用法,很实用看看就知道了。
这个是VC定时器SetTimer函数,主要做的事情是循环,和刷新MFC对话框
怎么往SetTimer的回调函数传递参数
定时器事件的响应函数,即 VOID CALLBACK TimerProc() 不是由用户程序自己调用的,而是根据时钟事件借由操作系统内核调用的;那么,如何利用这些形式参数,传递程序逻辑处理所需要的参数呢?本文给出一个解决方案,...
这一份代码是实现MFC的窗口创建完成需要立刻对某些控件进行响应,以及如何使用SetTimer和KillTimer的例子。 因为在MFC的初始化函数中,窗口创建还没有完成不能对窗口上的控件进行初始化操作,这是需要调用OnCreate...
MFC中的OnTimer()函数用于实现定时控制功能,定时控制功能主要由下面三个函数共同实现: SetTimer, KillTimer()和OnTimer(). 简单的说,Settimer是设置一个计时器,当Settimer设置的时间到了,就会自动执行Ontimer中...
在MFC中 使用settimer函数实现定时功能 本程序运用对话框间消息传递机制和回调函数两种方法实现
MFC计时器 利用MFC SetTimer()函数实现的计时功能 交流Email:fangrenxin@gmail.com
学习计算机图形学的各位大侠们,如果你们还在为为找图形函数而烦恼,就请光顾这里吧
使用Visual Studio2008编写,基于MFC 的C++程序SetTimer的源代码,ontimer,killtimer等定时器的使用方法,可直接运行,可自行编写和修改源代码。
本人从零开始学C++/MFC的时候,积累和整理的学习笔记,其中有大部分常见问题和处理办法,看过很过帖子,也查过很多资料,最终把他们记录下来。 Demo内容: ★ ::OnTimer OnTimer()函数用于实现定时控制功能,定时...
利用VC,net2003开发的多线程定时器
线程内使用SetTimer实现定时器 代码中MyThreadTimer时线程定时器的实现
VC++定时器,比SetTimer更精确
在MFC的API函数中使用SetTimer()函数设置定时器,设置系统间隔时间,在OnTimer()函数中实现响应定时器的程序。 2.2 透明贴图实现技术 绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图...
vc++2005定时器settimer()的使用 查了一些资料,写了个简单的程序
下面的代码实现每1/10秒在屏幕上输出字符'a',在vc6与vs2008下调试通过。在vc6下直接可以运行,05或08下按照注释的地方改下就可以了
1、全面解析CWnd类的各种成员函数,包括:SetTimer、EnableWindow、IsZoomed、IsIconic以及CenterWindow、SetWindowPos等等。
C# SetTimer() KillTimer() 演示 调用系统user32进行计时并输出,时长为1秒。10秒钟后自动停止。 PS:网上没一个能用的源码,结果研究了半天才搞明白。 看到好多人说不能用,应该不会吧,我亲自写出来试过的。我的...