IAccessible::accLocation 方法 (oleacc.h)
IAccessible::accLocation 方法检索指定对象的当前屏幕位置。 所有视觉对象都必须支持此方法。 声音对象不支持此方法。
语法
HRESULT accLocation(
[out] long *pxLeft,
[out] long *pyTop,
[out] long *pcxWidth,
[out] long *pcyHeight,
[in] VARIANT varChild
);
parameters
[out] pxLeft
类型: long*
以物理屏幕坐标表示的变量的地址,该变量接收对象位置左上角边界的 x 坐标。
[out] pyTop
类型: long*
以物理屏幕坐标表示的变量的地址,该变量接收对象位置左上角边界的 y 坐标。
[out] pcxWidth
类型: long*
地址(以像素为单位)接收对象宽度的变量。
[out] pcyHeight
类型: long*
地址(以像素为单位)接收对象高度的变量。
[in] varChild
类型: VARIANT
指定服务器返回的位置是对象的位置,还是对象的子元素之一的位置。 此参数CHILDID_SELF (获取有关对象) 的信息,或子 ID (获取有关对象子元素的信息) 。 有关初始化 VARIANT 结构的详细信息,请参阅 如何在参数中使用子 ID。
返回值
类型: HRESULT
如果成功,则返回 S_OK。 客户端必须始终检查输出参数包含有效值。
如果未成功,则返回下表中的值之一或其他标准 COM 错误代码。 有关详细信息,请参阅 检查 IAccessible 返回值。
错误 | 说明 |
---|---|
|
对象不支持此方法。 |
|
自变量无效。 |
注解
此方法检索对象的边框。 如果对象具有非矩形形状,则此方法返回完全包含整个对象区域的最小矩形。 对于非矩形对象,如果使用 IAccessible::accHitTest 进行测试,则对象的边界矩形的坐标可能会失败。 此类非矩形对象的示例是大图标模式下的列表视图项,其中单个项具有一个矩形用于图标,另一个矩形用于图标的文本。 由于 accLocation 返回一个边框,因此该矩形中的所有点并非都在对象的实际边界内。 边界矩形中的某些点可能不在 对象上。 有关详细信息,请参阅 通过命中测试和屏幕位置导航。
注意: 此方法返回 width 和 height。 如果需要右侧和底部坐标,请使用右 = 左 + 宽,下 = 顶部 + 高度计算它们。
服务器示例
以下示例演示自定义列表框方法的可能实现,该列表框的列表项是子元素。 对于列表框本身,调用将传递给标准可访问对象,该对象返回窗口的屏幕坐标。
// m_pStdAccessibleObject is the standard accessible object for the control window.
// m_pControl is the object that represents the control. Its GetItemRect method
// retrieves the screen coordinates of the specified item in a zero-based collection.
//
HRESULT STDMETHODCALLTYPE AccServer::accLocation(
long *pxLeft,
long *pyTop,
long *pcxWidth,
long *pcyHeight,
VARIANT varChild)
{
*pxLeft = 0;
*pyTop = 0;
*pcxWidth = 0;
*pcyHeight = 0;
if (varChild.vt != VT_I4)
{
return E_INVALIDARG;
}
if (varChild.lVal == CHILDID_SELF)
{
return m_pStdAccessibleObject->accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
}
else
{
RECT rect;
if (m_pControl->GetItemRect(varChild.lVal - 1, &rect) == FALSE)
{
return E_INVALIDARG;
}
else
{
*pxLeft = rect.left;
*pyTop = rect.top;
*pcxWidth = rect.right - rect.left;
*pcyHeight = rect.bottom - rect.top;
return S_OK;
}
}
};
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | oleacc.h |
Library | Oleacc.lib |
DLL | Oleacc.dll |
可再发行组件 | Windows NT 4.0 SP6 及更高版本和 Windows 95 上的 Active Accessibility 1.3 RDK |