Win32 API 日本語リファレンス
ホームMedia.DirectShow › IVideoWindow

IVideoWindow

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID56a868b4-0ad4-11ce-b03a-0020af0ba770継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IVideoWindow インターフェースは、ビデオウィンドウのプロパティを設定します。

メソッド 39

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT put_Caption(LPWSTR strCaption)

put_Caption メソッドは、ビデオウィンドウのキャプションを設定します。

strCaptionLPWSTRinキャプションを格納する BSTR

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 8 HRESULT get_Caption(LPWSTR* strCaption)

get_Caption メソッドは、ビデオウィンドウのキャプションを取得します。

strCaptionLPWSTR*outキャプションを受け取る BSTR へのポインター。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

呼び出し元は、返された文字列を SysFreeString 関数を使用して解放する必要があります。

vtbl 9 HRESULT put_WindowStyle(INT WindowStyle)

put_WindowStyle メソッドは、ビデオウィンドウのウィンドウスタイルを設定します。

WindowStyleINTinWindows の SetWindowLong 関数の GWL_STYLE 値に対応する 1 つ以上のフラグ。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは SetWindowLong 関数の薄いラッパーであり、慎重に扱う必要があります。特に、現在のスタイルを取得してからフラグを追加または削除するようにしてください。一部の例外を除き、Windows の CreateWindow 関数で許可されるフラグを使用できます。ただし、このメソッドをウィンドウサイズの変更に使用しないでください。また、次のフラグは使用しないでください。

vtbl 10 HRESULT get_WindowStyle(INT* WindowStyle)

get_WindowStyle メソッドは、ビデオウィンドウのウィンドウスタイルを取得します。

WindowStyleINT*outウィンドウスタイルフラグを受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは、Windows の GetWindowLong 関数を GWL_STYLE 値で呼び出します。

vtbl 11 HRESULT put_WindowStyleEx(INT WindowStyleEx)

put_WindowStyleEx メソッドは、ビデオウィンドウの拡張ウィンドウスタイルを設定します。

WindowStyleExINTinWindows の SetWindowLong 関数の GWL_EXSTYLE 値に対応する 1 つ以上のフラグ。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは SetWindowLong 関数の薄いラッパーであり、慎重に扱う必要があります。特に、現在のスタイルを取得してからフラグを追加または削除するようにしてください。一部の例外を除き、Windows の CreateWindow 関数で許可されるフラグを使用できます。ただし、このメソッドをウィンドウサイズの変更に使用しないでください。

vtbl 12 HRESULT get_WindowStyleEx(INT* WindowStyleEx)

get_WindowStyleEx メソッドは、ビデオウィンドウの拡張ウィンドウスタイルを取得します。

WindowStyleExINT*outウィンドウスタイルフラグを受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは、Windows の GetWindowLong 関数を GWL_EXSTYLE 値で呼び出します。

vtbl 13 HRESULT put_AutoShow(INT AutoShow)

put_AutoShow メソッドは、ビデオレンダラーがビデオデータを受信したときにビデオウィンドウを自動的に表示するかどうかを指定します。

AutoShowINTin

ビデオレンダラーがビデオウィンドウを自動的に表示するかどうかを指定します。次のいずれかの値でなければなりません。

説明
OATRUE ビデオレンダラーが一時停止または実行されると、ビデオウィンドウが自動的に表示されます。(既定値。)
OAFALSE ビデオレンダラーはビデオウィンドウを自動的に表示しません。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

既定では、フィルターグラフの状態が一時停止または実行中に変わると、ビデオレンダラーはビデオウィンドウを表示し、前面に移動します。ユーザーがウィンドウを閉じた場合、自動的に再表示されることはありません。

vtbl 14 HRESULT get_AutoShow(INT* AutoShow)

get_AutoShow メソッドは、ビデオレンダラーがビデオデータを受信したときにビデオウィンドウを自動的に表示するかどうかを照会します。

AutoShowINT*out

次のいずれかの値を受け取ります。

説明
OATRUE ビデオレンダラーが一時停止または実行されると、ビデオウィンドウが自動的に表示されます。
OAFALSE ビデオレンダラーはビデオウィンドウを自動的に表示しません。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 15 HRESULT put_WindowState(INT WindowState)

put_WindowState メソッドは、ビデオウィンドウの表示、非表示、最小化、または最大化を行います。

WindowStateINTinウィンドウの表示方法を指定するフラグ。値には、ShowWindow 関数の nCmdShow パラメーターに対して定義された任意の定数を指定できます。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 16 HRESULT get_WindowState(SHOW_WINDOW_CMD* WindowState)

get_WindowState メソッドは、ビデオウィンドウが表示、非表示、最小化、または最大化のいずれの状態であるかを照会します。

WindowStateSHOW_WINDOW_CMD*out

次のいずれかのフラグを受け取ります。

これらのフラグの意味は、Windows の ShowWindow 関数によって定義されます。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 17 HRESULT put_BackgroundPalette(INT BackgroundPalette)

put_BackgroundPalette メソッドは、ビデオウィンドウがバックグラウンドでパレットを実現するかどうかを指定します。

BackgroundPaletteINTin

ビデオレンダラーがバックグラウンドでパレットを実現するかどうかを指定します。次のいずれかの値でなければなりません。

説明
OATRUE ビデオレンダラーはバックグラウンドでパレットを実現します。
OAFALSE ビデオレンダラーはバックグラウンドでパレットを実現しません。(既定値。)

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

BackgroundPaletteOATRUE であり、ビデオ画像がパレットを必要とする場合、ビデオレンダラーはそのパレットをバックグラウンドで実現します。パレットが使用するすべての色は、描画前に表示パレット内で最も近い色に変更されます。これにより、アプリケーションのパレットが乱されないことが保証されます。ただし、ビデオに深刻なパフォーマンス上のペナルティが生じます。

vtbl 18 HRESULT get_BackgroundPalette(INT* pBackgroundPalette)

get_BackgroundPalette メソッドは、ビデオウィンドウがバックグラウンドでパレットを実現するかどうかを照会します。

pBackgroundPaletteINT*out

次のいずれかの値を受け取ります。

説明
OATRUE ビデオウィンドウはバックグラウンドでパレットを実現します。
OAFALSE ビデオウィンドウはバックグラウンドでパレットを実現しません。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 19 HRESULT put_Visible(INT Visible)

put_Visible メソッドは、ビデオウィンドウの表示または非表示を切り替えます。

VisibleINTin

ウィンドウを表示するか非表示にするかを指定します。次のいずれかの値でなければなりません。

説明
OATRUE ウィンドウを表示します。
OAFALSE ウィンドウを非表示にします。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 20 HRESULT get_Visible(INT* pVisible)

get_Visible メソッドは、ビデオウィンドウが表示されているかどうかを照会します。

pVisibleINT*outウィンドウが表示されている場合は OATRUE、非表示の場合は OAFALSE を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは、Windows の IsWindowVisible メソッドを呼び出して WS_VISIBLE スタイルビットを確認します。

vtbl 21 HRESULT put_Left(INT Left)

put_Left メソッドは、ビデオウィンドウの x 座標を設定します。

LeftINTinx 座標(ピクセル単位)。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 22 HRESULT get_Left(INT* pLeft)

get_Left メソッドは、ビデオウィンドウの x 軸座標を取得します。

pLeftINT*outx 軸座標(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 23 HRESULT put_Width(INT Width)

put_Width メソッドは、ビデオウィンドウの幅を指定します。

WidthINTin幅(ピクセル単位)。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 24 HRESULT get_Width(INT* pWidth)

get_Width メソッドは、ビデオウィンドウの幅を取得します。

pWidthINT*out幅(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 25 HRESULT put_Top(INT Top)

put_Top メソッドは、ビデオウィンドウの y 座標を指定します。

TopINTiny 座標(ピクセル単位)。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 26 HRESULT get_Top(INT* pTop)

get_Top メソッドは、ビデオウィンドウの y 座標を取得します。

pTopINT*outy 座標(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 27 HRESULT put_Height(INT Height)

put_Height メソッドは、ビデオウィンドウの高さを設定します。

HeightINTin高さ(ピクセル単位)。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 28 HRESULT get_Height(INT* pHeight)

get_Height メソッドは、ビデオウィンドウの高さを取得します。

pHeightINT*out高さ(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 29 HRESULT put_Owner(INT_PTR Owner)

put_Owner メソッドは、ビデオウィンドウの親ウィンドウを指定します。

OwnerINT_PTRin親ウィンドウへのハンドル(OAHWND 値)。既存の親を削除するには NULL を指定します。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

複合ドキュメント内でビデオを表示するには、このメソッドを使用します。このメソッドは、ビデオウィンドウの親を変更し、ビデオウィンドウに WS_CHILD スタイルを設定します。

Filter Graph Manager を解放する前に、オーナーを NULL にリセットしてください。そうしないと、このウィンドウにメッセージが送信され続け、アプリケーションの終了時にエラーが発生する可能性があります。

vtbl 30 HRESULT get_Owner(INT_PTR* Owner)

get_Owner メソッドは、ビデオウィンドウの親ウィンドウがある場合、それを取得します。

OwnerINT_PTR*outウィンドウへのハンドル(OAHWND 型)を受け取ります。ビデオウィンドウに親がない場合、このパラメーターは NULL 値を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 31 HRESULT put_MessageDrain(INT_PTR Drain)

put_MessageDrain メソッドは、ビデオウィンドウからのマウスおよびキーボードメッセージを受け取るウィンドウを指定します。

DrainINT_PTRinウィンドウへのハンドル(OAHWND 値)。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドを使用すると、アプリケーションはビデオウィンドウ内で生成されるマウスおよびキーボードイベントに応答できます。

DrainNULL 以外の場合、ビデオレンダラーは PostMessage 関数を使用して、指定されたウィンドウに特定のメッセージを転送します。どのメッセージが転送されるかは、使用しているビデオレンダラーによって異なる場合があります。Video Renderer および Video Mixing Renderer (VMR) フィルターは、次のメッセージを転送します。

メッセージドレインウィンドウはビデオウィンドウの親である必要はないため、フルスクリーンアプリケーションでもこのメソッドを使用できます。
vtbl 32 HRESULT get_MessageDrain(INT_PTR* Drain)

get_MessageDrain メソッドは、ビデオウィンドウからのマウスおよびキーボードメッセージを受け取るウィンドウがある場合、それを取得します。

DrainINT_PTR*outウィンドウへのハンドル(OAHWND 型)を受け取ります。メッセージドレインが設定されていない場合、このパラメーターは NULL 値を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 33 HRESULT get_BorderColor(INT* Color)

get_BorderColor メソッドは、対象の四角形の端の周囲に表示される色を取得します。

ColorINT*outCOLORREF 値を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 34 HRESULT put_BorderColor(INT Color)

put_BorderColor メソッドは、対象の四角形の端の周囲に表示される色を設定します。

ColorINTin境界の色。COLORREF 値として指定します。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

対象の四角形がビデオウィンドウのクライアント領域より小さい場合、ビデオの端の周囲に境界が現れます。既定の色は黒です。既定の色を上書きするには、このメソッドを使用します。パレットが使用されている場合、システム以外の色は最も近い色に変換されます。

vtbl 35 HRESULT get_FullScreenMode(INT* FullScreenMode)

get_FullScreenMode メソッドは、ビデオレンダラーがフルスクリーンモードであるかどうかを照会します。

FullScreenModeINT*outビデオレンダラーがフルスクリーンモードの場合は OATRUE、それ以外の場合は OAFALSE を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_NOTIMPL
このフィルターはフルスクリーンモードをサポートしていません。
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

Filter Graph Manager がフルスクリーンモードに切り替える際、このメソッドを呼び出して、現在のビデオレンダラーがこのモードをサポートしているかどうかを判断します。レンダラーがフルスクリーン再生を本来サポートしていない場合は、E_NOTIMPL を返す必要があります。サポートしている場合は S_OK を返し、さらに FullScreenMode パラメーターに正しい値を返す必要があります。

vtbl 36 HRESULT put_FullScreenMode(INT FullScreenMode)

put_FullScreenMode メソッドは、フルスクリーンビデオレンダリングを有効または無効にします。

FullScreenModeINTin

フルスクリーンモードを有効にするか無効にするかを指定するブール値。次のいずれかの値でなければなりません。

説明
OATRUE フルスクリーンモードに切り替えます。
OAFALSE フルスクリーンモードを無効にします。(既定値。)

戻り値

戻り値には次のものがあります。

戻り値 説明
E_NOTIMPL
フィルターはフルスクリーンモードをサポートしていません。
S_FALSE
既に要求されたモードです。
S_OK
成功しました。
VFW_E_NO_FULLSCREEN
フルスクリーンモードをサポートするフィルターが見つかりませんでした。

解説(Remarks)

ビデオレンダラーによっては、アプリケーションがグラフを実行または一時停止するまで、フルスクリーンモードへの切り替えが表示されない場合があります。フルスクリーンモードでは、ユーザーがアプリケーションから離れると(たとえば ALT + TAB を使用)、Filter Graph Manager は EC_FULLSCREEN_LOST イベントを送信します。

以下の解説では、Filter Graph Manager がフルスクリーンモードをどのように実装するかについて説明します。アプリケーション開発者はおそらくこの情報を無視して構いませんが、カスタムビデオレンダラーを作成する場合には役立つ可能性があります。

アプリケーションがフルスクリーンモードに切り替わると、Filter Graph Manager は最も効率的に機能するビデオレンダラーを検索します。優先順に、次のとおりです。

  1. フルスクリーンモードをネイティブにサポートする、フィルターグラフ内の任意のビデオレンダラー。
  2. 大きなパフォーマンスコストなしにビデオをフルスクリーンに引き伸ばせる、フィルターグラフ内の任意のビデオレンダラー。
  3. Full Screen Renderer フィルター。
  4. IVideoWindow をサポートする、フィルターグラフ内の任意のビデオレンダラー。
1 番目の選択肢では、Filter Graph Manager はグラフ内のすべてのビデオレンダラーに対して IVideoWindow::get_FullScreenMode を呼び出します。ほとんどのレンダラーは E_NOTIMPL を返し、フィルターがフルスクリーンモードをネイティブにサポートしていないことを示します。いずれかのレンダラーが E_NOTIMPL 以外の値を返した場合、Filter Graph Manager はそのレンダラーを使用します。

2 番目の選択肢では、Filter Graph Manager はグラフ内のすべてのビデオレンダラーに対して IVideoWindow::GetMaxIdealImageSize および GetMinIdealImageSize を呼び出します。ディスプレイのサイズがフィルターの報告する範囲内に収まる場合、そのフィルターは大きなパフォーマンスコストなしにビデオを引き伸ばせることを示します。

グラフが停止している場合、Filter Graph Manager はこれらのメソッドを呼び出す前に各レンダラーを一時停止します。多くのレンダラーは停止中にこれらの値を判断できないため、これによりレンダラーは必要なリソースを初期化する機会を得られます。
古いハードウェアを除き、2 番目の選択肢は通常成功します。3 番目の選択肢は、必要に応じてグラフに追加して、Full Screen Renderer フィルターを使用することです。4 番目の選択肢は、単純に IVideoWindow をサポートするグラフ内の最初のレンダラーを見つけ、パフォーマンスに関係なくビデオを引き伸ばすことです。
vtbl 37 HRESULT SetWindowForeground(INT Focus)

SetWindowForeground メソッドは、ビデオウィンドウを Z オーダーの最前面に配置します。

FocusINTin

ウィンドウにフォーカスを与えるかどうかを指定します。次のいずれかの値でなければなりません。

説明
OATRUE ウィンドウにフォーカスを与えます。
OAFALSE ウィンドウにフォーカスを与えません。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 38 HRESULT NotifyOwnerMessage(INT_PTR hwnd, INT uMsg, INT_PTR wParam, INT_PTR lParam)

NotifyOwnerMessage メソッドは、ビデオウィンドウにメッセージを転送します。

hwndINT_PTRinウィンドウへのハンドル(OAHWND 値)。
uMsgINTinメッセージを指定します。
wParamINT_PTRinメッセージパラメーター。
lParamINT_PTRinメッセージパラメーター。

戻り値

戻り値には次のものがあります。

戻り値 説明
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

Filter Graph Manager は、次のようなさまざまなメッセージをレンダラーに渡すために、このメソッドを呼び出します。

vtbl 39 HRESULT SetWindowPosition(INT Left, INT Top, INT Width, INT Height)

SetWindowPosition メソッドは、ビデオウィンドウの位置を設定します。

LeftINTinx 座標(ピクセル単位)。
TopINTiny 座標(ピクセル単位)。
WidthINTin幅(ピクセル単位)。
HeightINTin高さ(ピクセル単位)。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは、IVideoWindow::put_LeftIVideoWindow::put_TopIVideoWindow::put_WidthIVideoWindow::put_Height の各メソッドを呼び出すのと同じ効果があります。

指定した寸法にウィンドウをサイズ変更できない場合、このメソッドはウィンドウが収まるようにサイズと位置を調整します。結果を確認するには、IVideoWindow::GetWindowPosition メソッドを呼び出します。

vtbl 40 HRESULT GetWindowPosition(INT* pLeft, INT* pTop, INT* pWidth, INT* pHeight)

GetWindowPosition メソッドは、ビデオウィンドウの位置を取得します。

pLeftINT*outx 座標(ピクセル単位)を受け取ります。
pTopINT*outy 座標(ピクセル単位)を受け取ります。
pWidthINT*outウィンドウの幅(ピクセル単位)を受け取ります。
pHeightINT*outウィンドウの高さ(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

このメソッドは、IVideoWindow::get_LeftIVideoWindow::get_TopIVideoWindow::get_WidthIVideoWindow::get_Height の各メソッドを呼び出すのと同じ効果があります。

vtbl 41 HRESULT GetMinIdealImageSize(INT* pWidth, INT* pHeight)

GetMinIdealImageSize メソッドは、ビデオ画像の最小理想サイズを取得します。

pWidthINT*out最小理想幅(ピクセル単位)を受け取ります。
pHeightINT*out最小理想高さ(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_FALSE
最小画像サイズを取得できませんでした。
S_OK
成功しました。
VFW_E_WRONG_STATE
フィルターは停止しています。

解説(Remarks)

ビデオハードウェアには特定の引き伸ばし要件がある場合があるため、最大理想サイズはネイティブのビデオサイズと異なる場合があります。

このメソッドは、さまざまな状況で S_FALSE を返します。

vtbl 42 HRESULT GetMaxIdealImageSize(INT* pWidth, INT* pHeight)

GetMaxIdealImageSize メソッドは、ビデオ画像の最大理想画像サイズを取得します。

pWidthINT*out最大理想幅(ピクセル単位)を受け取ります。
pHeightINT*out最大理想高さ(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_FALSE
最大画像サイズを取得できませんでした。
S_OK
成功しました。
VFW_E_WRONG_STATE
フィルターは停止しています。

解説(Remarks)

ビデオハードウェアには特定の引き伸ばし要件がある場合があるため、最大理想サイズはネイティブのビデオサイズと異なる場合があります。

このメソッドは、さまざまな状況で S_FALSE を返します。

vtbl 43 HRESULT GetRestorePosition(INT* pLeft, INT* pTop, INT* pWidth, INT* pHeight)

GetRestorePosition メソッドは、復元後のウィンドウ位置を取得します。

pLeftINT*outx 座標(ピクセル単位)を受け取ります。
pTopINT*outy 座標(ピクセル単位)を受け取ります。
pWidthINT*outウィンドウの幅(ピクセル単位)を受け取ります。
pHeightINT*outウィンドウの高さ(ピクセル単位)を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。

解説(Remarks)

ビデオウィンドウが最小化または最大化されている場合、このメソッドを使用してウィンドウの復元後の位置を取得できます。

vtbl 44 HRESULT HideCursor(OA_BOOL HideCursor)

HideCursor メソッドは、マウスがビデオウィンドウ上に置かれたときにカーソルを表示または非表示にします。

HideCursorOA_BOOLin

カーソルを表示するか非表示にするかを指定します。次のいずれかの値でなければなりません。

意味
OATRUE
カーソルを非表示にします。
OAFALSE
カーソルを表示します。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_INVALIDARG
無効な引数です。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
vtbl 45 HRESULT IsCursorHidden(INT* CursorHidden)

IsCursorHidden メソッドは、カーソルが非表示になっているかどうかを照会します。

CursorHiddenINT*outカーソルが非表示の場合は OATRUE、表示されている場合は OAFALSE を受け取ります。

戻り値

戻り値には次のものがあります。

戻り値 説明
E_POINTER
NULL ポインター。
S_OK
成功しました。
VFW_E_NOT_CONNECTED
ビデオレンダラーフィルターが接続されていません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IVideoWindow "{56A868B4-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IVideoWindow IID_IVideoWindow "{}"
#comfunc global IVideoWindow_put_Caption            7 wstr
#comfunc global IVideoWindow_get_Caption            8 var
#comfunc global IVideoWindow_put_WindowStyle        9 int
#comfunc global IVideoWindow_get_WindowStyle        10 var
#comfunc global IVideoWindow_put_WindowStyleEx      11 int
#comfunc global IVideoWindow_get_WindowStyleEx      12 var
#comfunc global IVideoWindow_put_AutoShow           13 int
#comfunc global IVideoWindow_get_AutoShow           14 var
#comfunc global IVideoWindow_put_WindowState        15 int
#comfunc global IVideoWindow_get_WindowState        16 var
#comfunc global IVideoWindow_put_BackgroundPalette  17 int
#comfunc global IVideoWindow_get_BackgroundPalette  18 var
#comfunc global IVideoWindow_put_Visible            19 int
#comfunc global IVideoWindow_get_Visible            20 var
#comfunc global IVideoWindow_put_Left               21 int
#comfunc global IVideoWindow_get_Left               22 var
#comfunc global IVideoWindow_put_Width              23 int
#comfunc global IVideoWindow_get_Width              24 var
#comfunc global IVideoWindow_put_Top                25 int
#comfunc global IVideoWindow_get_Top                26 var
#comfunc global IVideoWindow_put_Height             27 int
#comfunc global IVideoWindow_get_Height             28 var
#comfunc global IVideoWindow_put_Owner              29 sptr
#comfunc global IVideoWindow_get_Owner              30 var
#comfunc global IVideoWindow_put_MessageDrain       31 sptr
#comfunc global IVideoWindow_get_MessageDrain       32 var
#comfunc global IVideoWindow_get_BorderColor        33 var
#comfunc global IVideoWindow_put_BorderColor        34 int
#comfunc global IVideoWindow_get_FullScreenMode     35 var
#comfunc global IVideoWindow_put_FullScreenMode     36 int
#comfunc global IVideoWindow_SetWindowForeground    37 int
#comfunc global IVideoWindow_NotifyOwnerMessage     38 sptr,int,sptr,sptr
#comfunc global IVideoWindow_SetWindowPosition      39 int,int,int,int
#comfunc global IVideoWindow_GetWindowPosition      40 var,var,var,var
#comfunc global IVideoWindow_GetMinIdealImageSize   41 var,var
#comfunc global IVideoWindow_GetMaxIdealImageSize   42 var,var
#comfunc global IVideoWindow_GetRestorePosition     43 var,var,var,var
#comfunc global IVideoWindow_HideCursor             44 int
#comfunc global IVideoWindow_IsCursorHidden         45 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。