當我們需要一個固定週期做一些事的時候,Timer便是一個很好用的方法。
其生命週期涉及下列方法:
ON_WM_TIMER() void SetTimer(UINT_PTR nIDEvent, UINT uElapse, void (__stdcall *lpfnTimer(HWND, UINT, UINT_PTR, DWORD))); void KillTimer(UINT_PTR nIDEvent); void OnTimer(UINT nIDEvent);
首先在.h檔中定義我們要使用的Event及OnTimer
// TestTimerDlg.h #define ID_CASE1 0 #define ID_CASE2 1 class CTestTimerDlg : public CDialog { // Construction public: afx_msg void OnTimer(UINT nIDEVENT); //中間系統自動產生程式碼省略 }
然後.cpp檔中的「BEGIN_MESSAGE_MAP(CTestTimerDlg, CDialog)」函式中加入ON_WM_TIMER()。
// TestTimerDlg.cpp BEGIN_MESSAGE_MAP(CTestTimerDlg, CDialog) ON_WM_TIMER() END_MESSAGE_MAP()
在程式進入點「OnInitDialog()」函式中加入SetTimer(),也可以看是要在哪時觸發,在此我們是放在Button中。
// TestTimerDlg.cpp void CTestTimerDlg::OnOK() { // TODO: Add extra validation here SetTimer(ID_CASE1,2000,NULL); SetTimer(ID_CASE2,5000,NULL); }
再來實做OnTimer方法,定義Timer事件的對應處理方法。
// TestTimerDlg.cpp void CTestTimerDlg::OnTimer(UINT nIDEvent) { switch (nIDEvent) { case 0: KillTimer(ID_CASE1); AfxMessageBox("Timer 1"); break; case 1: KillTimer(ID_CASE2); AfxMessageBox("Timer 2"); break; } }
參考資料:zanos的ChinaUnix博客
全站熱搜