[Visual Studio C++] [MFC] 普通定時器講解
一.前言
定時器是我們在工程中使用較多的一個工具,這裡提供一個入門的普通定時器,一共需要三個函式:
- SetTimer()
- KillTimer()
- OnTimer()
下面少講理論知識,直接在應用中學習,做到快速上手。
二.講解
1.函式的功能
- SetTimer()函式
設定一個定時器。
- OnTimer()函式
系統預設的回撥函式。
- KillTimer()函式
關閉定時器。
2.函式使用
SetTimer()函式
①原型:
//UINT_PTR SetTimer( hWnd , nIDEvent, uElapse, lpTimerFunc); UINT_PTR SetTimer( HWND hWnd, // 視窗控制代碼 UINT_PTR nIDEvent, // 定時器ID UINT uElapse, // 時間間隔 TIMERPROC lpTimerFunc // 回撥函式 );
②引數:
- hWnd 視窗控制代碼。
- nIDEvent 定時器ID,多個定時器時,可以通過該ID判斷是哪個定時器,也就是這個定時器的名字。
-
uElapse 時間間隔,單位為毫秒。
-
lpTimerFunc 回撥函式,如果設定為 NULL ,則系統自動呼叫onTimer()函式。
③.說明
在MFC程式中SetTimer被封裝在CWnd類中,呼叫就不用指定視窗控制代碼了。
④.例項
SetTimer(1,1000,NULL);
- 1: 計時器的名稱;
- 1000: 時間間隔,單位是毫秒;
- NULL: 使用onTime()函式。
OnTimer()函式
①原型:
OnTimer(nIDEvent)
②引數:
- nIDEvent 定時器ID,也就是這個定時器的名字。
③.新增步驟:
1)在類檢視中選中你想要操作的類,截圖如下:
2)在 ‘ 屬性 ’ 視窗中點選 ‘ 訊息欄 ’,找到 ‘ WM_TIMER ’ 後,點選後面‘ 箭頭指向下的按鈕 ’,選擇ADD OnTimer,則系統會自動在對應類的“ .h ”檔案中新增OnTimer()的宣告,在對應類的“ .cpp ”中新增OnTimer()函式的實現,你只需要在實現中新增你想要的內容就可以了。截圖如下:
④.例項
void CMainControl::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值
switch(nIDEvent)
{
case 1:
{
CString temp;
temp.Format(_T("%.6lf"),FalconData.FalconPos[0]); //操縱桿X
GetDlgItem(IDC_XFALCON)->SetWindowText(temp);
temp.Format(_T("%.6lf"),testBP2);//FalconData.FalconPos[1]); //操縱桿Y
GetDlgItem(IDC_YFALCON)->SetWindowText(temp);
temp.Format(_T("%.6lf"),testBP1);//;FalconData.FalconPos[2]); //操縱桿Z
GetDlgItem(IDC_ZFALCON)->SetWindowText(temp);
break;
}
}
CFormView::OnTimer(nIDEvent);
}
注:多個定時器的時候可以通過switch來實現選擇。
KillTimer()函式
①原型:
KillTimer(nIDEvent)
②引數:
- nIDEvent 定時器ID,就是這個定時器的名字。
③.說明
當不需要計時器的時候呼叫此函式。
④.例項
KillTimer(1);