次の方法で共有


IDirectInputDevice8::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 ロゴ キーを無効にします。このフラグを設定すると、ユーザーが誤ってアプリケーションから抜け出すことがなくなります。ただし、デフォルトのアクション マッピング ユーザー インターフェイス (UI) が表示されているときは DISCL_NOWINKEY に効果はなく、Windows ロゴ キーはその UI が表示されている限り通常どおり動作するので注意してください。

戻り値

メソッドが正常に実行された場合、戻り値は DI_OK です。メソッドが失敗した場合、戻り値は次のいずれかのエラー値です。DIERR_INVALIDPARAM、DIERR_NOTINITIALIZED、E_HANDLE

解説 

アプリケーションは DISCL_FOREGROUND または DISCL_BACKGROUND のどちらかを指定する必要があり、両方指定するかどちらも指定しないとエラーになります。同様に、アプリケーションは DISCL_EXCLUSIVE または DISCL_NONEXCLUSIVE のどちらかを指定する必要があります。

システム マウスが排他モードで獲得されると、デバイスが解放されるまでポインターは画面から消去されます。このことは、GUID_SysMouse を IDirectInput8::CreateDevice に渡して作成されたマウスのみに該当します。

バックグラウンドの排他モード協調レベルを選択するアプリケーションでは、他のアプリケーションが排他アクセスを要求した場合、デバイスへのアクセスを保持できるかどうかは保証されません。バックグラウンドの排他モード アプリケーションがアクセスを失った場合、DirectInput デバイス メソッドの呼び出しは失敗し、DIERR_NOTACQUIRED が返されます。アプリケーションがデバイスへのアクセスを再獲得するには、デバイスを手動で解放し、再獲得してください。

アプリケーションは、IDirectInputDevice8 インターフェイス メソッドを使用してデバイスを獲得する前に、このメソッドを呼び出す必要があります。

要件

ヘッダー: Dinput.h 宣言

関連項目

協調レベル