MFC中定时器的用法

对于MFC中时常用到的定时器,其相关的函数有SetTimer和KillTimer以及OnTimer三个函数,下面就来分析一下这三个函数。

首先是SetTimer函数,其函数原型为UINT SetTimer(UINT nIDEvent,UINT nElapse,void(CALLBACK EXPORT *lpfnTimer)(HWND,UINT ,YINT ,DWORD)),由于其在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了,第一个参数是定时器的ID号,一般情况下为1,当定时器的数量多于1个之后,ID号也响应改变。第二个参数是定时器的设定时间,一般为毫秒级别。第三个参数为回调函数,只有当回调函数为NULL的时候,才能够触发回到函数OnTimer函数响应消息代码。

KillTimer函数式用于移除定时器的作用,只有一个参数,就是定时器的ID号,但不能再定时器的回调函数当中调用!

最后是OnTimer函数,该函数是SetTimer的回调函数,一般情况下用于处理定时器所要处理的消息事件。函数原型:void CTrendStatic::OnTimer(UINT_PTR nIDEvent)

下面讲一下一个简单用法:

比如在一个函数中需要设定一个刷新,于是创建一个刷新函数,在里面设定一个定时器:

void CTrendStatic::Refresh(void)
{
	SetTimer(1,200,NULL);
}

然后再定时器的回调函数中处理你要的消息响应代码,这样的话,会在回调函数中完成你要的功能,并且定时刷新。

void CTrendStatic::OnTimer(UINT_PTR nIDEvent)
{
    //the code
	CStatic::OnTimer(nIDEvent);
}

当然,这其中没有用到KillTimer函数,因为这是一个持续刷新的过程,如果当需要去除定时器的时候,直接用KillTimer(ID)既可以将定时器移除。

你可能感兴趣的:(MFC中定时器的用法)