一、 单个定时器用法
定时器工作主要流程:设置定时器SetTimer,时间到后调用OnTimer函数,关闭定时器KillTimer。可以在程序初始化用SetTimer函数弄成多个线程类似,并行进行多个函数功能。
1.1 SetTimer(H,nID,elipse,NULL)
函数作用:开始nID号定时器
H:要定时的事件句柄,在MFC中不需要该参数,因为MFC封装在CWnd类中
nID:定时器号,比如1,2,3,….125
elipse:定时时间,单位为毫秒。比如1000,则表示定时1s
NULL:回调事件,表示定时结束后,要调用的窗口函数,一般为NULL,表示定时时间到后,调用系统默认的OnTimer()事件。
例子:SetTimer(1,1000,NULL);
1.2 OnTimer(){…}
定时时间到后,自动调用OnTimer()函数
OnTimer()函数是在WM_ONTIMER消息处理函数中打开
打开路径:ClassWizard—Messages—ONTIMER
1.3 KillTimer(nID)
函数作用:取消nID号定时器
nID:与SetTimer()函数中的nID号相同
例子:KillTimer(1);
二、 多个定时器用法
SetTimer(1,1000,NULL);
SetTimer(2,30000,NULL);
SetTimer(3,500,NULL);
系统会自动协调,只需要在OnTimer(nID){}函数体添加判断选择语句就行
void CENetCommunicationDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/orcall defaultCOleDateTime systime = COleDateTime::GetCurrentTime();
switch (nIDEvent)
{
case 1:
{
COleDateTime systime = COleDateTime::GetCurrentTime();
//获取系统当前时间函数
m_SysTime =systime.Format();
UpdateData(FALSE);
}
break;
case 2:
{
MessageBox(_T("30秒显示一次"));
}
break;
case 3:
{
}
break;
case 4:
{
}
break;
case 5:
{
}
break;
default:
break;
}
CDialogEx::OnTimer(nIDEvent);
}