IUIAutomation::AddFocusChangedEventHandler 方法 (uiautomationclient.h)

注册处理焦点更改事件的方法。

注意 在实现事件处理程序之前,应熟悉了解线程问题中所述 的线程问题
 

语法

HRESULT AddFocusChangedEventHandler(
  [in] IUIAutomationCacheRequest             *cacheRequest,
  [in] IUIAutomationFocusChangedEventHandler *handler
);

参数

[in] cacheRequest

类型: IUIAutomationCacheRequest*

指向缓存请求的指针;如果不需要缓存,则为 NULL

[in] handler

类型: IUIAutomationFocusChangedEventHandler*

指向处理事件的 对象的指针。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

焦点更改事件是系统范围的;不能设置更窄的范围。

UI 自动化客户端不应使用多个线程来添加或删除事件处理程序。 如果在同一客户端进程中添加或删除另一个事件处理程序,则会导致意外行为。

示例

以下示例函数创建一个实现 IUIAutomationFocusChangedEventHandler 的对象,并通过添加 处理程序订阅 事件。

HRESULT AddFocusHandler(IUIAutomation* pAutomation)
{ 
    // CFocusHandler is a class that implements IUIAutomationFocusChangedEventHandler. 
    CFocusHandler* pFocusHandler = new CFocusHandler();
    if (!pFocusHandler)
    {
        return E_OUTOFMEMORY;
    }
    IUIAutomationFocusChangedEventHandler* pHandler;
    pFocusHandler->QueryInterface(IID_IUIAutomationFocusChangedEventHandler, (void**)&pHandler);
    HRESULT hr = pAutomation->AddFocusChangedEventHandler(NULL, pHandler);
    pFocusHandler->Release();
    return hr;
}

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新、带 SP3 的 Windows XP 和适用于 Windows Vista 的平台更新 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2、带 SP2 的 Windows Server 2008 和适用于 Windows Server 2008 的平台更新、带 SP2 的 Windows Server 2003 和适用于 Windows Server 2008 的平台更新 [仅限桌面应用]
目标平台 Windows
标头 uiautomationclient.h (包括 UIAutomation.h)

另请参阅

缓存UI 自动化属性和控件模式

概念性

IUIAutomation

IUIAutomationFocusChangedEventHandler

引用

RemoveAllEventHandlers

RemoveFocusChangedEventHandler

订阅UI 自动化事件

了解线程问题