标签: winapi mousemove
我想使用SetCursorPos将鼠标捕捉到窗口中间(就像在FPS游戏中一样)。
问题在于,当我这样做时,我的窗口会收到WM_MOUSEMOVE - 这最多会取消用户想要的任何移动,最坏的情况是进入反馈循环。
我考虑使用GetCursorPos阅读该位置并忽略该消息,如果它与我用SetCursorPos移动它的位置相同。但这种方法的问题在于鼠标是异步的。如果程序落伍,那么GetCursorPos将返回一个与我预期不同的值 - 因此它不会知道忽略该消息。
有没有一个好方法可以解决这个问题?
答案 0 :(得分:3)
此类输入应使用RawInput API完成,并在应用有焦点时隐藏光标。这意味着它不受屏幕的限制,你实际上并没有处理鼠标事件。