Microsoft DirectX 8.0 |
IVideoWindow インターフェイスは、Microsoft® DirectShow® 提供のビデオ レンダリング フィルタに実装され、フィルタ グラフ マネージャを通じてアプリケーションに公開される (注 : C++ 開発者へ : このインターフェイスは、必ずフィルタ グラフ マネージャの QueryInterface を呼び出して取得し、ビデオ レンダラから直接取得しないこと)。IVideoWindow は、Microsoft® Visual Basic® アプリケーションからも Visual C++® アプリケーションからもアクセスできるデュアル インターフェイスである。IVideoWindow は、ビデオを再生するウィンドウを制御するためのメソッドおよびプロパティを提供する。
このインターフェイスのメソッドの唯一の条件は、ビデオ レンダラが接続されていることである。ビデオ レンダラが接続されていない場合、インターフェイスの関数はすべて VFW_E_NOT_CONNECTED を返す。ビデオ レンダラに設定したプロパティは、それ以降に行われる接続および切断の間ずっと有効である。すべてのアプリケーションでは、表示を開始する前にレンダラのプロパティを確実にリセットすること。
このインターフェイスは Automation 互換である。したがって、メソッドが受け付けるパラメータには、重要な特徴が 2 つある。1 番目は、返されるブール値が OAFALSE (0) または OATRUE (–1) であり、これらが C/C++ の定義と異なっている点である。2 番目は、文字列がすべて BSTR 型として定義されている点である。インターフェイスに送る文字列は、すべて Automation の SysAllocString 関数を通じて割り当てなければならない。同様に、インターフェイスから返された文字列は、すべて Automation の SysFreeString 関数を使用して解放しなければならない。
代替ビデオ レンダラを開発する場合には、このインターフェイスを実装する。Automation 用の IDispatch 実装を処理する CBaseVideoWindow クラスを使用すると、このインターフェイスが実装しやすい。
注 : ビデオ レンダラがチャイルド ウィンドウにある MFC アプリケーションは、ビデオ ディスプレイ エリアを正しく再描画させるために、カラの WM_ERASEBKGND メッセージ ハンドラを持たなければならない。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IDispatch メソッド 説明 GetTypeInfoCount このディスプインターフェイスに利用可能なタイプ情報があるかどうか判断する。 GetTypeInfo GetTypeInfoCount が成功した場合は、このディスプインターフェイスのタイプ情報を取得する。 GetIDsOfNames (引数を含む) プロパティおよびメソッドのテキスト名を対応する DISPID に変換する。 Invoke DISPID およびその他の必要なパラメータが指定された場合は、このディスプインターフェイスのメソッドを呼び出すか、またはプロパティにアクセスする。 IVideoWindow メソッド 説明 put_Caption 再生ウィンドウのタイトル文字列を設定する。 get_Caption 再生ウィンドウのタイトル文字列を取得する。 put_WindowStyle 再生ウィンドウ スタイルを設定する。 get_WindowStyle ビデオ ウィンドウのウィンドウ スタイルを取得する。 put_WindowStyleEx コントロール ウィンドウのスタイルを設定する。 get_WindowStyleEx ビデオ ウィンドウの拡張スタイルを取得する。 put_AutoShow 状態が最初に変化したときにウィンドウが自動的に表示されるかどうかを指定する。 get_AutoShow ウィンドウが自動的に表示されるかどうかに関する情報を取得する。 put_WindowState 現在のウィンドウ状態 (表示/非表示、最小化など) を設定する。 get_WindowState 現在のウィンドウ状態 (表示/非表示、最小化など) を取得する。 put_BackgroundPalette レンダラにそのパレットをバックグラウンドで認識するように知らせる。 get_BackgroundPalette 必要なパレットがバックグラウンドで認識されるかどうかに関する情報を取得する。 put_Visible ウィンドウの表示/非表示を設定する。 get_Visible ウィンドウの表示/非表示を取得する。 put_Left ビデオ ウィンドウの x 軸座標を設定する。 get_Left ビデオ ウィンドウの x 軸座標を取得する。 put_Width ビデオ ウィンドウの幅を設定する。 get_Width ビデオ ウィンドウの幅を取得する。 put_Top ビデオ ウィンドウの y 軸座標を設定する。 get_Top ビデオ ウィンドウの y 軸座標を取得する。 put_Height ビデオ ウィンドウの高さを設定する。 get_Height ビデオ ウィンドウの高さを取得する。 put_Owner ビデオ再生ウィンドウを所有する親ウィンドウを設定する。 get_Owner ビデオ再生ウィンドウを所有する親ウィンドウを取得する。 put_MessageDrain ビデオ ウィンドウのメッセージの送信先ウィンドウを指定する。 get_MessageDrain ビデオ ウィンドウのメッセージを受け取るウィンドウを取得する。 get_BorderColor ビデオ ウィンドウの境界色を取得する。 put_BorderColor ビデオ ウィンドウの境界色を設定する。 get_FullScreenMode このインターフェイスをサポートしているビデオ レンダリング フィルタのフルスクリーン レンダリング モードを取得する。 put_FullScreenMode このインターフェイスをサポートしているビデオ レンダリング フィルタのフルスクリーン モードを設定する。 SetWindowForeground 前面ウィンドウに切り替わるようにレンダリング フィルタに知らせる。 NotifyOwnerMessage 親ウィンドウから受け取ったメッセージを、フィルタが所有する子ウィンドウに転送する。 SetWindowPosition ディスプレイ上のビデオ ウィンドウ位置を設定する。 GetWindowPosition ビデオ ウィンドウ位置を取得する。 GetMinIdealImageSize ビデオ イメージ再生 (クライアント) 領域の理論上の最小イメージ サイズを取得する。 GetMaxIdealImageSize ビデオ イメージ再生 (クライアント) 領域の理論上の最大イメージ サイズを取得する。 GetRestorePosition 復元されるウィンドウの通常のディメンジョンを取得する。 HideCursor カーソルを非表示にする。 IsCursorHidden カーソルの表示/非表示を判断する。
ウィンドウが自動的に表示されるかどうかに関する情報を取得する。
構文
HRESULT get_AutoShow( long *AutoShow );
パラメータ
- AutoShow
- [out] ウィンドウが自動的に表示されるかどうかを示す値へのポインタ。OATRUE は、ポーズ状態または実行状態に変わったとき、ウィンドウが表示されることを示す。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
必要なパレットがバックグラウンドで認識されるかどうかに関する情報を取得する。
構文
HRESULT get_BackgroundPalette( long *pBackgroundPalette );
パラメータ
- pBackgroundPalette
- [out] パレットがバックグラウンドで認識されるかどうかを示す値へのポインタ。OATRUE は認識されることを示す。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ ウィンドウの境界色を取得する。
構文
HRESULT get_BorderColor( long *pColor );
パラメータ
- pColor
- [out] 取得された境界色 (Microsoft Win32® COLORREF 値) へのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ ウィンドウのタイトル文字列を取得する。
構文
HRESULT get_Caption( BSTR *strCaption );
パラメータ
- strCaption
- [out] 取得されたウィンドウ タイトル文字列へのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
このインターフェイスをサポートしているレンダリング フィルタのフルスクリーン レンダリング能力を取得する。
構文
HRESULT get_FullScreenMode( long *FullScreenMode );
パラメータ
- FullScreenMode
- [out] レンダラにフルスクリーン能力があるかどうかを示す値へのポインタ。レンダラがフルスクリーン ビデオをサポートしている場合は、OATRUE。サポートしていない場合は、OAFALSE。
戻り値
可能な戻り値は次のとおりである。
E_NOTIMPL フィルタがフルスクリーン モードをサポートしていない。 E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
フィルタ グラフ マネージャは、ビデオをフルスクリーン サイズでレンダリングするように要求されると、このメソッドを呼び出す。レンダラは、レンダラ自体がもともとフルスクリーン再生をサポートしていない場合は E_NOTIMPL を返し、それ以外の場合には NOERROR を返さなければならない。レンダラがフルスクリーン再生をサポートしている場合、このメソッドは現在それがオンになっているかどうかを判断する。
ビデオ ウィンドウの高さを取得する。
構文
HRESULT get_Height( long *pHeight );
パラメータ
- pHeight
- [out] 取得されたビデオ ウィンドウ垂直ディメンジョンへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ ウィンドウの x 軸座標を取得する。
構文
HRESULT get_Left( long *pLeft );
パラメータ
- pLeft
- [out] 取得する x 軸座標へのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ イメージ再生 (クライアント) 領域の理論上の最大イメージ サイズを取得する。
構文
HRESULT GetMaxIdealImageSize( long *pWidth, long *pHeight );
パラメータ
- pWidth
- [out] イメージの幅へのポインタ (ピクセル単位)。
- pHeight
- [out] イメージの高さへのポインタ (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_FALSE 最小イメージ サイズを取得できない。 S_OK 成功。 VFW_E_WRONG_STATE フィルタが停止している。
注意
このメソッドは次のようにさまざまな状況で S_FALSE を返す。
- フィルタが IOverlay トランスポートを使用している。
- UseWhenFullScreen モードがオンになっている (「IDirectDrawVideo::UseWhenFullScreen」を参照すること)。
- ビデオ サーフェスに最大オーバーレイ伸縮がない (DDCAPS 構造体の dwMaxOverlayStretch メンバが 0)。「IDirectDrawVideo::GetCaps」を参照すること。
ビデオ ウィンドウのメッセージを受け取るウィンドウを取得する。
構文
HRESULT get_MessageDrain( OAHWND *Drain );
パラメータ
- Drain
- [in] 現在ビデオ ウィンドウのメッセージの送信先として割り当てられているウィンドウへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
メッセージ ドレーンとして指定したウィンドウに渡される Microsoft Win32® メッセージの一覧は、「IVideoWindow::put_MessageDrain」の説明に記載されている。
ビデオ イメージ再生 (クライアント) 領域の理論上の最小イメージ サイズを取得する。
構文
HRESULT GetMinIdealImageSize( long *pWidth, long *pHeight );
パラメータ
- pWidth
- [out] イメージの幅へのポインタ (ピクセル単位)。
- pHeight
- [out] イメージの高さへのポインタ (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_FALSE 最小イメージ サイズを取得できない。 S_OK 成功。 VFW_E_WRONG_STATE フィルタが停止している。
注意
このメソッドは次のようにさまざまな状況で S_FALSE を返す。
- フィルタが IOverlay トランスポートを使用している。
- UseWhenFullScreen モードがオンになっている (「IDirectDrawVideo::UseWhenFullScreen」を参照すること)。
- 伸縮可能なオフスクリーン サーフェスがビデオ再生で使用されている (DDCAPS 構造体の dwCaps メンバに DDCAPS_BLTSTRETCH フラグが含まれている)。「IDirectDrawVideo::GetCaps」を参照すること。
- ビデオ サーフェスに最小オーバーレイ伸縮がない (DDCAPS 構造体の dwMinOverlayStretch メンバが 0)。「IDirectDrawVideo::GetCaps」を参照すること。
ビデオ ウィンドウを所有する親ウィンドウを取得する。
構文
HRESULT get_Owner( OAHWND *pOwner );
パラメータ
- pOwner
- [out] 取得されたウィンドウ ハンドルへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
復元されるウィンドウの通常のディメンジョンを取得する。
構文
HRESULT GetRestorePosition( long *pLeft, long *pTop, long *pWidth, long *pHeight );
パラメータ
- pLeft
- [out] ウィンドウ左端の x 軸座標へのポインタ。
- pTop
- [out] ウィンドウ上端の y 軸座標へのポインタ。
- pWidth
- [out] ウィンドウの幅へのポインタ (ピクセル単位)。
- pHeight
- [out] ウィンドウの高さへのポインタ (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ウィンドウが最大化または最小化されているとき、ウィンドウ位置関係のメソッドは実際のウィンドウ サイズを返す。このメソッドでは、ウィンドウが復元されたときのディメンジョンを返す。アプリケーションでは、ウィンドウが最大化または最小化されている間、ウィンドウ状態を保存しておくために、このメソッドを使用できる。
ビデオ ウィンドウの y 軸座標を取得する。
構文
HRESULT get_Top( long *pTop );
パラメータ
- pTop
- [out] 取得された y 軸の基点へのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ ウィンドウの表示/非表示を取得する。
構文
HRESULT get_Visible( long *pVisible );
パラメータ
- pVisible
- [out] ウィンドウが表示されているかどうかを示す値へのポインタ。OATRUE は表示されていることを示し、それ以外の場合は非表示を示す。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
ビデオ ウィンドウの幅を取得する。
構文
HRESULT get_Width( long *pWidth );
パラメータ
- pWidth
- [out] 取得された幅へのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
(クライアント矩形ではなく) 現在のウィンドウ矩形をデバイス座標で取得する。
構文
HRESULT GetWindowPosition( long *pLeft, long *pTop, long *pWidth, long *pHeight );
パラメータ
- pLeft
- [out] ウィンドウの x 軸の基点へのポインタ。
- pTop
- [out] ウィンドウの y 軸の基点へのポインタ。
- pWidth
- [out] ウィンドウの幅へのポインタ (ピクセル単位)。
- pHeight
- [out] ウィンドウの高さへのポインタ (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドの効果は、IVideoWindow::get_Left メソッド、IVideoWindow::get_Top メソッド、IVideoWindow::get_Width メソッド、および IVideoWindow::get_Height メソッドを個別に呼び出した場合と等しい。
ビデオ ウィンドウの状態を返す。
構文
HRESULT get_WindowState( long *WindowState );
パラメータ
- WindowState
- [out] ビデオ ウィンドウの状態を示すフラグへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、ウィンドウ状態 (つまり、SW_MINIMIZE、SW_MAXIMIZE、SW_SHOW、または SW_HIDE) のプロパティのサブセットを取得する。 これらのウィンドウ状態の定義は、Win32 ShowWindow 関数と同じである。
ビデオ ウィンドウのウィンドウ スタイルを取得する。
構文
HRESULT get_WindowStyle( long *pWindowStyle );
パラメータ
- pWindowStyle
- [out] Win32 GetWindowLong 関数の GWL_STYLE 値で設定できるフラグのサブセットと対応するフラグ セットへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ウィンドウ スタイルの一覧については、Platform Software Development Kit (SDK) の「CreateWindow 関数」を参照すること。
ビデオ ウィンドウの拡張スタイルを取得する。
構文
HRESULT get_WindowStyleEx( long *pWindowStyleEx );
パラメータ
- pWindowStyleEx
- [out, retval] Win32 GetWindowLong 関数の GWL_STYLE 値で設定できるフラグのサブセットと対応するフラグ セットへのポインタ。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、拡張ウィンドウ スタイルを使用する。ウィンドウ スタイルの一覧については、Platform SDK の 「CreateWindow 関数」を参照すること。
カーソルを非表示にする。
構文
HRESULT HideCursor( long HideCursor );
パラメータ
- HideCursor
- [in] カーソルを非表示にするかどうかを指定する値。OATRUE の場合は、カーソルを表示しない。OAFALSE の場合は、カーソルを表示する。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、通常、ビデオ レンダラがフルスクリーン モード (カーソルを表示したくないことがある) のときに使用される。
カーソルの表示/非表示を判断する。
構文
HRESULT IsCursorHidden( long *CursorHidden );
パラメータ
- CursorHidden
- [out] カーソルが非表示になっているかどうかを示す値へのポインタ。OATRUE の場合、カーソルは非表示。OAFALSE の場合、カーソルは表示されている。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、通常、ビデオ レンダラがフルスクリーン モード (カーソルを表示したくないことがある) のときに使用される。
親ウィンドウから受け取ったメッセージを、フィルタが所有する子ウィンドウに転送する。
構文
HRESULT NotifyOwnerMessage( long hwnd, long uMsg, long wParam, long lParam );
パラメータ
- hwnd
- [in] ウィンドウ ハンドル。
- uMsg
- [in] 送ろうとしているメッセージ。
- wParam
- [in] メッセージに渡された wParam。
- lParam
- [in] メッセージに渡された lParam。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、レンダラ ウィンドウを子ウィンドウにするウィンドウから使用しなければならない。このメソッドは、通常ならば子ウィンドウが受け取ることのない多数のメッセージを、子ウィンドウに転送する。転送されるメッセージには、次のようなものがある。
- WM_ACTIVATEAPP
- WM_DEVMODECHANGE
- WM_DISPLAYCHANGE
- WM_PALETTECHANGED
- WM_PALETTEISCHANGING
- WM_QUERYNEWPALETTE
- WM_SYSCOLORCHANGE
ウィンドウが自動的に表示されるかどうかを判断する。
構文
HRESULT put_AutoShow( long AutoShow );
パラメータ
- AutoShow
- [in] ウィンドウが自動的に表示されるかどうかを指定する値。OATRUE (–1) は、状態が変わるとウィンドウが表示されることを意味する。OAFALSE (0) の場合、明示的に表示しない限り、ウィンドウは表示されない。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
簡単なアプリケーションでは、フィルタ グラフが実行状態に入るとき、表示されたウィンドウが必要になることが多い。デフォルトでは、AutoShow が OATRUE となり、グラフがポーズ状態または実行状態に変わるとウィンドウが表示される (ウィンドウはさらに前面ウィンドウとして設定される)。その後、ポーズ状態または実行状態に変わっても、ウィンドウが非表示になることはない。ストリームの実行中にウィンドウを閉じた場合、ウィンドウは自動的に再表示されない。ただし、ストリームを停止後にもう一度開始すると、ウィンドウが自動的に再表示される。
参照
必要なパレットがバックグラウンドで認識されるかどうかを判断する。
構文
HRESULT put_BackgroundPalette( long BackgroundPalette );
パラメータ
- BackgroundPalette
- [in] パレットがバックグラウンドで認識されるかどうかを指定する値。パレットをバックグラウンドで認識するには、OATRUE (–1) を設定する。それ以外の場合は、OAFALSE を設定する。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
BackgroundPalette が OATRUE の場合、レンダラでビデオに必要なパレットがバックグラウンドで認識される。これは、パレットが使用する色がすべて、描画前にディスプレイ パレット内の最も近い色に変更されることを意味する。この結果、ビデオ再生時にアプリケーションのパレットが影響を受けない。ただし、ビデオのパフォーマンスに大きな影響が出るので、どうしても必要な場合以外は使用しないこと。このプロパティのデフォルト値は OAFALSE。
ビデオ ウィンドウの境界色を設定する。
構文
HRESULT put_BorderColor( long Color );
パラメータ
- Color
- [in] COLORREF 型の新しい境界色。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
設定する転送先矩形が、ウィンドウのクライアント可視領域と異なるときには、縁の周りに境界が表示される。このメソッドを使用すると、アプリケーションからこの境界の色を変更できる。境界色のデフォルト値は黒である。システム カラー以外の色を渡すと、使用前に現在のパレットに基づく最も近い色に変換される (トゥルーカラー デバイス以外でも同様)。境界色を設定すると、ウィンドウの境界が新しい色で自動的に再描画される。
ビデオ ウィンドウのタイトル文字列を設定する。
構文
HRESULT put_Caption( BSTR strCaption );
パラメータ
- strCaption
- [in] ウィンドウのタイトル キャプション。
戻り値
可能な戻り値は次のとおりである。
E_POINTER NULL ポインタ。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
このインターフェイスをサポートしているビデオ レンダリング フィルタのフルスクリーン モードを設定する。
構文
HRESULT put_FullScreenMode( long FullScreenMode );
パラメータ
- FullScreenMode
- [in] ビデオ レンダリング フィルタがフルスクリーン モードをサポートしているかどうかを指定する値。フルスクリーン ビデオをサポートしている場合は、OATRUE を設定する。それ以外の場合は、OAFALSE を設定する。
戻り値
可能な戻り値は次のとおりである。
E_NOTIMPL フィルタがフルスクリーン モードをサポートしていない。 S_FALSE フィルタが既に要求されたモードになっている。 S_OK 成功。
注意
このメソッドを使用すると、アプリケーションからフルスクリーン レンダラを、フルスクリーン モードに切り替えたり、フルスクリーン モードから切り替えたりすることができる。レンダラがフルスクリーン モードから切り替えられたときの動作は、実装によって異なる。たとえば、Microsoft のフルスクリーン レンダラでは、ウィンドウ モードに戻る。
フィルタ グラフ マネージャの IVideoWindow PID は、フルスクリーン レンダラの切り替えを実装する。PID は、フルスクリーン モードをサポートするレンダラをグラフ内から探し、見つからない場合には、レンダラをデフォルトの DirectShow フルスクリーン レンダラに一時的に置き換える。IVideoWindow::GetMaxIdealImageSize を呼び出して、ウィンドウを最前面ウィンドウにし、画面全体へサイズ変更することができるかどうかを判断する。フィルタ グラフは DirectDraw® オーバーレイまたはハードウェア デコーダ フィルタを使用している可能性があるため、レンダラを交換するよりこの方法の方が好ましい。
ビデオ ウィンドウの高さを設定する。
構文
HRESULT put_Height( long Height );
パラメータ
- Height
- [in] ビデオ ウィンドウの新しい垂直ディメンジョン。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ビデオ ウィンドウの y 軸座標は、このメソッドの呼び出しにより影響を受けない。
ビデオ ウィンドウの x 軸座標を設定する。
構文
HRESULT put_Left( long Left );
パラメータ
- Left
- [in] 設定する x 軸座標。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ビデオ ウィンドウの幅は、このメソッドの呼び出しにより影響を受けない。
ビデオ ウィンドウのメッセージの送信先ウィンドウを指定する。
構文
HRESULT put_MessageDrain( OAHWND Drain );
パラメータ
- Drain
- [in] メッセージの送信先ウィンドウ。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ビデオ レンダラは、Win32 PostMessage 関数を呼び出して、指定されたメッセージ ドレーンにメッセージを渡す。これらのメッセージを使用すると、ユーザーの介入 (ビデオ表示の特定領域内をマウスでクリックするなど) を伴うアプリケーションを開発できる。アプリケーションでは、ビデオ ウィンドウと緊密な関係を保ち、ユーザーの介入を調べるべき時期を知ることができる。レンダラからメッセージ ドレーンにメッセージが渡されるとき、パラメータ (クライアント領域の座標など) はまったく手を加えずに送られる。
アプリケーションが次のメッセージを生成すると、DirectShow はそれを Drain パラメータで指定されたウィンドウに渡す。
- WM_KEYDOWN
- WM_KEYUP
- WM_LBUTTONDBLCLK
- WM_LBUTTONDOWN
- WM_LBUTTONUP
- WM_MBUTTONDBLCLK
- WM_MBUTTONDOWN
- WM_MBUTTONUP
- WM_MOUSEACTIVATE
- WM_MOUSEMOVE
- WM_NCLBUTTONDBLCLK
- WM_NCLBUTTONDOWN
- WM_NCLBUTTONUP
- WM_NCMBUTTONDBLCLK
- WM_NCMBUTTONDOWN
- WM_NCMBUTTONUP
- WM_NCMOUSEMOVE
- WM_NCRBUTTONDBLCLK
- WM_NCRBUTTONDOWN
- WM_NCRBUTTONUP
- WM_RBUTTONDBLCLK
- WM_RBUTTONDOWN
- WM_RBUTTONUP
このメンバ関数は、メッセージ ドレーン ウィンドウを子ウィンドウにしないので、フルスクリーン能力のあるアプリケーションから使用できる。
ビデオ ウィンドウを所有する親ウィンドウを設定する。
構文
HRESULT put_Owner( OAHWND Owner );
パラメータ
- Owner
- [in] 新しい所有者ウィンドウのハンドル。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、アプリケーションからビデオ ウィンドウの所有者を設定するための手段を提供し、複合ドキュメント内のビデオを再生するときによく使用される。このメソッドは、レンダラ ウィンドウの親を変更し、ビデオ ウィンドウに対応する WS_CHILD スタイルを設定する。
ビデオ ウィンドウ メッセージを親ウィンドウに転送するには、親ウィンドウのウィンドウ ハンドルを指定して IVideoWindow::put_MessageDrain メソッドを使用する。このメッセージは、メッセージを自動的に送信しない。
このメッセージを使用してビデオ ウィンドウの所有者を設定した場合は、フィルタ グラフを解放する前に (put_Owner(NULL) を呼び出して) 所有者を NULL にリセットする必要がある。そうしないと、引き続きこのウィンドウにメッセージが送られ、アプリケーション終了時にエラーが発生する可能性が高い。
ビデオ ウィンドウの y 軸座標を設定する。
構文
HRESULT put_Top( long Top );
パラメータ
- Top
- [in] ビデオ ウィンドウの y 軸の基点。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ビデオ ウィンドウの高さは、このメソッドの呼び出しにより影響を受けない。
ビデオ ウィンドウの表示/非表示を変更する。
構文
HRESULT put_Visible( long Visible );
パラメータ
- Visible
- [in] Automation 互換のブール型フラグ。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
Visible パラメータに OATRUE (–1) を設定すると、ウィンドウが表示される。OAFALSE (0) を設定すると、ウィンドウが非表示になる。
ビデオ ウィンドウの幅を設定する。
構文
HRESULT put_Width( long Width );
パラメータ
- Width
- [in] 設定する幅 (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
ビデオ ウィンドウの x 軸座標は、このメソッドの呼び出しにより影響を受けない。
ビデオ ウィンドウの状態を設定する。
構文
HRESULT put_WindowState( long WindowState );
パラメータ
- WindowState
- [in] ビデオ ウィンドウの状態を記述する。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、Microsoft Win32 ShowWindow 関数のラッパーである。WindowState パラメータは、IVideoWindow::put_WindowState から CBaseWindow::DoShowWindow に渡され、さらにそこから ShowWindow に渡される。したがって、WindowState には ShowWindow に有効な任意の値を指定できる。
ビデオ ウィンドウのスタイル パラメータを変更する。
構文
HRESULT put_WindowStyle( long WindowStyle );
パラメータ
- WindowStyle
- [in] Win32 GetWindowLong 関数の GWL_STYLE 値で設定できるフラグのサブセットと対応するフラグ セット。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このプロパティを使用して、たとえばビデオ ウィンドウの境界およびキャプションの領域を削除するなど、ビデオ ウィンドウの全体的なスタイルを変更する。これは、Microsoft Win32 GetWindowLong 関数の GWL_STYLE 値の設定を制御する非常に薄いラッパーなので、取り扱いには十分な注意が必要である。特に、最初に現在のスタイルを取得したうえで、必要なビット フィールドを追加または削除することは重要である。(ここで説明する) 一部の例外を除き、使用可能なフラグは、Win32 CreateWindow 関数の場合と同じである。
このメソッドを使用して、ウィンドウ サイズに影響を与えてはならない。たとえば、ウィンドウが最小化されているときに WS_MAXIMIZE スタイルを設定した場合、結果は予測不可能である。ウィンドウを最大化または最小化するには、このメソッドではなく IVideoWindow::put_WindowState メソッドを使用する。
以下のスタイルでは、すべて E_INVALIDARG を返す。
- WS_DISABLED
- WS_HSCROLL
- WS_ICONIC
- WS_MAXIMIZE
- WS_MINIMIZE
- WS_VSCROLL
コントロール ウィンドウのスタイルを設定する。
構文
HRESULT put_WindowStyleEx( long WindowStyleEx );
パラメータ
- WindowStyleEx
- [in] コントロール ウィンドウのスタイルを指定する値。
戻り値
可能な戻り値は次のとおりである。
S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドは、拡張ウィンドウ スタイルを使用する。ウィンドウ スタイルの一覧については、Platform SDK の 「CreateWindowEx 関数」を参照すること。
このプロパティを使用して、たとえばビデオ ウィンドウの境界およびキャプションの領域を削除するなど、ビデオ ウィンドウの全体的なスタイルを変更する。これは、Microsoft Win32 GetWindowLong 関数の GWL_STYLE 値の設定を制御する非常に薄いラッパーなので、取り扱いには十分な注意が必要である。特に、最初に現在のスタイルを取得したうえで、必要なビット フィールドを追加または削除することは重要である。
次のウィンドウ スタイルは有効でないので使用しないこと。
- WS_DISABLED
- WS_HSCROLL
- WS_ICONIC
- WS_MAXIMIZE
- WS_MINIMIZE
- WS_VSCROLL
(ここで説明する) 一部の例外を除き、使用可能なフラグは、Win32 CreateWindow 関数の場合と同じである。
ビデオ ウィンドウを前面に移動し、オプションでそのウィンドウにフォーカスを与える。
構文
HRESULT SetWindowForeground( long Focus );
パラメータ
- Focus
- ビデオ ウィンドウにフォーカスを与えるかどうかを指定する値。–1 の場合は、フォーカスを与える。0 の場合は、与えない。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
(クライアントの矩形ではなく) ビデオ ウィンドウの位置をデバイス座標で設定する。
構文
HRESULT SetWindowPosition( long Left, long Top, long Width, long Height );
パラメータ
- Left
- [in] ウィンドウの x 軸の基点。
- Top
- [in] ウィンドウの y 軸の基点。
- Width
- [in] ウィンドウの幅 (ピクセル単位)。
- Height
- [in] ウィンドウの高さ (ピクセル単位)。
戻り値
可能な戻り値は次のとおりである。
E_INVALIDARG 無効な引数。 S_OK 成功。 VFW_E_NOT_CONNECTED ピンが接続されない。
注意
このメソッドの効果は、IVideoWindow::put_Left メソッド、IVideoWindow::put_Top メソッド、IVideoWindow::put_Width メソッド、および IVideoWindow::put_Height メソッドを個別に呼び出した場合と等しい。
ビデオの表示位置をウィンドウ座標で指定する。たとえば、(100,50,200,400) という転送先を設定すると、ビデオ再生の基点がクライアント領域の左から 100 ピクセル、上から 50 ピクセルに設定され、全体のサイズが 200 × 400 ピクセルになる。ビデオがこれより小さい場合 (または転送元矩形がビデオより小さいサイズに指定されている場合) には、このサイズに合わせてビデオが伸縮される。同様に、ビデオが転送先矩形より大きい場合には、表示矩形に合わせてビデオが圧縮される。これらの処理はパフォーマンスに非常に大きな影響を与えるので、アプリケーションでは転送元矩形と転送先矩形をなるべく等しくすること。
通常の状況では、転送先矩形が設定されていないとき、(ユーザーによるウィンドウの伸縮の程度にかかわらず) ウィンドウのクライアント表示領域全体がビデオで塗りつぶされる。さらに、転送先矩形のプロパティは、ビデオ ウィンドウのクライアント領域の正しいサイズを返す。