假如 你只需要用到一个定时器
定义全局回调函数,不属于任何类中,这种回调函数只能用于一个定时器
void CALLBACK TimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime )
{
AfxMessageBox("Timer is running!");//定时器时间到,强出一对话框,表明定时器已经运行。
}
//设置触发
SetTimer(8, 1000, TimerProc);
假如使用多个定时器:
就在自己的界面源cpp文件种的消息映射种加一句ON_WM_TIMER():
BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_TIMER()//就是这句
ON_WM_QUERYDRAGICON()
ON_EN_CHANGE(IDC_EDIT1, &CMFCApplication2Dlg::OnEnChangeEdit1)
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CMFCApplication2Dlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CMFCApplication2Dlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON4, &CMFCApplication2Dlg::OnBnClickedButton4)
END_MESSAGE_MAP()
然后定义一个成员函数函数void OnTimer(UINT_PTR nIDEvent);
以及定义一个类似于回调的方法1,或者方法2等等,这个依据你使用多少个定时器而定
写法类似于下面这种:
void CMFCApplication2Dlg::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case 1: // 计时器1
this->fun1();//回调1的方法
break;
case 2:
this->fun2();//回调的方法2
break;
default:break;
}
}
关闭定时器直接用KillTimer(id);//id为序列号