VS2005/MFC之定時器

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"));
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章