对于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);
}