6

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

问题是当我这样做时,我的窗口会收到一个 WM_MOUSEMOVE ——它充其量会抵消用户想要的任何移动,最坏的情况是进入反馈循环。

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

有没有解决这个问题的好方法?

4

1 回答 1

4

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

于 2012-05-14T09:51:02.857 回答