1.1
先请看SetTimer这个API函数的原型
UINT_PTR
HWND
UINT_PTR
UINT
TIMERPROC
);
例如
SetTimer(m_hWnd,1,1000,NULL);
在MFC程序中SetTimer被封装在CWnd类中,调用就不用指定窗口句柄了,例如:
UINT
函数反回值就是第一个参数值1,表示此定时器的ID号。
第二个参数表示要等待100毫秒时间再重新处理一次。第三个参数在这种方法中一般用NULL。
注意:设置第二个参数时要注意,如果设置的等待时间比处理时间短,程序就会出问题了。
1.2
此方法首先写一个如下格式的回调函数
void
然后再用SetTimer(1,100,TimerProc)函数来建一个定时器,第三个参数就是回调函数地址。
二、多个定时器的实现与应用
我们在安装定时器时都为其指定了ID,使用多个定时器时,该ID就发挥作用了。
不使用MFC时,当接收到WM_TIMER消息,WPARAM
使用MFC时就更简单了,我们为其增加WM_TIME的消息处理函数OnTimer即可,请看如下例子
void
{
switch
{
case
case
}
CDialog::OnTimer(nIDEvent);
}
当你用回调函数时,我们可以根据nTimerid的值来判断是哪个定时器,例如
void
{
}
三、取消定时器
不再使用定时器后,我们应该调用KillTimer来取消定时,KillTimer的原型如下
BOOL
HWND
UINT_PTR
);
在MFC程序中我们可以直接调用KillTimer(int
如:KillTimer(1);