Microsoft DirectX 8.0 (C++) |
アプリケーション用のプライマリ サウンド バッファのフォーマットを設定する。このアプリケーションに入力フォーカスが置かれるたびに、DirectSound はプライマリ バッファを指定されたフォーマットに設定する。
プライマリ サウンド バッファは IDirectSoundBuffer8 インターフェイスをサポートしていないので、IDirectSoundBuffer でこのメソッドを呼び出す必要がある。
HRESULT SetFormat( LPCWAVEFORMATEX pcfxFormat );
成功した場合は DS_OK を返す。
失敗した場合は、次のいずれかのエラー値を返す。
DSERR_BADFORMAT |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_OUTOFMEMORY |
DSERR_PRIOLEVELNEEDED |
DSERR_UNSUPPORTED |
プライマリ バッファのフォーマットは、セカンダリ バッファを作成する前に設定する。
アプリケーションに DSSCL_NORMAL 協調レベルが設定されている場合、メソッドは失敗する。
アプリケーションが DSSCL_WRITEPRIMARY 協調レベルで DirectSound を使用している場合、IDirectSoundBuffer8::SetFormat を呼び出す前にバッファを停止しなければならない。フォーマットがサポートされていない場合、メソッドは失敗する。
協調レベルが DSSCL_PRIORITY または DSSCL_EXCLUSIVE である場合、DirectSound はプライマリ バッファを停止し、フォーマットを変更して、バッファを再開する。要求されたフォーマットをハードウェアがサポートしていない場合でも、メソッドは成功する。DirectSound は、バッファを要求に最も近いフォーマットに設定する。このような状況が発生しているかどうかを判断するには、アプリケーションはプライマリ バッファに対して IDirectSoundBuffer8::GetFormat メソッドを呼び出し、その結果を、SetFormat メソッドで要求したフォーマットと比較する。
このメソッドはセカンダリ サウンド バッファでは利用できない。新しいフォーマットが要求された場合、アプリケーションは新しい DirectSoundBuffer オブジェクトを作成しなければならない。
ヘッダー : dsound.h で宣言。