Platform SDK: DirectX

IDirectSound::SetCooperativeLevel

IDirectSound::SetCooperativeLevel メソッドは、このサウンド デバイスのアプリケーション協調レベルを設定する。

HRESULT SetCooperativeLevel(
  HWND hwnd,     
  DWORD dwLevel  
);

パラメータ

hwnd
アプリケーションへのウィンドウ ハンドル。「注意」を参照すること。
dwLevel
要求される優先レベル。以下の値のいずれかを指定する。
DSSCL_EXCLUSIVE
アプリケーションを排他レベルに設定する。入力フォーカスが置かれているアプリケーションだけが音を出せる (DSBCAPS_GLOBALFOCUS フラグが設定されているアプリケーションのサウンドは無音になる)。このレベルに設定されたアプリケーションは、DSSCL_PRIORITY レベルのすべての特権をも備えている。アプリケーションが入力フォーカスを得ると、DirectSound は前回 IDirectSoundBuffer::SetFormat メソッドを呼び出したときに指定されたハードウェア フォーマットを復元する。(どの優先レベルが設定されていても、DirectSound は常にウェーブ フォーマットを復元する点に注意すること。)
DSSCL_NORMAL
アプリケーションを完全に協調可能なステータスに設定する。このレベルでは最もスムーズなマルチタスキングとリソース共有の動作が得られるが、プライマリ バッファのフォーマットの変更は行えず、出力もデフォルトの 8 ビット フォーマットに限定される。
DSSCL_PRIORITY
アプリケーションを優先レベルに設定する。この協調レベルに設定されたアプリケーションは IDirectSoundBuffer::SetFormatIDirectSound::Compact の各メソッドを呼び出せる。
DSSCL_WRITEPRIMARY
これは最上位の優先レベルである。このアプリケーションはプライマリ サウンド バッファへの書き込みアクセスを保持する。セカンダリ サウンド バッファはいずれも再生できない。デバイスが DirectSound ドライバでエミュレートされている場合、つまり IDirectSound::GetCaps メソッドが DSCAPS 構造体内に DSCAPS_EMULDRIVER フラグを返した場合は、このレベルは設定できない。

戻り値

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

DSERR_ALLOCATED
DSERR_INVALIDPARAM
DSERR_UNINITIALIZED
DSERR_UNSUPPORTED

注意

アプリケーションはバッファを再生する前に、このメソッドを呼び出して協調レベルを設定しなければならない。推奨される協調レベルは DSSCL_PRIORITY である。他の優先レベルは必要に応じて使用する。詳細については、「協調レベル」を参照すること。

hwnd パラメータは、最上位のウィンドウ ハンドルとすべきである。DirectDraw をも使っている場合は、IDirectDraw7::SetCooperativeLevel メソッドに渡したのと同じハンドルを指定しなければならない。

アプリケーションがウィンドウ ハンドルを簡単に提供できない場合、次のコードを使ってウィンドウ ハンドルを取得できる。

HWND hWnd = GetForegroundWindow();
if (hWnd == NULL)
{
    hWnd = GetDesktopWindow();
}

動作環境

  Windows NT/2000 : Service Pack 3 を適用した Windows NT バージョン 4.0 以降が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dsound.h で宣言。
  インポート ライブラリ : dsound.lib を使用。

参照

IDirectSound::CompactIDirectSoundBuffer::GetFormatIDirectSoundBuffer::GetVolumeIDirectSoundBuffer::LockIDirectSoundBuffer::PlayIDirectSoundBuffer::RestoreIDirectSoundBuffer::SetFormat