中国开发网: 论坛: 程序员情感CBD: 贴子 636337
leejd
windows 时钟在搞怪
windows 时钟在搞怪
kempson 发表于 2008年5月29日 00时56分 星期四 Printer-friendly Email story
来自不四不五部门
Windows
shizhao 写道 "请打开Windows 2K/XP/2K3右下角的的时钟面板,如果细心注意的话,你会发现时钟的秒针走动的时候,前四秒钟数字和秒针变化的快,第五秒感觉却很长,这是为什么呢?
有人认为是时钟的精度问题: Windows的时钟程序,使用的是C++中常用的精度不高的WM_TIMER定时器。当显示秒针时,时钟的更新由这样一句语句触发:

SetTimer (hWnd, TimerID, OPEN_TLEN, 0L);

SetTimer的用法很简单,设置好Timer之后,每次触发就只要重新取当前时间重画表盘就可以了。那么OPEN_TLEN就是Timer的触发时间。这个时间是一个常量,在受到影响的系统里面被定义为450,也就是不到半秒。
这样,在第一秒内时钟实际上进行了两次更新,第二秒、第三秒、第四秒都是如此。而第五秒的时候,你就需要等三次更新才能看到(注意 9、10、11都是4xxx的样子)。因此就出现了这个怪异的现象:前四次都是数两下就会跳一秒,第五次要数三下才跳一秒,第五秒的出现时间比前四秒都多了50%,所以就感觉很长了。 那为什么要设计成这样呢?"

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录