欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[MFC技巧]定时器

程序员文章站 2022-06-10 20:27:33
...

定时器的主要功能是按照程序间隔时间,间隔性的产生WM_TIME消息,发送到指定窗口,窗口会对WM_TIME消息进行处理。

一、WM_TIMER消息映射进行时间控制

  1. 调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。
  2. 增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作。此方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为10ms
  3. 使用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);
}

更多精确定时器

相关标签: VS 2017/MFC