在MFC中使用定时器时,主要使用如下三个函数SetTimer、OnTimer、KillTimer。这三个函数其实封装了Windows API定时器函数。
定时器的主要用途是按程序设定的时间间隔,间歇性的产生WM_TIMER消息。
- SetTimer:启动定时器
- OnTimer:定时器响应函数
- KillTimer:结束定时器
定时器使用案例
描述:写一个计数器程序,每个500ms数值增加1。通过启动按钮启动定时器,通过停止按钮停止定时器。
-
步骤1:创建对话框窗口
新建一个对话框程序。在程序中创建一个静态文本框和一个按钮。程序外观如下所示:
-
步骤2:启动定时器
启动定时器。启动定时器在按钮响应函数中进行。
void CMFCApplication6Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
SetTimer(1, 500, NULL);
//1:定时器ID
//500:发送WM_TIMER的时间间隔,以ms为单位,最小的时间间隔是10ms.
//NULL:回调函数设置为NULL
}
- 步骤3:重写定时器响应函数
在主对话框类中重写定时器响应函数。该函数是WM_TIMER的响应函数。想在哪个类中启动定时器,就要在哪个类中添加OnTimer函数。
void CMFCApplication6Dlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int static num = 0;
CString str;
str.Format(_T("%d"), num);
SetDlgItemText(IDC_STC_SHOW, str);
++num;
CDialogEx::OnTimer(nIDEvent);
}
- 步骤4:停止定时器
在“停止计数”中添加响应函数。
void CMFCApplication6Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
KillTimer(1);
}