Microsoft DirectX 8.0 (C++) |
パフォーマンスを初期化し、オプションでデフォルトのオーディオパスをセットアップする。このメソッドは、オーディオパスを使ってパフォーマンスを演奏する前に、呼び出す必要がある。
ほとんどの場合、IDirectMusicPerformance8::Init ではなく、このメソッドを使用することが望ましい。
HRESULT InitAudio( IDirectMusic** ppDirectMusic, IDirectSound** ppDirectSound, HWND hWnd, DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS *pParams );
ppDirectMusic が指す変数に、有効な IDirectMusic または IDirectMusic8 インターフェイス ポインタが含まれている場合は、既存のオブジェクトがパフォーマンスに割り当てられる。このインターフェイスの参照カウントはインクリメントされる。
ppDirectMusic が指す変数に NULL が含まれる場合、DirectMusic オブジェクトが作成され、IDirectMusic インターフェイス ポインタが返される。QueryInterface を使用して IDirectMusic8 を取得する。
ppDirectMusic が NULL の場合、DirectMusic オブジェクトが作成され、パフォーマンスによって内部的に使用される。
「注意」を参照すること。
IDirectSound インターフェイス ポインタが ppDirectSound のメソッドに渡される場合、このパラメータは無視される。その場合、アプリケーションは、IDirectSound8::SetCooperativeLevel を使ってウィンドウ ハンドルを設定する責任がある。
成功した場合は S_OK を返す。
失敗した場合は、次のいずれかのエラー値を返す。
DMUS_E_ALREADY_INITED |
DSERR_BUFFERLOST |
DSERR_PRIOLEVELNEEDED |
DSERR_UNINITIALIZED |
E_NOINTERFACE |
E_OUTOFMEMORY |
E_POINTER |
このメソッドは、一度だけ呼び出すことができる。既存の IDirectMusic8 インターフェイスの取得に使用することはできない。
DirectMusic オブジェクトは、以下の方法で、パフォーマンスに関連付けることができる。
ppDirectSound で指定するインターフェイス ポインタは、CLSID_DirectSound8 クラスのオブジェクトへのインターフェイスを指していなければならない。このクラスのオブジェクトは、IDirectSound と IDirectSound8 の両方をサポートしているが、IDirectSound インターフェイスを渡す必要がある。このクラスのオブジェクトの作成方法については、「IDirectSound8」の「注意」を参照すること。DirectSound オブジェクトは、InitAudio に渡す前に完全に初期化する必要がある。それが CoCreateInstance を使って作成されたオブジェクトである場合は、IDirectSound8::Initialize を呼び出す。IDirectSound8::SetCooperativeLevel を使って、協調レベルを DSSCL_PRIORITY に設定する。
hWnd パラメータに NULL を渡すと、現在の前面ウィンドウのハンドルを DirectSound に渡すことができる。ただし、アプリケーション ウィンドウが初期化中に前面にあると想定しないこと。最上位アプリケーションのウィンドウ ハンドルを渡すことが最良である。
dwFlags および pParams に設定されたパラメータは、デフォルトのオーディオパス、およびその後作成されたすべてのオーディオパスに適用される。
dwDefaultPathType で 0 以外の値が渡された場合、何かのアプリケーションによって DirectSound が書き込み優先協調レベルで初期化されていると、このメソッドは失敗して DSERR_BUFFERLOST を返す。
パフォーマンスを解放する前に、IDirectMusicPerformance8::CloseDown メソッドを使用してパフォーマンスを終了しなければならない。
ヘッダー : dmusici.h で宣言。