IAMVfwCaptureDialogs
COM公式ドキュメント
IAMVfwCaptureDialogs インターフェイスは、Video for Windows (VFW) キャプチャドライバーが提供するダイアログボックスを表示します。このインターフェイスは VFW Capture フィルターによって実装されます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
HasDialog メソッドは、指定されたダイアログボックスがドライバー内に存在するかどうかを判定します。
| iDialog | INT | in | 対象とするダイアログボックス。VfwCaptureDialogs 列挙体のメンバーです。 |
戻り値
解説(Remarks)
このメソッドは、Video for Windows の videoDialog 関数を呼び出して、該当するダイアログボックスの存在を照会します。
ShowDialog メソッドは、指定された VFW ダイアログボックスを表示します。
| iDialog | INT | in | 表示するダイアログボックス。VfwCaptureDialogs 列挙体のメンバーです。 |
| hwnd | HWND | in | ダイアログボックスの親ウィンドウのハンドル。 |
戻り値
HRESULT 値を返します。取り得る値には次のものがあります。
| リターンコード | 説明 |
|---|---|
| 引数が無効です。 | |
| 成功しました。 | |
| 新しいフォーマットで再接続できませんでした。 | |
| フィルターグラフが停止していません。 |
解説(Remarks)
このメソッドを呼び出す前に、フィルターグラフを停止してください。停止していない場合、メソッドは失敗し、VFW_E_NOT_STOPPED を返します。
ビデオフォーマットダイアログ (VfwCaptureDialog_Format) は、ビデオフォーマットを変更する場合があります。その場合、メソッドはキャプチャフィルターの再接続を試みます。ダウンストリームフィルターが新しいフォーマットを拒否した場合、メソッドは VFW_E_CANNOT_CONNECT を返します。
SendDriverMessage メソッドは、ドライバー固有のメッセージを送信します。(IAMVfwCaptureDialogs.SendDriverMessage)
| iDialog | INT | in | ドライバーダイアログボックスのハンドル。VfwCaptureDialogs 列挙体のメンバーです。 |
| uMsg | INT | in | ドライバーに送信するメッセージ。 |
| dw1 | INT | in | メッセージデータ。 |
| dw2 | INT | in | メッセージデータ。 |
戻り値
戻り値は、各ドライバー内の実装によって異なります。
解説(Remarks)
このメソッドを使用する必要は通常ありません。このメソッドは、任意のプライベートメッセージをキャプチャドライバーに送信できます。任意のメッセージに対する動作は不定になる可能性があるため、このメソッドの使用は自己責任で行ってください。
このメソッドは、Video for Windows の videoMessage 関数を呼び出して、ドライバーメッセージを送信します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMVfwCaptureDialogs "{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}"
#usecom global IAMVfwCaptureDialogs IID_IAMVfwCaptureDialogs "{}"
#comfunc global IAMVfwCaptureDialogs_HasDialog 3 int
#comfunc global IAMVfwCaptureDialogs_ShowDialog 4 int,sptr
#comfunc global IAMVfwCaptureDialogs_SendDriverMessage 5 int,int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。