私はマウスカーソルをWin32 API ShowCursor(FALSE)を使って隠そうとしていますが、マウスが他の画面に移動したときのマルチスクリーン設定では、私はこれを防ぐことができますか?マルチスクリーンの設定でマウスカーソルを隠す
これはフルスクリーンのビデオゲームのためのもので、私はこのようなことをすることができる任意のウィンドウAPIを見つけることはできないようです。
私はマウスカーソルをWin32 API ShowCursor(FALSE)を使って隠そうとしていますが、マウスが他の画面に移動したときのマルチスクリーン設定では、私はこれを防ぐことができますか?マルチスクリーンの設定でマウスカーソルを隠す
これはフルスクリーンのビデオゲームのためのもので、私はこのようなことをすることができる任意のウィンドウAPIを見つけることはできないようです。
あなたの問題は、マウスカーソルを隠すことではなく、ウィンドウに拘束することですか?
この場合、ClipCursor
関数がそのジョブを実行する必要があります。
{
RECT windowRect;
GetWindowRect(hWnd, &windowRect);
ClipCursor(&windowRect);
}
枠なしのフルスクリーンウィンドウの場合は、一度行うと問題はありません。ウィンドウの位置やサイズが変更されたり、ウィンドウがフォーカスを失った場合は、その手順を繰り返す必要があります。
ゲームのプログラミングでは、排他的なマウス操作モード(tutorialsが利用可能)を提供するDirectInputなどのより良い方法があります。すべて低レベルで行います。
これを処理するさまざまな方法については、たとえばthis one on the MSDN forumsのような議論があります。
カーソルがウィンドウの外にある間にカーソルを非表示にしたい場合は、WM_SETCURSOR
メッセージを処理し、SetCursor
を使用してカーソルを非表示にする必要があります。
case WM_SETCURSOR:
SetCursor(NULL);
return TRUE;