DirectSound API を使用してオーディオ データをレンダリングするコンソール プログラムを作成しています。DirectSound プログラミング ガイド (Microsoft から)に従っているときに、興味深い問題に遭遇しました。ドキュメントによると:
デバイス オブジェクトを作成したら、IDirectSound8::SetCooperativeLevelメソッドを使用してデバイスの協調レベルを設定する必要があります。そうしないと音が出ません。
問題は、私がコンソール プログラムを作成していSetCooperativeLevel
て、最初の引数として HWND が必要なことです。コンソール プログラムで処理する HWND がありません。null ポインターを提供しようとしましたが、DSERR_INVALIDPARAM
エラー コードで失敗しました。
IDirectSound8::SetCooperativeLevel
コンソール プログラムでどの HWND 値を指定する必要がありますか? プログラムのオーディオ部分は共有ライブラリとして構築される予定であるため、「外部」プログラムに関する知識はほとんどまたはまったくありません。
アドバイスをありがとう!
注 : SDL、OpenAL、SFML (OpenAL ベース) を使用するなど、単純にオーディオをレンダリングするためのより良いソリューションがあることは知っていますが、現在のプロジェクトでは DirectSound が適用されています。
編集: GLOBAL_FOCUS バッファを作成するときに、デスクトップ ウィンドウまたはコンソール ウィンドウを HWND として使用することについての疑問を解消する Microsoft エンジニアからのメッセージを見つけました。SetCooperativeLevel