我想使用SetCursorPos將鼠標置於窗口中間(如在FPS遊戲中)。移動鼠標光標而不觸發WM_MOUSEMOVE
問題是,當我這樣做時,我的窗口收到一個WM_MOUSEMOVE - 這最多可以消除用戶想要的任何移動,最壞的情況是進入反饋循環。
我曾考慮使用GetCursorPos讀取位置,並忽略該消息,如果它與SetCursorPos中的位置相同。這種方法的問題在於鼠標是異步的。如果程序落後了,那麼GetCursorPos將返回一個與我預期不同的值 - 所以它不會忽略該消息。
有沒有解決這個問題的好方法?
您不需要調用'GetCursorPos',導致'WM_MOUSEMOVE'發佈的移動位置已經在'lParam'中。那麼你將不會有'異步'問題。 –
@SertacAkyuz問題在於,那麼你仍然需要依靠窗口位置來確定鼠標相對於屏幕的位置,並且在程序鎖定其他事情時窗口位置可以改變。 –