VS2005/MFC之定時器
在使用VS2005開發MFC的定時器時,你會發現屬性欄中並沒有網上所說的"類嚮導"-"添加VM_TIMER消息"的鬼東西,最明智的辦法還是自己寫一個吧!
注:XX代表您自己的工程名字,自己改吧!
首先在你工程文件的XXDlg.h protected 中添加:afx_msg void OnTimer(UINT_PTR nIDEvent);
接着在XXDlg.cpp的BEGIN_MESSAGE_MAP(CTimerDlg, CDialog) 下添加消息映射
ON_WM_TIMER()
最後添加的函數:void XXDlg::OnTimer(UINT_PTR nIDEvent)
下面代碼實現的功能是;有兩個按鈕,一個static 文本,通過一個按鈕點擊開始計時,另外一個按鈕進行復位,讓計時從零開始。文本則是用來顯示記錄的時間。
首先爲static text添加一個一個變量m_Static (這裏您可能會出現一個提示錯誤:)
解決的最粗暴的方式是把這個ID改名字就可以了。
//定時器處理函數
void CTimerDlg::OnTimer(UINT_PTR nIDEvent)
{
static UINT mm=0;
static UINT ss=0;
static UINT mss=0;
CString str;
switch(nIDEvent)
{
case 1:
if(!reset_status==true){ //通過標識位來判斷是否清除當前計時時間
mss++;
if(mss==100){
mss=0;
ss++;}
if(ss==60){
ss=0;
mm++;}
str.Format(_T("%02i:%02i:%02i"),mm,ss,mss);
m_Static.SetWindowTextW(str);
}
else{
ss=0;
ss=0;
mss=0;
str.Format(_T("%02i:%02i:%02i"),mm,ss,mss);
m_Static.SetWindowTextW(str);
reset_status=false;} //標識位還原爲初始化狀態
break;
default:
break;
}
CDialog::OnTimer(nIDEvent);
}
//計時開始
void CTimerDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知處理程序代碼
SetTimer(1,1000,NULL);
}
//復位
void CTimerDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知處理程序代碼
KillTimer(1);
reset_status=true;//復位按鈕點擊後,復位狀態至爲true
m_Static.SetWindowTextW(_T("00:00:00"));
}