1. 程式人生 > >[Visual Studio C++] [MFC] 普通定時器講解

[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   // 回撥函式
);

     ②引數:

  1. hWnd     視窗控制代碼。
     
  2. nIDEvent    定時器ID,多個定時器時,可以通過該ID判斷是哪個定時器,也就是這個定時器的名字。
     
  3. uElapse   時間間隔,單位為毫秒。

  4. lpTimerFunc  回撥函式,如果設定為 NULL ,則系統自動呼叫onTimer()函式。  

     ③.說

               在MFC程式中SetTimer被封裝在CWnd類中,呼叫就不用指定視窗控制代碼了。

      ④.例項

SetTimer(1,1000,NULL);
  •    1:            計時器的名稱;
  •    1000:   時間間隔,單位是毫秒;
  •    NULL:    使用onTime()函式。

     

         OnTimer()函式

     ①原型:

OnTimer(nIDEvent)

     ②引數:

  1. 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)

     ②引數:

  1. nIDEvent    定時器ID,就是這個定時器的名字。

     ③.說

               當不需要計時器的時候呼叫此函式。

      ④.例項

KillTimer(1);