IAccessible::get_accFocus 方法 (oleacc.h)

IAccessible::get_accFocus 方法检索具有键盘焦点的对象。 所有可能接收键盘焦点的对象都必须支持此属性。

语法

HRESULT get_accFocus(
  [out, retval] VARIANT *pvarChild
);

参数

[out, retval] pvarChild

类型: VARIANT*

接收有关具有焦点的对象的信息的 VARIANT 结构的 地址。 下表描述了 pvarID 中返回的信息。

含义
VT_EMPTY
无。 此对象及其任何子对象都没有键盘焦点。
VT_I4
lVal 为CHILDID_SELF。 对象本身具有键盘焦点。
VT_I4
lVal 包含具有键盘焦点的子元素的子元素的子 ID。
VT_DISPATCH
pdispVal 成员是具有键盘焦点的子对象的 IDispatch 接口 的地址。

返回值

类型: HRESULT

如果成功,则返回 S_OK。

如果未成功,则返回下表中的值之一或另一个标准 COM 错误代码。 服务器返回这些值,但客户端必须始终检查输出参数,以确保它们包含有效值。 有关详细信息,请参阅 检查 I 可访问的返回值

错误 说明
S_FALSE
对象是窗口,但不是前台窗口。
DISP_E_MEMBERNOTFOUND
对象不支持此属性。

注解

键盘焦点的概念与活动窗口的概念相关。 活动窗口是用户工作的前景窗口。 具有键盘焦点的对象是活动窗口或活动窗口的子对象。

一个容器中只有一个对象或项在任意时间具有焦点。 具有键盘焦点的对象并不总是所选对象。 有关选择和焦点之间的差异的详细信息,请参阅 选择和焦点属性和方法

此方法返回 pvarIDIDispatch 接口指针或子 ID。 有关如何使用 IDispatch 接口指针或子 ID 的详细信息,请参阅 如何在参数中使用子 ID

与其他 IAccessible 方法和函数一样,由于用户操作,客户端可能会收到 IAccessible 接口指针的错误。 有关详细信息,请参阅 接收 IAccessible 接口指针的错误

服务器示例

以下示例代码演示了自定义单选列表框此方法的可能实现。 如果控件没有焦点,则 HWND 的标准可访问对象在变体中返回VT_EMPTY。 如果控件具有焦点,并且选择了某个项,则返回该项的子 ID;如果没有选择,则返回CHILDID_SELF。

// m_pControl is the control object that is served by this implementation. 
// m_pStdAccessibleObject is the object returned by CreateStdAccessibleObject. 

HRESULT STDMETHODCALLTYPE AccServer::get_accFocus(VARIANT *pvarChild)
{
    FAIL_IF_NO_CONTROL;  // Macro that checks for existence of control. 

    HRESULT hr = m_pStdAccessibleObject->get_accFocus(pvarChild);  
    if (pvarChild->vt != VT_I4)
    {
        return hr;
    }
    else
    {
        int index = m_pControl->GetSelectedIndex();
        if (index <0)
        {
            pvarChild->lVal = CHILDID_SELF;
        }
        else
        {
            // Convert to 1-based index for child ID. 
            pvarChild->lVal = index + 1;
        }
    }
    return S_OK;
};


要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 oleacc.h
Library Oleacc.lib
DLL Oleacc.dll
可再发行组件 具有 SP6 及更高版本和 Windows 95 的 Windows NT 4.0 上的活动辅助功能 1.3 RDK

另请参阅

IAccessible

IAccessible::accSelect

IAccessible::get_accSelection

IDispatch

选择和焦点属性和方法