鼠标左键怎么持续响应
RT,我想一直点着鼠标左键,可是只能持续一段时间,为什么不能一直让鼠标左键的消息有反应?
[解决办法]
开个定时器,用SendMessageBox不断发送消息
[解决办法]
假设你要做的事是DoJob()
在鼠标按下事件里:
DoJob()
SetTimer(...)
在鼠标释放事件里:
KillTimer(...)
注意如果按着鼠标移出按钮的范围再松开左键,就没法响应这个事件了
在Timer事件里:
先用GetAsyncKeyState(VK_LBUTTON)和GetCursorPos(&point)判断鼠标是否按着并且在按钮之上,
如果还在DoJob()
如果不在了KillTimer(...)
注意查一下MSDN里GetAsyncKeyState和GetCursorPos的说明。前者获取的是物理按钮,不是逻辑按键。后者读到的是屏幕坐标,不是窗口坐标。
[解决办法]
鼠标左键按下事件是一个点事件,不是你按照不动就成一个连续事件了。
鼠标按下时开启定时器,鼠标抬起的时候关闭定时器。定时器里面写马达运动的代码。在这里可以考虑使用SetCapture( ); ReleaseCapture( );锁定鼠标,防止超出对应窗口范围后,无法停止。
如果不用定时器,难道开线程?不用那么复杂吧。
只需要确定好鼠标的状态,你要做的功能很容易实现。
你现在的情况,运动一段距离停止,也可能是你代码中有地方出现了问题,例如,角度换算等,细心检查。
[解决办法]