计时器

Windows计时器是一种输入设备,它周期性的每经过一个指定时间发给应用程序一个WM_TIMER消息。

计时器被用于多任务、维护更新过的状态报告、实现自动保存、中止程序演示版运行、步进移动和多媒体。

计时器基础

可以通过调用SetTimerWindows程序分配一个计时器。SetTimer有一个时间范围近50天的整形参数,这个值表示多长时间给程序发送WM_TIMER消息。当用完计时器时,调用KillTimer函数停止计时器消息。

系统和计时器

Windows使用的计时器是PC硬件ROM BIOS构造的计时器逻辑的一种简单的扩展。WindowsMS-DOS变成,应用程序通过捕获“计时器滴答”的BIOS中断来实现时钟或计时器。这些中断每54.915毫秒产生一次,大约每秒18.2次。

Windows应用程序不捕获BIOS中断,Windows本身处理硬件中断,这样应用程序不必进行处理。对于拥有计数器的程序,Windows保存一个每次硬件滴答减少的计数。当计数器减到0时,Windows在应用程序消息队列防一个WM_TIMER消息。

因为Windows程序从正常消息队列获取WM_TIMER消息,所以程序不必担心被偶然的WM_TIMER消息中断了程序。

Win98中,计时器和潜在的PC计时器一样具有55毫秒的分辨率。在NT以上,计时器分辨率为10毫秒。

应用程序不能以高于这个分辨率的速率接收WM_TIMER消息。SetTimer调用中指定的时间间隔总是截尾为时钟滴答的整数倍。例如,1000毫秒除以54.925毫秒,得到18.207个时钟滴答,截尾后为18个时钟滴答,它实际为989毫秒。对于小于55毫秒的间隔,每个时钟滴答都产生一个WM_TIMER消息。

计时器消息不是异步

计时器是基于硬件计时中断,但是WM_TIMER消息却不是异步的,WM_TIMER被放在消息队列中,其他消息一起参加排序。同WM_PAINT消息相似,Windows不会在消息队列中放入多个WM_TIMER消息,WM_TIMER消息也是低优先级的,Windows只有在消息队列中没有其他消息时才对WM_TIMER消息进行处理。

计时器使用

方法一:让WindowsWM_TIMER消息发送到窗口过程。SetTimer(hwnd, 1,uiTime ,NULL);

方法二:Windows直接将计时器消息发送给程序的另一函数。

方法三:类似于方法二,但不指定 SetTimer 的窗口句柄,此时第二个参数计时器 ID 被忽略, SetTimer 将返回一个计时器 ID (如果没有可用计时器返回 NULL )。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值