您的位置:首页 > 其它

MFC:定时器Timer

2016-02-18 16:24 281 查看
这里简单介绍一下mfc下定时器的使用。

MFC定时器相关的几个函数分别是SetTimer,OnTimer,killTimer。粗略的说,SetTimer是设置一个计时器并开始执行计时器OnTimer中的代码,OnTimer是计时器所执行的代码。KillTimer用于停止计时器。先分别介绍,后面给出使用例子。

SetTimer原型:

Uint_PTR SetTimer(

UINT_PTR nIDEvent,

UINT nElapse,

void (CALLBACK * lpfnTimer)(

UINT,

UINT_PTR,

DWORD

)

);

参数nIDEvent指定一个非零的定时器ID;参数nElapse指定间隔时间,单位为毫秒;参数lpfnTimer指定一个回调函数的地址,如果该参数为NULL,则WM_TIMER消息被发送到应用程序的消息队列,并被CWnd对象处理。

添加WM_TIMER消息的处理函数的方法是,在VS2010工程的Class View类视图中找到要添加定时器的类,点击右键,选择属性Properties,显示其属性页,然后在属性页工具栏上点击消息Messages按钮,下面列表就列出了所有消息,找到WM_TIMER消息,添加消息处理函数。添加后,对应的类的头文件里会有函数的声明,CPP文件会自动生成类似于如下的内容:

<pre name="code" class="html"><span style="font-size:18px;">void CmyMFCDlg::OnTimer(UINT_PTR nIDEvent)
{
//TODO: 在此添加消息处理程序代码和/或调用默认值

CDialogEx::OnTimer(nIDEvent);
}</span>


之后用户可以在OnTimer()函数中添加需要的处理。如果有多个定时器,可以这样处理:

<span style="font-size:18px;">void CmyMFCDlg::OnTimer(UINT_PTR nIDEvent)
{
//TODO: 在此添加消息处理程序代码和/或调用默认值
switch (nIDEvent)
{
case 1:
// 如果收到ID为1的定时器的消息则调用func1函数
func1();
break;
case 2:
// 如果收到ID为2的定时器的消息则调用func2函数
fun2();
break;
......
default:
break;
}

CDialogEx::OnTimer(nIDEvent);
}</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: