Microsoft DirectX 8.0 |
CBaseControlWindow クラスは IVideoWindow インターフェイスを実装し、これに関連付けられたフィルタへの外部のアクセスを制御する。クリティカル セクション同期オブジェクトへのポインタを渡すことによって、CBaseControlWindow オブジェクトをフィルタと同期しなければならない。クリティカル セクション同期オブジェクトの詳細については、Platform SDK を参照すること。CBaseControlWindow クラスは、このクリティカル セクションを処理せずにプロパティの設定を返す数多くのメソッドを提供する。たとえば、CBaseControlWindow::get_AutoShow を呼び出して m_bAutoShow データ メンバの値を取得すると、クリティカル セクションはロックされる。ただし、フィルタが既に内部クリティカル セクションをロックしている場合があり、この場合はフィルタのロック階層に違反する。この代わりに、CBaseControlWindow::IsAutoShowEnabled メンバ関数を呼び出すと、クリティカル セクションに影響を及ぼさずに必要な値が返される。
CBaseControlWindow が実装するすべての IVideoWindow メソッドでは、フィルタがアップストリーム フィルタに正しく接続されている必要がある。このため、クラス オブジェクトは同期ピンを必要とする。同期ピンは、CBaseControlWindow::SetControlWindowPin メソッドを呼び出すことによって設定される。IVideoWindow メソッドを呼び出すと、CBaseControlWindow オブジェクトはこのピンが接続されていることをチェックする。
プロテクト データ メンバ
m_bAutoShow 状態が変化したときの結果。 m_bCursorHidden カーソルが表示または非表示のいずれであるかの判別。 m_BorderColour 現在のウィンドウの境界のカラー。 m_hwndDrain 受信したメッセージの送信先のウィンドウ ハンドル。 m_hwndOwner 所有するウィンドウ。 m_pFilter 所有するメディア フィルタへのポインタ。 m_pInterfaceLock 外部的に定義されるクリティカル セクション。 m_pPin 接続のメディア タイプの制御。
メンバ関数
CBaseControlWindow CBaseControlWindow オブジェクトを作成する。 DoGetWindowStyle 標準ウィンドウ スタイルまたは拡張ウィンドウ スタイルのいずれかを取得する。 DoSetWindowStyle 標準ウィンドウ スタイルまたは拡張ウィンドウ スタイルを設定する。 GetBorderColour 現在の境界のカラーを取得する。これはヘルパー メンバ関数である。 GetOwnerWindow 所有するウィンドウを取得する。これはヘルパー メンバ関数である。 IsAutoShowEnabled レンダリング フィルタがポーズまたは実行されたときに、ビデオ ウィンドウが自動的に表示されるかどうかについての情報を取得する。 IsCursorHidden クリティカル セクションをロックせずに、m_bCursorHidden データ メンバの現在の状態を取得する。これはヘルパー メンバ関数である。 PossiblyEatMessage 親ウィンドウにメッセージを配信する。 SetControlWindowPin オブジェクトが適用されるピンをオブジェクトに通知する。
get_AutoShow 現在の AutoShow フラグの設定を取得する。 get_BackgroundPalette バックグラウンド フラグで実現されたパレットを取得する。 get_BorderColor 現在の境界のカラーを取得する。 get_Caption 現在のウィンドウ キャプションを取得する。 get_FullScreenMode 現在のフルスクリーン モードを取得する。 get_Height 現在のウィンドウの高さを取得する。 get_Left 現在の左のウィンドウ座標を取得する。 GetMaxIdealImageSize 理想的なイメージの最大サイズを取得する。 get_MessageDrain 現在のメッセージ ドレーンを取得する。 GetMinIdealImageSize 理想的なイメージの最小サイズを取得する。 get_Owner Microsoft® Win32® 親ウィンドウ ハンドルを取得する。 GetRestorePosition 最大化または最小化したときに、ウィンドウが復元される位置を取得する。 get_Top ウィンドウ上部の y 座標を取得する。 get_Visible ウィンドウの現在の表示の設定を取得する。 get_Width ウィンドウの幅を取得する。 GetWindowPosition 現在のウィンドウの座標を取得する。 get_WindowState 現在のウィンドウの状態を取得する。 get_WindowStyle 標準ウィンドウ スタイルを取得する。 get_WindowStyleEx 拡張ウィンドウ スタイルを取得する。 HideCursor カーソルの表示/非表示を切り替える。 IsCursorHidden m_bCursorHidden データ メンバの現在の状態を取得する。 NotifyOwnerMessage 所有するウィンドウに送信されるメッセージを渡す。 put_AutoShow AutoShow プロパティを設定する。 put_BackgroundPalette バックグラウンドでパレットを実現するためのフラグを設定する。 put_BorderColor 現在の境界のカラーを設定する。 put_Caption 現在のウィンドウ キャプションを設定する。 put_FullScreenMode フルスクリーン モードを設定する。 put_Height 現在のウィンドウの高さを設定する。 put_Left ウィンドウの左の座標を設定する。 put_MessageDrain メッセージ ドレーン ウィンドウを設定する。 put_Owner Microsoft Win32 親ウィンドウ ハンドルを設定する。 put_Top ウィンドウ上部の位置を設定する。 put_Visible ウィンドウの表示/非表示を切り替える。 put_Width ウィンドウの幅を設定する。 put_WindowState ウィンドウの状態を設定する。 put_WindowStyle 標準ウィンドウ スタイルを設定する。 put_WindowStyleEx 拡張ウィンドウ スタイルを設定する。 SetWindowForeground フォアグラウンドのウィンドウを設定する。 SetWindowPosition ウィンドウの位置を設定する。
CBaseControlWindow オブジェクトを作成する。
構文
CBaseControlWindow( CBaseMediaFilter *pFilter, CCritSec *pInterfaceLock, TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr );
パラメータ
- pFilter
- 所有するメディア フィルタ オブジェクトへのポインタ。
- pInterfaceLock
- ロックのために使用するクリティカル セクションへのポインタ。
- pName
- オブジェクト記述へのポインタ。
- pUnk
- オブジェクトが集成の一部ではない場合は、制御する IUnknown インターフェイスへのポインタ。それ以外の場合は、NULL でなければならない。
- phr
- コンストラクタ メソッドの成功または失敗を示す HRESULT 値を受け取る変数へのポインタ。
戻り値
戻り値なし。
現在の標準ウィンドウ スタイルまたは拡張ウィンドウ スタイルを取得する。
構文
HRESULT DoGetWindowStyle( long *pStyle, long WindowLong );
パラメータ
- pStyle
- スタイル情報を受け取る変数へのポインタ。
- WindowLong
- 取得するスタイルを指定する値。次のいずれかでなければならない。
GWL_STYLE ウィンドウ スタイルを取得する。 GWL_EXSTYLE 拡張ウィンドウ スタイルを取得する。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、Win32 GetWindowLong 関数を呼び出してウィンドウ スタイルを取得する。このメンバ関数は、CBaseControlWindow::get_WindowStyle および CBaseControlWindow::get_WindowStyleEx メンバ関数によって呼び出される。
標準ウィンドウ スタイルまたは拡張ウィンドウ スタイルを変更する。
構文
HRESULT DoSetWindowStyle( long Style, long WindowLong );
パラメータ
- Style
- 適切なウィンドウ スタイル。
- WindowLong
- 設定するスタイルを指定する値。次のいずれかでなければならない。
GWL_STYLE ウィンドウ スタイルを取得する。 GWL_EXSTYLE 拡張ウィンドウ スタイルを取得する。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、Win32 SetWindowLong 関数を呼び出してウィンドウ スタイルを設定し、次に現在の位置にウィンドウを再表示する。このメンバ関数は、CBaseControlWindow::put_WindowStyle および CBaseControlWindow::put_WindowStyleEx メンバ関数によって呼び出される。
現在の AutoShow 状態フラグを取得する。
構文
HRESULT get_AutoShow( long *AutoShow );
パラメータ
- AutoShow
- オートメーション ブール型フラグへのポインタ (0 はオフ、-1 はオン)。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、IVideoWindow::get_AutoShow メソッドを実装する。このプロパティは、アプリケーションのウィンドウ表示アクセスを簡素化する。このプロパティが -1 (オン) に設定されている場合、通常フィルタの接続後は非表示になっているウィンドウは、フィルタがポーズまたは実行されると自動的に表示される。ただし、フィルタが停止した場合、ウィンドウを非表示にするべきではない。このパラメータが 0 (オフ) に設定されている場合、アプリケーションが適切なパラメータを指定して CBaseControlWindow::put_Visible または CBaseControlWindow::put_WindowState を呼び出したときにのみウィンドウが表示される。
このメンバ関数は、IVideoWindow インターフェイスを使用して外部オブジェクトによって呼び出されることを想定しているので、関連付けられたフィルタと同期するためにクリティカル セクションをロックする。外部オブジェクトから呼び出さない場合に、このプロパティを取得するには、CBaseControlWindow::IsAutoShowEnabled メンバ関数を呼び出す。
バックグラウンド フラグで実現されたパレットを取得する。
構文
HRESULT get_BackgroundPalette( long *pBackgroundPalette );
パラメータ
- pBackgroundPalette
- オートメーション ブール型フラグへのポインタ (0 はオフ、-1 はオン)。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、IVideoWindow::get_BackgroundPalette メソッドを実装する。ビデオを別のアプリケーションまたはドキュメントで再生する場合、そのアプリケーションで独自のパレットを使いたいことがある。このフラグを -1 に設定することによって、アプリケーションはビデオの再生に現在のフォアグラウンド パレットを使用することを要求できる。このフラグが 0 に設定されている場合、ウィンドウは独自の優先パレットをインストールして実現する。ウィンドウで別のパレットを使用するように指定すると、パフォーマンスが大幅に低下することに注意が必要である。
現在の境界のカラーを取得する。
構文
HRESULT get_BorderColor( long *Color );
パラメータ
- Color
- 現在の境界のカラーへのポインタ。
戻り値
HRESULT 値を返す。
注意
アプリケーションはビデオを表示する転送先矩形を設定できる。この矩形は、ウィンドウのクライアント領域に比例する。転送先矩形を設定した場合 (デフォルトでは常にウィンドウ全体が描画される)、ビデオの周囲に境界が表示される。このプロパティは、境界で使用されるカラーに影響する。このパラメータは LONG 型として指定されているが、実際には COLORREF 値である。
このメンバ関数は、IVideoWindow インターフェイスを使用して外部オブジェクトによって呼び出されることを想定しているので、関連付けられたフィルタと同期するためにクリティカル セクションをロックする。外部オブジェクトから呼び出さない場合に、このプロパティを取得するには、CBaseControlWindow::GetBorderColour メンバ関数を呼び出す。
現在のウィンドウの境界カラー m_BorderColour を取得する。
構文
COLORREF GetBorderColour(void);
戻り値
境界のカラーを返す。
注意
アプリケーションはビデオを表示する転送先矩形を設定できる。この矩形は、ウィンドウのクライアント領域に比例する。転送先矩形を設定した場合 (デフォルトでは常にウィンドウ全体が描画される)、ビデオを囲む領域、つまり境界が表示される。境界のカラーは、CBaseControlWindow::put_BorderColor メンバ関数を使用して設定できる。このプロパティは、境界のカラーに影響する。IVideoWindow::get_BorderColor メソッドを使用して外部から呼び出す場合以外は、CBaseControlWindow::get_BorderColor の代わりにこのメンバ関数を使用する。
現在のウィンドウ キャプションを取得する。
構文
HRESULT get_Caption( BSTR *pstrCaption );
パラメータ
- pstrCaption
- 現在のウィンドウ キャプションへのポインタ。
戻り値
HRESULT 値を返す。
注意
Windows ベースのデスクトップ上の最上位ウィンドウには、タイトル (キャプション) が関連付けられる。このプロパティは、IVideoWindow インターフェイスを使用して問い合わせおよび設定することができる。設定されたキャプションは、ウィンドウに WS_CAPTION スタイルが適用されている場合にのみ表示される。このスタイルが適用されていない場合、ユーザーに対しては表示されないが、キャプションは設定 (および取得) できる。
現在のフルスクリーン モードを取得する。
構文
HRESULT get_FullScreenMode( long *FullScreenMode );
パラメータ
- FullScreenMode
- 現在のフルスクリーン モードへのポインタ。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、デフォルトで E_NOTIMPL を返す。これは、IVideoWindow PID に、このレンダラがフルスクリーン レンダラを実装していないことを通知する。
現在のウィンドウの高さを取得する。
構文
HRESULT get_Height( long *pHeight );
パラメータ
- pHeight
- ピクセル単位の現在のウィンドウの高さへのポインタ。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは Microsoft® DirectShow® で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
現在の左のウィンドウ座標を取得する。
構文
HRESULT get_Left( long *pLeft );
パラメータ
- pLeft
- ピクセル単位の左の座標へのポインタ。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。この位置座標はピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
理想的なイメージの最大サイズを取得する。
構文
HRESULT GetMaxIdealImageSize( long *pWidth, long *pHeight );
パラメータ
- pWidth
- ピクセル単位の理想的な最大の幅へのポインタ。
- pHeight
- ピクセル単位の理想的な最大の高さへのポインタ。
戻り値
HRESULT 値を返す。
注意
さまざまなレンダラには、表示できるイメージのサイズについてパフォーマンス上の制限がある。レンダラは指定された最大サイズよりも大きいイメージを表示するように要求された場合でも正しく機能するが、IVideoWindow インターフェイスを使用して、理想的な最小サイズおよび最大サイズを指定できる。このインターフェイスはフィルタ グラフがポーズまたは実行されている場合にのみ呼び出される。これは、このとき初めてリソースが割り当てられ、レンダラがその制限を認識できるからである。制限が存在しない場合は、レンダラは pWidth および pHeight パラメータにネイティブ ビデオのディメンジョンを格納し、S_FALSE を返す。制限が存在する場合は、制限された幅および高さが入力され、このメンバ関数は S_OK を返す。
このディメンジョンは転送先ビデオのサイズに適用され、全体的なウィンドウ サイズには適用されない。したがって、設定するウィンドウのサイズを計算するときは、現在のウィンドウ スタイル (WS_CAPTION や WS_BORDER など) を考慮する必要がある。
現在のメッセージ ドレーンを取得する。
構文
HRESULT get_MessageDrain( OAHWND *Drain );
パラメータ
- Drain
- ウィンドウ メッセージを受け取る現在のウィンドウへのポインタ。
戻り値
HRESULT 値を返す。
注意
ビデオ レンダリング フィルタに送信されたメッセージを、別のウィンドウに送信できる。CBaseControlWindow::get_MessageDrain メンバ関数を使用してこのメッセージを受信するように登録されているウィンドウが、現在のメッセージ ドレーンである。
理想的なイメージの最小サイズを取得する。
構文
HRESULT GetMinIdealImageSize( long *pWidth, long *pHeight );
パラメータ
- pWidth
- ピクセル単位の理想的な最小の幅へのポインタ。
- pHeight
- ピクセル単位の理想的な最小の高さへのポインタ。
戻り値
HRESULT 値を返す。
注意
さまざまなレンダラには、表示できるイメージのサイズについてパフォーマンス上の制限がある。レンダラは指定された最大サイズよりも大きいイメージを表示するように要求された場合でも正しく機能するが、IVideoWindow インターフェイスを使用して、理想的な最小サイズおよび最大サイズを指定できる。このインターフェイスはフィルタ グラフがポーズまたは実行されている場合にのみ呼び出される。これは、このとき初めてリソースが割り当てられ、レンダラがその制限を認識できるからである。 制限が存在しない場合は、レンダラは pWidth および pHeight パラメータにネイティブ ビデオのディメンジョンを格納し、S_FALSE を返す。制限が存在する場合は、制限された幅および高さが入力され、このメンバ関数は S_OK を返す。
このディメンジョンは転送先ビデオのサイズに適用され、全体的なウィンドウ サイズには適用されない。したがって、設定するウィンドウのサイズを計算するときは、現在のウィンドウ スタイル (WS_CAPTION や WS_BORDER など) を考慮する必要がある。
現在のウィンドウの所有者を取得する。
構文
HRESULT get_Owner( OAHWND *Owner );
パラメータ
- Owner
- ウィンドウの所有者へのポインタ。
戻り値
HRESULT 値を返す。
注意
ビデオ ウィンドウはドキュメント環境内で再生できる。これを行うには、ウィンドウは別のウィンドウの子でなければならない (ウィンドウを適切にクリップおよび移動するため)。このプロパティによって、ウィンドウの所有者を設定および取得できる。ウィンドウが別のウィンドウによって所有されている場合、そのウィンドウは Microsoft Win32 SetParent 関数を呼び出す。この関数を呼び出すアプリケーションは、ウィンドウ スタイルを変更し、WS_CHILD ビットをオンに設定する。
ウィンドウが別のウィンドウに所有されている場合、特定のメッセージ (具体的にはマウスおよびキーボード メッセージ) を自動的に転送する。これによって、アプリケーションは簡単にホットスポット編集およびその他の相互作用を実行できる。
このメンバ関数は、IVideoWindow インターフェイスを使用して外部オブジェクトによって呼び出されることを想定しているので、関連付けられたフィルタと同期するためにクリティカル セクションをロックする。外部オブジェクトから呼び出さない場合に、このプロパティを取得するには、CBaseControlWindow::GetOwnerWindow メンバ関数を呼び出す。
所有するウィンドウ ハンドル m_hwndOwner を取得する。
構文
HWND GetOwnerWindow(void);
戻り値
所有者ウィンドウを返す内部的なメソッドを返す。
注意
このメンバ関数は、インターフェイス メソッドを呼び出さずに、所有するウィンドウを取得する。IVideoWindow::get_Owner メソッドを使用して外部から呼び出す場合以外は、CBaseControlWindow::get_Owner の代わりにこのメンバ関数を使用する。
最大化または最小化しないときに、ウィンドウが復元される位置を取得する。
構文
HRESULT GetRestorePosition( long *pLeft, long *pTop, long *pWidth, long *pHeight );
パラメータ
- pLeft
- 最も左の座標の値へのポインタ。
- pTop
- ウィンドウ上部の値へのポインタ。
- pWidth
- ウィンドウの幅の値へのポインタ。
- pHeight
- ウィンドウの高さの値へのポインタ。
戻り値
HRESULT 値を返す。
注意
ウィンドウが最大化または最小化されていない場合、これは CBaseControlWindow::GetWindowPosition 関数によって返される値と同じである。
上のウィンドウ座標を取得する。
構文
HRESULT get_Top( long *pTop );
パラメータ
- pTop
- ピクセル単位の上の座標へのポインタ。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
現在のウィンドウの表示の設定を取得する。
構文
HRESULT get_Visible( long *pVisible );
パラメータ
- pVisible
- オートメーション ブール型フラグへのポインタ (0 はオフ、-1 はオン)。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、ウィンドウが WS_VISIBLE スタイルの場合は -1 を返す。それ以外の場合は 0 を返す。
現在のウィンドウの幅を取得する。
構文
HRESULT get_Width( long *pWidth );
パラメータ
- pWidth
- ピクセル単位のウィンドウの幅へのポインタ。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
現在のウィンドウの座標を取得する。
構文
HRESULT GetWindowPosition( long *pLeft, long *pTop, long *pWidth, long *pHeight );
パラメータ
- pLeft
- スクリーン座標での左の座標へのポインタ。
- pTop
- スクリーン座標での上の座標へのポインタ。
- pWidth
- スクリーン座標でのウィンドウの幅へのポインタ。
- pHeight
- スクリーン座標でのウィンドウの高さへのポインタ。
戻り値
HRESULT 値を返す。
現在のウィンドウの状態を取得する。
構文
HRESULT get_WindowState( long *pWindowState );
パラメータ
- pWindowState
- ウィンドウの状態へのポインタ。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、Microsoft Win32 ShowWindow 関数のパラメータのサブセットを返す。具体的には、現在のウィンドウの表示の設定に基づいて SW_SHOW および SW_HIDE を返す。また、ウィンドウがアイコン化されているか、最大化されているかに応じて、SW_MINIMIZE および SW_MAXIMIZE を返す。
標準ウィンドウ スタイルを取得する。
構文
HRESULT get_WindowStyle( long *pWindowStyle );
パラメータ
- pWindowStyle
- ウィンドウ スタイルへのポインタ。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、WS_CHILD および WS_VISIBLE などの標準ウィンドウ スタイルを返す。このメンバ関数は、CBaseControlWindow::DoGetWindowStyle メンバ関数を呼び出す。
拡張ウィンドウ スタイルを取得する。
構文
HRESULT get_WindowStyleEx( long *pWindowStyleEx );
パラメータ
- pWindowStyleEx
- 拡張ウィンドウ スタイルへのポインタ。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、拡張ウィンドウ スタイルを取得する。このメンバ関数は、CBaseControlWindow::DoGetWindowStyle メンバ関数を呼び出す。
カーソルの表示/非表示を切り替える。
構文
HRESULT HideCursor( long HideCursor );
パラメータ
- HideCursor
- カーソルを表示するかどうかを指定する値。カーソルを非表示にする場合は OATRUE に、カーソルを表示する場合は OAFALSE に設定する。
戻り値
HRESULT 値を返す。
m_bCursorHidden データ メンバの現在の状態を取得する。
構文
HRESULT IsCursorHidden( long *CursorHidden );
BOOL IsCursorHidden(void);
パラメータ
- CursorHidden
- m_bCursorHidden の値へのポインタ。
戻り値
パラメータを指定せずに呼び出した場合、カーソルが非表示の場合は OATRUE、カーソルが表示されている場合は OAFALSE を返す。
パラメータを指定して呼び出した場合は、HRESULT 値を返す。
注意
内部オブジェクトは、クリティカル セクションをロックしないように、CursorHidden パラメータを指定せずにこのメンバ関数を呼び出さなければならない。外部オブジェクトは、IVideoWindow::IsCursorHidden メソッドを使ってこのメンバ関数にアクセスする。
レンダリング フィルタがポーズまたは実行されたときに、ビデオ ウィンドウが自動的に表示されるかどうかについての情報を取得する。
構文
BOOL IsAutoShowEnabled(void);
戻り値
m_bAutoShow メンバが -1 に設定されている場合は TRUE、0 に設定されている場合は FALSE を返す。
注意
非表示のビデオ ウィンドウについて m_bAutoShow メンバが -1 に設定されている場合、フィルタがポーズまたは実行されるとウィンドウが表示される。このメンバが 0 に設定されている場合、適切なパラメータを指定して CBaseControlWindow::put_Visible または CBaseControlWindow::put_WindowState を呼び出したときにのみウィンドウが表示される。
このメンバ関数は、m_bAutoShow メンバの設定を取得する。その結果は、IVideoWindow::get_AutoShow メソッドを使用した場合と同じである。
特定のメッセージをビデオ ウィンドウに渡す。
構文
HRESULT NotifyOwnerMessage( long hwnd, long uMsg, long wParam, long lParam );
パラメータ
- hwnd
- ビデオ ウィンドウのハンドル。
- uMsg
- メッセージの詳細。
- wParam
- 最初のメッセージ パラメータ。
- lParam
- 2 番目のメッセージ パラメータ。
戻り値
NO_ERROR を返す。
注意
ビデオ ウィンドウが別のウィンドウの子である場合、ビデオ ウィンドウは特定の最上位ウィンドウのメッセージを受信しない。このようなメッセージはレンダラの動作に影響する場合があるので、レンダラにとって有用なことがある。NotifyOwnerMessage は、以下のメッセージをビデオ ウィンドウに渡す。
- WM_ACTIVATEAPP
- WM_DEVMODECHANGE
- WM_DISPLAYCHANGE
- WM_PALETTECHANGED
- WM_PALETTECHANGED
- WM_QUERYNEWPALETTE
- WM_SYSCOLORCHANGE
IVideoWindow PID に要求して、ウィンドウを別のウィンドウの子にすることができる。この場合、PID は所有するウィンドウに送信された特定のメッセージを検索する。次に、PID はこれらのメッセージを所有されるウィンドウに転送する。このメッセージのデフォルトの処理では、Win32 SendMessage 関数を呼び出して、所有されるウィンドウのプロシージャに同期的にメッセージが送信される。
キーボードおよびマウス メッセージを指定されたウィンドウに転送する。
構文
BOOL WINAPI PossiblyEatMessage( HWND hwndDrain, UINT uMsg, WPARAM wParam, LPARAM lParam )
パラメータ
- hwndDrain
- メッセージが転送されるウィンドウのハンドル。
- uMsg
- 転送されるメッセージ。
- wParam
- 最初のメッセージ パラメータ。
- lParam
- 2 番目のメッセージ パラメータ。
戻り値
メッセージが送信された場合は TRUE、送信されなかった場合は FALSE を返す。
注意
ウィンドウが所有されている場合、このウィンドウは特定のクラスのメッセージ (キーボードおよびマウス メッセージ) を所有するウィンドウに渡す。この場合、Win32 PostMessage 関数を呼び出して、CBaseControlWindow::put_MessageDrain で設定された hwndDrain で指定されているウィンドウにメッセージを送信する。特定のメッセージを送信できない場合、このメッセージは FALSE を返す。
未変換のまま渡されて、TRUE を返すメッセージの一覧を以下に示す。
WM_CHAR WM_DEADCHAR WM_KEYDOWN WM_KEYUP WM_LBUTTONDBLCLK WM_LBUTTONDOWN WM_LBUTTONUP WM_LBUTTONDBLCLK WM_MBUTTONDOWN WM_LBUTTONUP WM_MOUSEACTIVATE WM_MOUSEMOVE WM_NCHITTEST 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 WM_SYSCHAR WM_SYSDEADCHAR WM_SYSKEYDOWN WM_SYSKEYUP
AutoShow 状態フラグを設定する。
構文
HRESULT put_AutoShow( long AutoShow );
パラメータ
- AutoShow
- オートメーション ブール型フラグ (0 はオフ、-1 はオン)。
戻り値
HRESULT 値を返す。
注意
このプロパティは、アプリケーションのウィンドウ表示アクセスを簡素化する。このプロパティが -1 (オン) に設定されている場合、通常フィルタの接続後は非表示になっているウィンドウは、フィルタがポーズまたは実行されると自動的に表示される。ただし、フィルタが停止した場合、ウィンドウを非表示にするべきではない。このパラメータが 0 (オフ) に設定されている場合、アプリケーションが適切なパラメータを指定して CBaseControlWindow::put_Visible または CBaseControlWindow::put_WindowState を呼び出したときにのみウィンドウが表示される。
バックグラウンドでパレットを実現するためのフラグを設定する。
構文
HRESULT put_BackgroundPalette( long BackgroundPalette );
パラメータ
- BackgroundPalette
- オートメーション ブール型フラグ (0 はオフ、-1 はオン)。
戻り値
HRESULT 値を返す。
注意
ビデオを別のアプリケーションまたはドキュメントで再生するために、そのアプリケーションで独自のパレットを使いたいことがある。このフラグを -1 に設定することによって、アプリケーションはビデオのバックグラウンド パレットとして、独自のパレットではなく現在のフォアグラウンド パレットを使用することを要求できる。このフラグが 0 に設定されている場合、ウィンドウは独自の優先パレットをインストールして実現する。ウィンドウで別のパレットを使用するように指定すると、パフォーマンスが大幅に低下する。
境界のカラーを変更する。
構文
HRESULT put_BorderColor( long Color );
パラメータ
- Color
- 新しい境界のカラー。
戻り値
HRESULT 値を返す。
注意
アプリケーションはビデオを表示する転送先矩形を設定できる。この矩形は、ウィンドウのクライアント領域に比例する。転送先矩形を設定した場合 (デフォルトでは常にウィンドウ全体が描画される)、ビデオの周囲に境界が表示される。このプロパティは、境界で使用されるカラーに影響する。このパラメータは LONG 型として指定されているが、実際には COLORREF 値である。
ウィンドウ タイトルまたはキャプションを設定する。
構文
HRESULT put_Caption( BSTR strCaption );
パラメータ
- strCaption
- 新しいウィンドウ キャプション。
戻り値
HRESULT 値を返す。
注意
Windows ベースのデスクトップ上の最上位ウィンドウには、タイトル (キャプション) が関連付けられる。このプロパティは、IVideoWindow インターフェイスを使用して問い合わせおよび設定することができる。設定されたキャプションは、ウィンドウに WS_CAPTION スタイルが適用されている場合にのみ表示される。このスタイルが適用されていない場合、ユーザーに対しては表示されないが、キャプションは設定 (および取得) できる。
レンダラのフルスクリーン モードを設定する。
構文
HRESULT put_FullScreenMode( long FullScreenMode );
パラメータ
- FullScreenMode
- 適用するフルスクリーン モード。
戻り値
HRESULT 値を返す。現在の実装は E_NOTIMPL を返す。
注意
フルスクリーン モードを実装するビデオ レンダラは、このメンバ関数をオーバーライドして、サポートするモードを実装する。
ウィンドウの高さを設定する。
構文
HRESULT put_Height( long Height );
パラメータ
- Height
- ピクセル単位の新しいウィンドウの高さ。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
ウィンドウの左の座標を設定する。
構文
HRESULT put_Left( long Left );
パラメータ
- Left
- ピクセル単位の新しい左の座標。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
ビデオ レンダラに送信されたウィンドウ メッセージを受信するウィンドウを設定する。
構文
HRESULT put_MessageDrain( OAHWND Drain );
パラメータ
- Drain
- メッセージの送信先のウィンドウ。
戻り値
HRESULT 値を返す。
注意
ビデオ レンダリング フィルタに送信されたメッセージを、別のウィンドウに送信できる。このメンバ関数は、このようなメッセージを受信するウィンドウを登録する。CBaseControlWindow::put_Owner メンバ関数とは異なり、このメンバ関数はビデオ ウィンドウを別のウィンドウの子にしない。このメンバ関数は、子ウィンドウにすることができないフルスクリーン ビデオ レンダラで特に有用である。
ビデオ ウィンドウの親ウィンドウを設定する。この親ウィンドウは特定のメッセージをビデオ ウィンドウに転送する。
構文
HRESULT put_Owner( OAHWND Owner );
パラメータ
- Owner
- 親ウィンドウのハンドル。
戻り値
NOERROR を返す。
注意
内部的には、このメソッドは Microsoft Win32 SetParent 関数を呼び出して新しい所有者を設定し、ウィンドウのスタイルを WS_CHILD に設定する。この親ウィンドウは特定のメッセージ (具体的にはマウスおよびキーボード メッセージ) をビデオ ウィンドウに転送する。
ビデオ ウィンドウの所有者を設定した後、フィルタ グラフを解放する前に、所有者を NULL に設定し、所有者のウィンドウ スタイルを WS_OVERLAPPED および WS_CLIPCHILDREN に設定しなければならない。所有者を NULL に設定すると、このメソッドは親ウィンドウの WS_CHILD ビットをオフにする。所有者を NULL に設定しない場合、親ウィンドウはメッセージをビデオ ウィンドウに渡し続けるので、アプリケーションを終了したときにエラーが発生する可能性がある。
上のウィンドウ座標を設定する。
構文
HRESULT put_Top( long Top );
パラメータ
- Top
- ピクセル単位の新しい上の座標。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
ウィンドウを表示または非表示にする。
構文
HRESULT put_Visible( long Visible );
パラメータ
- Visible
- オートメーション ブール型フラグ (0 の場合、ウィンドウは非表示。-1 の場合、ウィンドウは表示される)。
戻り値
HRESULT 値を返す。
ウィンドウの幅を設定する。
構文
HRESULT put_Width( long Width );
パラメータ
- Width
- ピクセル単位の新しいウィンドウの幅。
戻り値
HRESULT 値を返す。
注意
ウィンドウはデスクトップ上に位置座標を持つ。これはピクセル単位の 4 つの座標 (左、上、右、下) によって表される。OLE によって自動化されるインターフェイスでは、通常、左、上、幅、および高さでこの位置座標を表す。これは DirectShow で採用されている規則である。座標はすべてピクセル単位で表され、座標が変更されるとウィンドウが即座に更新される。
左または上の座標を設定すると、ウィンドウはそれぞれ左または上に移動する。これらの座標はウィンドウの幅や高さには影響を与えない。同様に、幅および高さの設定は左および上の座標には影響を与えない。
ウィンドウの状態を設定する。
構文
HRESULT put_WindowState( long WindowState );
パラメータ
- WindowState
- 新しいウィンドウの状態。
戻り値
HRESULT 値を返す。
注意
このメンバ関数は、Microsoft Win32 ShowWindow 関数と同じパラメータ (WS_SHOWNORMAL、WS_SHOWMINNOACTIVATE、および WS_SHOWMAXIMIZED など) を取る。
標準的な Windows ベースのスタイルを設定する。
構文
HRESULT put_WindowStyle( long WindowStyle );
パラメータ
- WindowStyle
- 新しいウィンドウのスタイル。
戻り値
HRESULT 値を返す。
注意
ウィンドウ スタイルを変更する場合は注意が必要である。ほとんどの場合、アプリケーションは現在のスタイルを取得して、ビットを追加または不適切なビットを削除しなければならない。この手順によって、Windows® によって使用されるさまざまな内部ウィンドウ スタイルをそのままにしておくことができる。
コントロール ウィンドウのスタイルを設定する。
構文
HRESULT put_WindowStyleEx( long WindowStyleEx );
パラメータ
- WindowStyleEx
- [in] コントロール ウィンドウのスタイルを設定する値。
戻り値
NOERROR を返す。
注意
このメソッドは、EX (拡張) ウィンドウ スタイルを使用する。拡張ウィンドウ スタイルの詳細については、Microsoft Win32 の関数「CreateWindowEx」を参照すること。ウィンドウ スタイルを変更するには、現在のウィンドウ スタイルを取得し、次に必要なビット フィールドを追加または削除する。
以下のウィンドウ スタイルは有効ではないので、使用してはならない。
- WS_DISABLED
- WS_HSCROLL
- WS_ICONIC
- WS_MAXIMIZE
- WS_MINIMIZE
- WS_HSCROLL
ここに示されている一部の例外を除いて、使用可能なフラグは Win32 CreateWindow 関数で使用できるフラグと同じである。
同期しなければならないピンを設定する。
構文
void SetControlWindowPin( CBasePin *pPin );
パラメータ
- pPin
- インターフェイスが同期するピンへのポインタ。
戻り値
戻り値なし。
注意
このメンバ関数は、m_pPin 変数を pPin パラメータに等しくなるように設定する。コンストラクタで説明したように、このインターフェイスは、フィルタが正常に接続された場合にのみ呼び出すことができる。オブジェクトは、このメンバ関数によって同期されるピンに渡される。ほとんどの場合、インターフェイス メソッドが呼び出されたときにピンが接続されているかどうかを判断し、失敗した場合は VFW_E_NOT_CONNECTED を返す。
ビデオ ウィンドウをフォアグラウンドに移動し、オプションでフォーカスを与える。
構文
HRESULT SetWindowForeground( long Focus );
パラメータ
- Focus
- ビデオ ウィンドウがフォーカスを受け取るかどうかを指定する値。値が -1 の場合、ウィンドウにフォーカスが与えられる。0 の場合、フォーカスは与えられない。
戻り値
次のいずれかの値を返す。
NOERROR メソッドが成功した。 E_INVALIDARG Focus が -1 または 0 ではない。 VFW_E_NOT_CONNECTED 現在のフィルタが、完全なフィルタ グラフに接続されていない。
デスクトップ上のウィンドウの位置を設定する。
構文
HRESULT SetWindowPosition( long Left, long Top, long Width, long Height );
パラメータ
- Left
- 新しい左の座標。
- Top
- 新しい上の座標。
- Width
- ウィンドウの幅。
- Height
- ウィンドウの高さ。
戻り値
HRESULT 値を返す。