IAccessible::get_accFocus 方法 (oleacc.h)
IAccessible::get_accFocus 方法检索具有键盘焦点的对象。 所有可能接收键盘焦点的对象都必须支持此属性。
语法
HRESULT get_accFocus(
[out, retval] VARIANT *pvarChild
);
参数
[out, retval] pvarChild
类型: VARIANT*
接收有关具有焦点的对象的信息的 VARIANT 结构的 地址。 下表描述了 pvarID 中返回的信息。
值 | 含义 |
---|---|
|
无。 此对象及其任何子对象都没有键盘焦点。 |
|
lVal 为CHILDID_SELF。 对象本身具有键盘焦点。 |
|
lVal 包含具有键盘焦点的子元素的子元素的子 ID。 |
|
pdispVal 成员是具有键盘焦点的子对象的 IDispatch 接口 的地址。 |
返回值
类型: HRESULT
如果成功,则返回 S_OK。
如果未成功,则返回下表中的值之一或另一个标准 COM 错误代码。 服务器返回这些值,但客户端必须始终检查输出参数,以确保它们包含有效值。 有关详细信息,请参阅 检查 I 可访问的返回值。
错误 | 说明 |
---|---|
|
对象是窗口,但不是前台窗口。 |
|
对象不支持此属性。 |
注解
键盘焦点的概念与活动窗口的概念相关。 活动窗口是用户工作的前景窗口。 具有键盘焦点的对象是活动窗口或活动窗口的子对象。
一个容器中只有一个对象或项在任意时间具有焦点。 具有键盘焦点的对象并不总是所选对象。 有关选择和焦点之间的差异的详细信息,请参阅 选择和焦点属性和方法。
此方法返回 pvarID 的 IDispatch 接口指针或子 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 |