移动鼠标光标而不触发WM_MOUSEMOVE

时间:2012-05-13 21:24:30

标签: winapi mousemove

我想使用SetCursorPos将鼠标捕捉到窗口中间(就像在FPS游戏中一样)。

问题在于,当我这样做时,我的窗口会收到WM_MOUSEMOVE - 这最多会取消用户想要的任何移动,最坏的情况是进入反馈循环。

我考虑使用GetCursorPos阅读该位置并忽略该消息,如果它与我用SetCursorPos移动它的位置相同。但这种方法的问题在于鼠标是异步的。如果程序落伍,那么GetCursorPos将返回一个与我预期不同的值 - 因此它不会知道忽略该消息。

有没有一个好方法可以解决这个问题?

1 个答案:

答案 0 :(得分:3)

此类输入应使用RawInput API完成,并在应用有焦点时隐藏光标。这意味着它不受屏幕的限制,你实际上并没有处理鼠标事件。

相关问题