(一):OnTimer類
1.開啟對應對話方塊的類嚮導ClassWizard。
2.在訊息映射MessageMaps中添加訊息Message:WM_TIMER。
3.程式碼中將自動添加函數OnTimer(UINT nIDEvent),在該函數內編寫代碼實現計時器功能。
函數代碼一般寫在switch...case中,nIDEvent表示計時器ID號,從而區分不同計時器的實現內容。
若不使用switch...case結構,則表示實現ID為1的計時器功能。
整個函數代碼如下:
void CCountDown::OnTimer(UINT nIDEvent){ switch (nIDEvent) { case 1: { //代碼實現 break; } default: break; } CDialog::OnTimer(nIDEvent);}
4.在要開始計時器的地方調用:
SetTimer(1,1000,NULL);//第一個參數表示計時器的ID;
第二個參數表示間隔時間(ms);
第三個表示調用的函數,NULL表示預設調用OnTimer函數。
5.在要結束計時器的地方調用:
KillTimer(1);) //參數表示計時器的ID
(2):ontimer執行個體:
(1) 建立一個基於對話方塊的應用程式。
(2) 在對話方塊介面添加一個文字框和兩個按鈕。
(3) 文字框添加一個變數m_nTime。
(4) 雙擊“設定定時器”按鈕,添加如下代碼:
void CTimeDlg::OnButton1(){ // TODO: Add your control notification handler code here UpdateData(false); //取消定時器 KillTimer(1); //設定定時器 SetTimer(1,1000,NULL);}(5) 雙擊“取消定時器”按鈕,添加如下代碼:void CTimeDlg::OnButton1(){ // TODO: Add your control notification handler code here UpdateData(false); //取消定時器 KillTimer(1);}(6) 添加一個靜態變數n,申明如下:static n=0;(7) 添加WM_TIMER事件,方法為:按右鍵對話方塊空白部分—>Event,在彈出的對話方塊左邊選擇WM_TIMER雙擊,右邊就出現WM_TIMER,再雙擊添加如下代碼:void CTimeDlg::OnTimer(UINT nIDEvent){ // TODO: Add your message handler code here and/or call default if(nIDEvent==1){ n++; m_nTime=n; UpdateData(false); } CDialog::OnTimer(nIDEvent);}
運行結果:
點擊“設定定時器”文字框數字每隔1秒自動增1,點擊“取消定時器”,數字停止增加,再點擊“設定定時器”,數字接著繼續增加。如果每次設定都從0重新開始,只要在“設定定時器”按鈕把n值重新賦值0即可。