|Microsoft DirectX 9.0|
The SetFocus method notifies the resource manager that a specified object has been given the focus of the user.
HRESULT SetFocus( IUnknown *pFocusObject );
[in] Pointer to the object that has been given the user's focus.
Returns an HRESULT value that depends on the implementation. HRESULT can be one of the following standard constants, or other values not listed.
|E_POINTER||Null pointer argument.|
|E_NOTIMPL||Method isn't supported.|
|S_OK or NOERROR||Success.|
In DirectShow, the object given the user's focus is typically a video renderer whose window has received the focus. The resource manager gives priority to requests for resources in the following order:
After a focus has been set, the resource manager must maintain a focus object until ReleaseFocus is called. That is, after calling this method, you must use ReleaseFocus before the IUnknown interface of the focus object becomes invalid, unless you can guarantee that SetFocus is called by a different object in the meantime. No reference count is held on the focus object.
The resource manager will hold this pointer until replaced or canceled, and will use it to resolve resource contention. It will use QueryInterface for the IBaseFilter interface at least and, if found, will use methods on that interface. It calls methods on IBaseFilter to decide which audio renderer to use if there are two (it will choose the one with a source filter common to the focus object), and also to determine if the two objects are within the same filter graph.