6

SetCursorPosを使用して、(FPS ゲームのように) ウィンドウの中央にマウスをトラップしたいと考えています。

問題は、そうすると、ウィンドウが WM_MOUSEMOVE を受け取ることです。これは、せいぜいユーザーが意図した動きをキャンセルし、最悪の場合、フィードバック ループに入ります。

GetCursorPos を使用して位置を読み取り、SetCursorPos で移動した場所と同じ場合はメッセージを無視することを検討しました。ただし、このアプローチの問題は、マウスが非同期であることです。プログラムが遅れた場合、GetCursorPos は予想とは異なる値を返すため、メッセージを無視することはできません。

この問題に対処する良い方法はありますか?

4

1 に答える 1

4

この種の入力は、RawInput API を使用して実行し、アプリにフォーカスがあるときにカーソルを非表示にする必要があります。これは、画面に制限されておらず、実際にマウス イベントを処理しないことを意味します。

于 2012-05-14T09:51:02.857 に答える