一、SetTimer(UINT_PTR nIDEvent,UINT nElapse,NULL)函数
- nIDEvent用于识别不同计时器;
- 调用SetTimer后,每隔nElapse毫秒,会响应一次WM_TIME的消息,调用OnTimer();
- 若OnTimer()功能独立于计时器控制,那么即使上一次的OnTimer()没有执行完毕,依然会再次调用OnTimer();
- 可以在OnTimer()中调用
二、KillTimer(UINT_PTR nIDEvent)函数
- 暂停nIDEvent号计时器
- 可以在OnTimer()中调用
三、C*Dlg::OnTimer(UINT nIDEvent)
- nIDEvent个数超过3个的时候,可以用switch语句代替if;
- 计时器可以用来触发自己或别的计时器;
- 用来做定时检测;
- 计时器可以看做是间隔执行的循环体;
- 单线程下,交互界面刷新有默认的间隔时间,若不分割执行略快的函数,交互界面会来不及刷新函数执行状态;
例如下面的代码
void C*Dlg::OnTimer(UINT_PTR nIDEvent)
{
CDialogEx::OnTimer(nIDEvent);
switch(nIDEvent)
{
case 1:
KillTimer(1);
/*add fuc*/
SetTimer(1,100,NULL);//触发自己
break;
case 2:
KillTimer(2);
SetTimer(1,100,NULL);//触发1号计时器
break;
case 3:
if(!bChange)//保持光标始终在IDC_EDIT1控件上
{
GetDlgItem(IDC_EDIT1)->SetFocus();
}
break;
default:
break;
}
}