MFC中OnTimer定時器用法
一、 單個定時器用法
定時器工作主要流程:設定定時器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);
}