[MFC技巧]定时器
程序员文章站
2022-06-10 20:27:33
...
定时器的主要功能是按照程序间隔时间,间隔性的产生WM_TIME消息,发送到指定窗口,窗口会对WM_TIME消息进行处理。
一、WM_TIMER消息映射进行时间控制
- 调用函数SetTimer()设置定时间隔,如
SetTimer(0,200,NULL)
即为设置200ms的时间间隔。 - 增加定时响应函数
OnTimer()
,并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。此方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为10ms
, - 使用
KillTimer()
来关闭定时器
经过查阅官方文档知道,时间间隔范围:USER_TIMER_MINIMUM(最小值) 到 USER_TIMER_MAXIMUM(最大值)
#define USER_TIMER_MAXIMUM 0x7FFFFFFF 毫秒
#define USER_TIMER_MINIMUM 0x0000000A 毫秒 10ms
二、使用
void CTimerDlg::OnStartTimer()
{
SetTimer(0, 100, NULL);
SetTimer(1, 1000, NULL);
}
void CTimerDlg::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case 0:
{
static UINT num = 0;
CString strCount;
strCount.Format(_T("%d"), num);
GetDlgItem(IDC_EDIT_Timer)->SetWindowText(strCount);
num++;
if (100 == num)
{
KillTimer(0);
}
}
case 1:
{
CTime mSystem;
mSystem = CTime::GetCurrentTime();//获取当前系统时间
GetDlgItem(IDC_STATIC_Timer)->SetWindowText(mSystem.Format("%Y-%m-%d %H:%M:%S"));
}
default:
break;
}
CDialog::OnTimer(nIDEvent);
}
更多精确定时器
上一篇: C#判断链接图片是否存在