读书人

MouseMove事件多长时间触发一次呢?

发布时间: 2012-05-15 14:35:29 作者: rapoo

MouseMove事件,多长时间触发一次呢?
MouseMove事件,多长时间触发一次呢?
------------------------------------------
这个事件比较不好理解,对于别的事件,如单击,就是明触的单击一次触发一次。
但是这个事件不好理解,当鼠标连接移动时,这个事件会连接触发,即多次触发,但是多长时间触发一次呢?
这个时间间隔是由谁决定的呢?
请大家指教。


[解决办法]
这个间隔时间由你的机器性能决定,主程序有一个消息泵循环。默认下这个消息泵转得快慢和机器性能相关。
[解决办法]
只要检测到移动就触发。或者说,即时移动了一个像素也会触发一下。
[解决办法]
这个要看您机器的灵敏性了
[解决办法]
理论上是每移动一个象素就触发一次!
但当你移动鼠标的速度比系统处理上一条消息所用的时间要短的话
你会发现两个 MouseMove 消息之间间隔的象素点会距离很远,并不是每一个象素就触发一次消息~
[解决办法]

探讨
理论上是每移动一个象素就触发一次!
但当你移动鼠标的速度比系统处理上一条消息所用的时间要短的话
你会发现两个 MouseMove 消息之间间隔的象素点会距离很远,并不是每一个象素就触发一次消息~

[解决办法]
探讨
引用:
这个要看您机器的灵敏性了

这样解释太笼统了。
如果是一个象素触发一次,我可以相信。
但是你说的灵敏性,不知什么?

[解决办法]
和CPU的时间片有没有关系的?
[解决办法]
BCB XP测试,如果鼠标移动,在控件范围内1秒钟100次。
[解决办法]
探讨
引用:
引用:
这个要看您机器的灵敏性了

这样解释太笼统了。
如果是一个象素触发一次,我可以相信。
但是你说的灵敏性,不知什么?


我想他意思的是:

“触发”这个行为,从硬件发中断,然后OS,产生消息,这个过程中,
  硬件产生中断的频率:
        1 鼠标硬件本身判断自己移动了多少距离时产生硬件信号,800dpi什么的,就是这意思
        2 主板上中断芯片的处理速度. (获取还涉及到了响应速度……)
  软件上的,就是OS产生消息放到消息队列,这个过程虽然是系统做的,但也是要按照规则的吧:就是由线程去做这件事,这就涉及时间片切换,也许每个版本的系统+硬件本身,这个时间片长短都不定。而程序本身由于GetMessage函数本身消耗的时间,与捕获 鼠标移动消息(switch分支的判断) 所需要的时间也不太确定。

总结,这个事件的触发间隔是不定的(从毫秒级说,或者微秒?纳秒?),但如果鼠标移动1秒后还没触发,肯定是哪里出错了……

读书人网 >VC/MFC

热点推荐