参考:http://www.cnblogs.com/chengxuyuancc/archive/2012/06/08/2542269.html
MFC提供了3个定时器函数来完成有关定时器功能:
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD) );
afx_msg void OnTimer( UINT nIDEvent );
BOOL KillTimer( int nIDEvent );
参数说明:
UINT nIDEvent:定时器的ID,给定时器唯一的身份验证,如果在一个程序中有多个定时器可以用这个ID来确定是那个定时器发送的消息。
UINT nElapse: 定义刷新时间,即间隔多长时间刷新一次,单位是毫秒。
void (CALLBACK EXPORT* lpfnTimer)( HWND, UINT, UINT, DWORD):
这个回调函数中实现刷新时所做的操作,如在数据库中读取数据。但是我们大多数时候不在这里实现,而是在OnTimer中。
函数功能:
SetTimer用来定义一个定时器的属性,如改定时器的ID,刷新时间,处理函数。
OnTimer实际时系统定义消息用来响应WM_TIMER消息,在这里可以实现对多定时器中的各个定时器分别响应,这里才时定时程序大展宏图的地方。
KillTimer用来结束一个定时器。
下面我们用一个例子来说明定时器的使用:
这个例子用来实现一个简单的功能,就是在一个单文档程序中,每间隔5秒弹出一个消息框提示“定时器1”,每隔7秒弹出一个消息框提示“定时器2”。
建立单文档程序略,一路Next。
=========================================================================
(1)在resource.h中定义两个定时器的ID
SetTimer(TIMEID1,5000,0);
SetTimer(TIMEID2,7000,0);
(3) CMainFrame中对WM_TIMER进行响应。
oid CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent) {
case TIMEID1:
{
AfxMessageBox("定时器1!");
break;
}
case TIMEID2:
{
AfxMessageBox("定时器2!");
break;
}
default:
;
}
CFrameWnd::OnTimer(nIDEvent);
}
(4)在CMainFrame的析构函数中添加
KillTimer(IDTIMER1);
KillTimer(IDTIMER2);
==============================
参考2
当执行到程序的某一行代码时,需要添加计时器,就用这条语句:
SetTimer(1, 1000, NULL);
参数如下:
UINT_PTR SetTimer(UINT_PTR nIDEvent, UINT nElapse,
void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD));
设置好后计时器立马生效,1秒后计时器发生中断,在代码所在的类中进行捕捉:
1.在该类的消息中添加:
BEGIN_MESSAGE_MAP(CTab1, CDialog) // CTab1是自己定义的一个类
...
ON_WM_TIMER()
...
END_MESSAGE_MAP()
2.所在的类中添加成员函数:
void OnTimer(UINT_PTR nIDEvent);
3.添加函数的代码,即捕捉后的执行代码:
void CTab1::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case 1: // 计时器1
.... // 处理的代码
KillTimer(1); // 删除此计时器,否则计时器中断完后会自动重新开始计时,到下一次中断时还会发生新的中断
break;
case 2: // 计时器2
.... // 处理的代码
break;
default:
MessageBox("default: KillTimer");
KillTimer(nIDEvent);
break;
}
}
分享到:
相关推荐
MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用MFC定时器的使用
较为详细地介绍了MFC定时器的使用方法,希望能对就定时器不是很清楚的朋友有帮助
mfc 定时器简单用法的小例子
MFC定时器的用法,包含中文注释以及简单的用法介绍。VC6直接编译运行,其他VS双击打开自动完成转换。
不错的一个MFC定时器源代码
本文详细介绍了Viusal C++提供的三种完成周期性操作的方法: 1、Sleep函数(延时函数)。 2、WM_TIMER消息(Windows窗口消息)。 3、多媒体定时器。
MFC定时器的使用 PPT,简洁易懂; MFC定时器的使用 PPT,简洁易懂。
这个是VC定时器SetTimer函数,主要做的事情是循环,和刷新MFC对话框
MFC 通过定时器实现space键的暂停和开始 , 该方法原理能够实现MFC图片幻灯片暂停/开始播放.
本人开发此工具目的有两个,一、熟悉MFC空间操作,熟悉MFC定时器的操作和使用。二、由于本人整天对着电脑,经常容易忘记时间,如果自己做一个定时器,能够在设定时间提醒自己该做什么事。那可是一举多得的事情。最后...
MFC中利用多线程实现定时器,对于学习多线程和 ontimer的同学有用
定时器、创建主线程、子线程
vs2019 MFC 多媒体定时器 ms级定时器
基于MFC的定时器,实现自己定时,到了指定时间播放音乐,播放音乐的空间是windows地带的mediaplayer
定时器定时截取桌面图像,然后显示在view区,VS2010工程。
这一个有具高精度的C++MFC实现的定时器,初学MFC的同志可以考虑参考一下
很简单程序,MFC中设置一个定时器(1s刷新一次),注意这个WM_TIMER是要从对话框那里添加,以前我给搞错了
使用 定时器 (MFC) 示例代码 C++ 简单的小程序,功能齐全,开发简单,易于学习
mfc定时器原代码,制作于2009年4月,平台vc6.0,有一定注释,可以显示日期,时间,计时,倒计时,闹钟,选择播放三种不同铃声
基于MFC的定时器应用例子。实例简单、清晰,直接显示了定时器的使用方法。TIMER在C++编程中,具有重要作用。其它语言也可以借鉴。采用VC环境。用于课程实验或软件开发。