设为首页 加入收藏

TOP

计时器(二)
2010-12-30 21:12:14 】 浏览:24034
Tags:计时器
0毫秒,那么Windows将每秒给程式发送一个WM_TIMER讯息。

当您的程式用完计时器时,它呼叫KillTimer函式来停止计时器讯息。在处理WM_TIMER讯息时,您可以通过呼叫KillTimer函式来编写一个「限用一次」的计时器。KillTimer呼叫清除讯息伫列中尚未被处理的WM_TIMER讯息,从而使程式在呼叫KillTimer之後就不会再接收到WM_TIMER讯息。

系统和计时器
 

Windows计时器是PC硬体和ROM BIOS架构下之计时器一种相对简单的扩充。回到Windows以前的MS-DOS程式写作环境下,应用程式能够通过拦截者称为timer tick的BIOS中断来实作时钟或计时器。一些为MS-DOS编写的程式自己拦截这个硬体中断以实作时钟和计时器。这些中断每54.915毫秒产生一次,或者大约每秒18.2次。这是原始的IBM PC的微处理器时脉值4.772720 MHz被218所除而得出的结果。

Windows应用程式不拦截BIOS中断,相反地,Windows本身处理硬体中断,这样应用程式就不必进行处理。对於目前拥有计时器的每个程式,Windows储存一个每次硬体timer tick减少的计数。当这个计数减到0时,Windows在应用程式讯息伫列中放置一个WM_TIMER讯息,并将计数重置为其最初值。

因为Windows应用程式从正常的讯息伫列中取得WM_TIMER讯息,所以您的程式在进行其他处理时不必担心WM_TIMER讯息会意外中断了程式。在这方面,计时器类似於键盘和滑鼠。驱动程式处理非同步硬体中断事件,Windows把这些事件翻译为规律、结构化和顺序化的讯息。

在Windows 98中,计时器与其下的PC计时器一样具有55毫秒的解析度。在Microsoft Windows NT中,计时器的解析度为10毫秒。

Windows应用程式不能以高於这些解析度的频率(在Windows 98下,每秒18.2次,在Windows NT下,每秒大约100次)接收WM_TIMER讯息。在SetTimer呼叫中指定的时间间隔总是截尾後tick数的整数倍。例如,1000毫秒的间隔除以54.925毫秒,得到18.207个tick,截尾後是18个tick,它实际上是989毫秒。对每个小於55毫秒的间隔,每个tick都会产生一个WM_TIMER讯息

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 2/27/27
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇子视窗控制项 下一篇滑鼠

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目