ウィンドウ内にマウスカーソルを維持
C++でゲーム開発を行っております。
マウスカーソルをウィンドウから出さないためにはどのような処理をすればよろしいでしょうか。
例えば Teeworlds や Steam 内の多数のゲームで実装されています。
ゲーム内ではマウスカーソルは別の画像を用いているのでマウスカーソルを消すことは可能です。
マウスカーソルがウィンドウ外に出ている場合 SetCursorPos
で内に戻す処理を行っても
やはり 60FPS なので多少出てしまいます。
マウスカーソルを消して、常にアクティブ状態にすれば見かけ上可能ですが、
その場合は
- 現在
ShowCursor
によりカーソルを非表示にしておりますが、自 window 外でも消去する方法。 - 常にアクティブ状態に保つ方法が分かりません。(
WM_ACTIVATE
時にSetForegroundWindow
や 60FPS でSetForegroundWindow
を行いましたが少しちらつきます)
カーソルを 60FPS で画面中央に固定し、各フレーム毎に変位を求め、別でマウスカーソルの位置を処理する方法だとまあまあ上手くいきますが、1フレームで画面外まで移動されるとやはり同じこととなってしまいます。
60FPS が遅いなら別スレッドで処理すれば良いのですが、Windows がマウスを処理するクロックサイクル以下にはできないかと思います。
ですので、できれば他の方法で行いたいと考えております。
環境は C++ で行っており、DxLib を使用しておりますが、Window メッセージは処理できる形になっております。