RT,我想一直点着鼠标左键,可是只能持续一段时间,为什么不能一直让鼠标左键的消息有反应?

解决方案 »

  1.   

    开个定时器,用SendMessageBox不断发送消息
      

  2.   

    假设你要做的事是DoJob()
    在鼠标按下事件里:
    DoJob()
    SetTimer(...)在鼠标释放事件里:
    KillTimer(...)
    注意如果按着鼠标移出按钮的范围再松开左键,就没法响应这个事件了在Timer事件里:
    先用GetAsyncKeyState(VK_LBUTTON)和GetCursorPos(&point)判断鼠标是否按着并且在按钮之上,
    如果还在DoJob()
    如果不在了KillTimer(...)
    注意查一下MSDN里GetAsyncKeyState和GetCursorPos的说明。前者获取的是物理按钮,不是逻辑按键。后者读到的是屏幕坐标,不是窗口坐标。
      

  3.   

    鼠标左键按下事件是一个点事件,不是你按照不动就成一个连续事件了。
    鼠标按下时开启定时器,鼠标抬起的时候关闭定时器。定时器里面写马达运动的代码。在这里可以考虑使用SetCapture( ); ReleaseCapture( );锁定鼠标,防止超出对应窗口范围后,无法停止。
    如果不用定时器,难道开线程?不用那么复杂吧。
    只需要确定好鼠标的状态,你要做的功能很容易实现。
    你现在的情况,运动一段距离停止,也可能是你代码中有地方出现了问题,例如,角度换算等,细心检查。
      

  4.   

    是你没看懂大家说的是什么
    你按住鼠标不动他也就发一次消息
    所以你可以在鼠标按下时启动一个定时器去实现你的功能
    当鼠标抬起后再Kill掉这个timer