Platform SDK: DirectX

IDirectInputDevice7::SetCooperativeLevel

IDirectInputDevice7::SetCooperativeLevel メソッドは、デバイスのインスタンスに対する協調レベルを確立する。協調レベルは、このインスタンスが、同じデバイスのほかのインスタンス、およびシステムのこれ以外の部分との間で、どのように対話するかを決定する。

HRESULT SetCooperativeLevel(
  HWND hwnd,     
  DWORD dwFlags  
);

パラメータ

hwnd
デバイスに関連付けられているウィンドウ ハンドル。このパラメータは、このプロセスに属する最上位の有効なウィンドウ ハンドルでなければならない。デバイスに関連付けられたウィンドウは、DirectInput デバイスの中でアクティブである間は、破壊してはならない。
dwFlags
デバイスに関連付ける協調レベルを表すフラグ。次のフラグが定義されている。
DISCL_BACKGROUND
アプリケーションは、バックグラウンド アクセス権を要求する。バックグラウンド アクセス権が許可されると、割り当てられたウィンドウがアクティブ ウィンドウでない場合でも、いつでもデバイスを取得できる。
DISCL_EXCLUSIVE
アプリケーションは、排他アクセス権を要求する。排他アクセス権が付与されると、デバイスが取得されている間、デバイスのほかのインスタンスは、そのデバイスの排他アクセス権を取得できない。ただし、別のアプリケーションが排他アクセス権を取得している場合でも、デバイスの非排他アクセス権は常に認められる。

アプリケーションがマウスまたはキーボード デバイスを排他モードで取得している場合は、WM_ENTERSIZEMOVE メッセージおよび WM_ENTERMENULOOP メッセージを受け取ると、常にデバイスを解放する必要がある。それ以外の場合、ユーザーはメニューを操作したり、ウィンドウを移動またはウィンドウのサイズを変更したりすることはできない。

DISCL_FOREGROUND
アプリケーションはフォアグラウンド アクセス権を要求する。フォアグラウンド アクセス権が付与されると、割り当てられたウィンドウがバックグラウンドに移動するときに、デバイスは自動的に解放される。
DISCL_NONEXCLUSIVE
アプリケーションは非排他アクセス権を要求する。デバイスに対するアクセス権は、同じデバイスにアクセスしているほかのアプリケーションの妨げにならない。
DISCL_NOWINKEY
Windows キーを無効にする。このフラグを設定すると、ユーザーは誤ってアプリケーションを終了することがなくなる。

アプリケーションは、DISCL_FOREGROUND または DISCL_BACKGROUND のどちらか一方を指定しなければならない。両方指定することも、まったく指定しないこともエラーとなる。同様に、アプリケーションは、DISCL_EXCLUSIVE または DISCL_NONEXCLUSIVE のどちらか一方を指定しなければならない。

戻り値

成功すれば DI_OK を返す。

失敗すれば次のエラー値のいずれかを返す。

DIERR_INVALIDPARAM
DIERR_NOTINITIALIZED
E_HANDLE

注意

システム マウスが排他モードで取得されると、マウス ポインタは、デバイスが解放されるまで画面から消去される。

アプリケーションは、IDirectInputDevice7::Acquire メソッドでデバイスを取得する前に、このメソッドを呼び出さなければならない。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dinput.h で宣言。
  インポート ライブラリ : dinput.lib を使用。

参照

協調レベル