IResourceManager::SetFocus
SetFocus メソッドは、指定されたオブジェクトにユーザーのフォーカスが与えられたことをリソース マネージャに通知する。
構文
HRESULT SetFocus(
IUnknown *pFocusObject
);
パラメータ
pFocusObject
[in] ユーザー フォーカスを与えられたオブジェクトへのポインタ。
戻り値
実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
戻りコード | 説明 |
E_FAIL | 失敗。 |
E_POINTER | NULL ポインタ引数。 |
E_INVALIDARG | 無効な引数。 |
E_NOTIMPL | メソッドがサポートされていない。 |
S_OK または NOERROR | 成功。 |
注意
DirectShow では、通常、フォーカスを受け取ったウィンドウを所有するビデオ レンダラが、ユーザー フォーカスを与えられるオブジェクトである。リソース マネージャは、リソース要求に次の順序で優先順位を与える。
- pFocusObject 引数で指定されたフォーカス オブジェクトに関する要求。
- フォーカス オブジェクトが共通ソース フィルタを共有しているような要求。
- フォーカス オブジェクトが共通フィルタ グラフを共有しているような要求。
- フォーカスと同じ処理からの要求。
リソース マネージャは、フォーカスが設定されてから ReleaseFocus が呼び出されるまで、フォーカス オブジェクトを維持しなければならない。つまり、このメソッドを呼び出したら、フォーカス オブジェクトの IUnknown インターフェイスが無効になる前に、ReleaseFocus を使う必要がある。ただし、別のオブジェクトからそれまでに確実に SetFocus が呼び出される場合はこの限りではない。フォーカス オブジェクト上には参照カウントが保持されない。
リソース マネージャは、置き換えられるか取り消されるまでこのポインタを保持し、リソース競合の解決に使う。リソース マネージャは、少なくとも QueryInterface を使って IBaseFilter インターフェイスを照会し、見つかった場合はこのインターフェイスのメソッドを使う。IBaseFilter のメソッドは、オーディオ レンダラが 2 つある場合に、どちらを使うかを決定する (ソース フィルタがフォーカス オブジェクトと共通するものを選ぶ) ために呼び出され、さらに、2 つのオブジェクトが同じフィルタ グラフに含まれるかどうかを調べるために呼び出される。
参照