如何计算鼠标的移动速度
编号:QA000807
建立日期: 1999年4月13日 最后修改日期:1999年4月13日
所属类别:
DD:
Vb5
PW98
如何利用GetCursorPos来计算鼠标的速度?(如:米/秒)
回答:
准确的办法是利用API函数SetWindowsHookEx安装一个WH_MOUSE钩子。这样系统的所有WM_MOUSEMOVE消息(可以来自不同的窗口)都会传递给钩子函数。每个WM_MOUSEMOVE消息的参数就是鼠标位置(相对于窗口的客户区,可以用ClientToScreen函数转换为屏幕坐标),记下连续两次鼠标的位置和时间。在此过程中无需使用GetCursorPos函数。使用GetDeviceCaps的LOGPIXELSX和LOGPIXELSY获得一个像素对应的Twip数(567twips = 1 cm)。
还有一种方法,需要使用GetCursorPos函数。作法是在你的Form上放置Timer控件,定时间隔尽可能小,比如55ms(VB的Timer只能精确到55ms,如果要提高精度可以参考QA000424 "记时精度更高的Timer控件")。在连续两次Timer事件中使用GetCursorPos函数得到鼠标的屏幕位置。
此问题由李海回答。
| |
|
|
| |
|
|