前段时间开发浏览器的标签动画,效果类似chrome的标签动画,遇到了一个问题:没有合适的定时器。
如你所知,windows的wm_timer优先级太低,导致动画无法按照预期的帧数绘制。
我当时的解决方法是自己起线程,在线程里通过sleep来模拟定时间隔,然后sendmessage到界面线程来驱动动画过程。
为了优化,我在每次动画停止时也销毁定时器线程。
最后的效果在xp系统上看起来不错,但是在win7上有些问题:win7上启动线程比xp上满很多,可能和线程调度的算法有关系。
查msdn后,发现了一个更精确的定时器:Multimedia Timer,现在改为使用这个了,很不错。