IAMVfwCompressDialogs
COM公式ドキュメント
IAMVfwCompressDialogs インターフェイスは、Video for Windows (VFW) コーデックが提供するダイアログ ボックスを表示します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ShowDialog メソッドは、指定されたダイアログ ボックスを表示します。
| iDialog | INT | in | 表示するダイアログ ボックス。これは VfwCompressDialogs 列挙型のメンバーです。 |
| hwnd | HWND | in | ダイアログ ボックスの親ウィンドウのハンドル。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
このメソッドは、ドライバーがストリーミング中、または別のダイアログ ボックスを表示中にダイアログ ボックスの表示を要求されると、エラーを返します。ドライバーがダイアログ ボックスを表示している間は、フィルターをストリーミング (一時停止または実行) できません。
IAMVfwCompressDialogs::ShowDialog は、Video for Windows のビデオ圧縮マネージャー (VCM) 関数である ICConfigure、ICAbout、ICQueryConfigure、ICQueryAbout を呼び出して、適切なダイアログ ボックスを表示したり、ダイアログ ボックスが存在するかどうかを判断したりします。
VfwCompressDialogs 列挙型の VfwCompressDialog_QueryConfig メンバーと VfwCompressDialog_QueryAbout メンバーは、構成ダイアログまたはバージョン情報ダイアログが利用可能かどうかを示します。これらのフラグのいずれかを渡すと、フィルターはダイアログが存在する場合は S_OK を、存在しない場合は S_FALSE を返します。ダイアログが利用可能な場合は、ShowDialog を VfwCompressDialog_Config または VfwCompressDialog_About の値で呼び出してダイアログを表示します。
GetState メソッドは、現在使用されている VCM コーデックの現在の構成設定を取得します。
| pState | void* | out | VCM コーデックの状態。 |
| pcbState | INT* | inout | 状態のサイズへのポインター。 |
戻り値
戻り値は、各ドライバー内の実装によって異なります。
解説(Remarks)
このメソッドは ICGetState マクロを呼び出します。
SetState メソッドは、VCM コーデックの構成を設定します。
| pState | void* | in | VCM コーデックの状態。 |
| cbState | INT | in | 状態のサイズ。 |
戻り値
戻り値は、各ドライバー内の実装によって異なります。
解説(Remarks)
このメソッドは ICSetState マクロを呼び出します。このマクロは、ビデオ圧縮ドライバーに対してコンプレッサーの状態を設定するよう通知します。
SendDriverMessage メソッドは、ドライバー固有のメッセージを送信します。(IAMVfwCompressDialogs.SendDriverMessage)
| uMsg | INT | in | ドライバーに送信するメッセージ。 |
| dw1 | INT | in | メッセージ データ。 |
| dw2 | INT | in | メッセージ データ。 |
戻り値
戻り値は、各ドライバー内の実装によって異なります。
解説(Remarks)
このメソッドを使用する必要は決してないはずです。このメソッドは、任意のプライベート メッセージをビデオ コンプレッサー (コーデック) に送信できます。任意のメッセージに対する動作は未定義である可能性があります。このメソッドの使用は自己責任で行ってください。
このメソッドは、Video for Windows のビデオ圧縮マネージャー (VCM) の ICSendMessage 関数を呼び出してメッセージを送信します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMVfwCompressDialogs "{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}" #usecom global IAMVfwCompressDialogs IID_IAMVfwCompressDialogs "{}" #comfunc global IAMVfwCompressDialogs_ShowDialog 3 int,sptr #comfunc global IAMVfwCompressDialogs_GetState 4 sptr,var #comfunc global IAMVfwCompressDialogs_SetState 5 sptr,int #comfunc global IAMVfwCompressDialogs_SendDriverMessage 6 int,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAMVfwCompressDialogs "{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}" #usecom global IAMVfwCompressDialogs IID_IAMVfwCompressDialogs "{}" #comfunc global IAMVfwCompressDialogs_ShowDialog 3 int,sptr #comfunc global IAMVfwCompressDialogs_GetState 4 sptr,sptr #comfunc global IAMVfwCompressDialogs_SetState 5 sptr,int #comfunc global IAMVfwCompressDialogs_SendDriverMessage 6 int,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。