IDirectSoundBuffer8::SetFormat
SetFormat メソッドは、プライマリ バッファーのフォーマットを設定します。アプリケーションに入力フォーカスがあるときには常に、プライマリ バッファーが指定されたフォーマットに設定されます。
HRESULT
SetFormat(
LPCWAVEFORMATEX pcfxFormat
);
パラメータ
- pcfxFormat
プライマリ サウンド バッファーの新しいフォーマットを記述する WAVEFORMATEX 構造体のアドレスです。
戻り値
成功した場合は、DS_OK を返します。失敗した場合は、次のいずれかのエラー値を返します。
リターン コード |
DSERR_BADFORMAT |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_OUTOFMEMORY |
DSERR_PRIOLEVELNEEDED |
DSERR_UNSUPPORTED |
解説
プライマリ バッファーのフォーマットは、セカンダリ バッファーを作成する前に設定する必要があります。
アプリケーションに DSSCL_NORMAL 協調レベルが設定されている場合、メソッドは失敗します。
アプリケーションが DSSCL_WRITEPRIMARY 協調レベルで DirectSound を使用しており、フォーマットがサポートされていない場合、メソッドは失敗します。
協調レベルが DSSCL_PRIORITY である場合、DirectSound はプライマリ バッファーを停止し、フォーマットを変更して、バッファーを再開します。要求されたフォーマットをハードウェアがサポートしていない場合でも、メソッドは成功します。DirectSound は、サポートしているフォーマットの中で要求に最も近いものにバッファーを設定します。このような状況が発生しているかどうかをアプリケーションで判断するには、プライマリ バッファーに対して GetFormat メソッドを呼び出し、その結果を SetFormat メソッドで要求したフォーマットと比較します。
このメソッドは、セカンダリ サウンド バッファーでは利用できません。新しいフォーマットが必要な場合、アプリケーションは新しい DirectSoundBuffer オブジェクトを作成する必要があります。
要件
ヘッダー: DSound.h 宣言
ライブラリ: Dsound3d.dll 内容