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