VC精确定时

基本内容参考这里的

http://www.vckbase.com/document/viewdoc/?id=1301

http://hi.baidu.com/necrohan/blog/item/899eb7d1590501329b5027d4.html
1WM_TIMER消息映射
SetTimer()
设置定时间隔,定时响应函数  OnTimer()
计时精度30ms,定时器消息在多任务操作系统中的优先级很低,不能得到及时响应。

2sleep()函数
计时精度30msCPU占用率高,延时期间不能处理其他的消息。

3COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程
计时精度秒级。
   CTime
类和CTimeSpan类也行。
4GetTickCount()函数
在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,CPU占用率高。

5、多媒体定时器函数DWORD timeGetTime(void)
精度为ms

6、多媒体定时器timeSetEvent()函数
精度为ms

MMRESULT timeSetEvent UINT uDelay, UINT uResolution, LPTIMECALLBACK lpTimeProc, WORD dwUser, UINT fuEvent

函数的参数说明如下:

uDelay:以毫秒指定事件的周期。

uresolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms

lpTimeProc:指向一个回调函数。

dwUser:存放用户提供的回调数据。

fuEvent:指定定时器事件类型:

         TIME_ONESHOTuDelay毫秒后只产生一次事件

         TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。

需引用:
#include <Mmsystem.h>

#pragma comment(lib,"Winmm.lib")

还有该函数MMRESULT timeKillEvent( UINT uTimerID);可能要使用到

 

7QueryPerformanceFrequency()QueryPerformanceCounter()函数
误差不超过1微秒,精度与CPU等机器配置有关。

 

使用情况:

精确到秒级的使用:

COleDateTime类和COleDateTimeSpan(或者CTime类和CTimeSpan)

精确到毫秒级的使用:

#include <Mmsystem.h>

#pragma comment(lib,"Winmm.lib")

DWORD timeGetTime(void)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值