【发布时间】:2014-01-14 09:29:07
【问题描述】:
我的 WinForms 应用程序只需通过在某种带有计时器的循环中设置 Cursor.Position 属性来移动鼠标光标。
我希望这种移动一直持续到用户自己不使用鼠标移动它为止。一旦他或她这样做,我希望我的代码停止。
因此,我需要一种方法来区分用户生成的鼠标移动发送的鼠标移动与我的应用程序生成的鼠标移动。
【问题讨论】:
-
我不太喜欢它,但是......一个简单的标志呢?布尔 _mouseMovedByApplication。当 MouseMove 事件处理程序将被调用并且 _mouseMovedByApplication 为 false 时,它必须停止计时器。
-
@Adriano 这需要比单个布尔值更复杂,因为 WM_MOUSEMOVE 事件是异步的(已发布)。
-
@manuell true,Queue
可能效果更好,但如果更简单的解决方案有效,我不会从(稍微)更复杂的解决方案开始。确保他应该分离事件处理程序,更改位置,清空消息队列,再次附加处理程序。可能太多了。
标签: c# winforms winapi windows-messages message-loop