當我們需要一個固定週期做一些事的時候,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博客
文章標籤
全站熱搜
