2011-06-20 8 views
2

私はマウスカーソルをWin32 API ShowCursor(FALSE)を使って隠そうとしていますが、マウスが他の画面に移動したときのマルチスクリーン設定では、私はこれを防ぐことができますか?マルチスクリーンの設定でマウスカーソルを隠す

これはフルスクリーンのビデオゲームのためのもので、私はこのようなことをすることができる任意のウィンドウAPIを見つけることはできないようです。

答えて

1

あなたの問題は、マウスカーソルを隠すことではなく、ウィンドウに拘束することですか?

この場合、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; 
関連する問題