Platform SDK: DirectX |
IDirectSoundBuffer::SetFormat メソッドは、このアプリケーション用のプライマリ サウンド バッファのフォーマットを設定する。このアプリケーションに入力フォーカスが置かれるたびに、DirectSound はプライマリ バッファを指定されたフォーマットに設定する。
HRESULT SetFormat( LPCWAVEFORMATEX lpcfxFormat );
成功すれば DS_OK、失敗すれば次のエラー値のいずれかを返す。
DSERR_BADFORMAT |
DSERR_INVALIDCALL |
DSERR_INVALIDPARAM |
DSERR_OUTOFMEMORY |
DSERR_PRIOLEVELNEEDED |
DSERR_UNSUPPORTED |
書き込み優先協調レベルでアクセスされているプライマリ バッファに対してこのメソッドを呼び出す場合は、IDirectSoundBuffer::SetFormat を呼び出す前にバッファを停止しておかなければならない。書き込み優先以外の協調レベルのプライマリ バッファに対してこのメソッドを呼び出す場合は、DirectSound はプライマリ バッファを明示的に停止し、フォーマットを変更し、プライマリを再開する。アプリケーションがこれらの作業を明示的に行う必要はない。
ハードウェアが、要求されたフォーマットをサポートしていない場合でも、このメソッドは成功する。DirectSound はバッファを、要求に最も近いフォーマットに設定し、要求されたフォーマットでサウンドをミックスし、変換した上でプライマリ バッファに送る。このような状況が発生しているかどうかを判断するには、アプリケーションはプライマリ バッファに対して IDirectSoundBuffer::GetFormat メソッドを呼び出し、その結果を、SetFormat メソッドで要求したフォーマットと比較する。
アプリケーションが DSSCL_NORMAL 協調レベルに設定されている場合、このメソッドの呼び出しは失敗する。
このメソッドはセカンダリ サウンド バッファには有効ではない。セカンダリ サウンド バッファがフォーマットの変更を必要とする場合、アプリケーションは新しいフォーマットを使う新しい DirectSoundBuffer オブジェクトを作成すべきである。
DirectSound は PCM フォーマットをサポートしている。現在、圧縮フォーマットはサポートしていない。
Windows NT/2000 : Service Pack 3 を適用した Windows NT バージョン 4.0 以降が必要。
Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dsound.h で宣言。
インポート ライブラリ : dsound.lib を使用。