IRawElementProviderFragmentRoot::ElementProviderFromPoint 方法 (uiautomationcore.h)
检索位于此片段中指定点的元素的提供程序。
语法
HRESULT ElementProviderFromPoint(
[in] double x,
[in] double y,
[out, retval] IRawElementProviderFragment **pRetVal
);
参数
[in] x
类型: double
水平屏幕坐标。
[in] y
类型: double
垂直屏幕坐标。
[out, retval] pRetVal
类型: IRawElementProviderFragment**
接收指向元素提供程序的指针,该元素位于 (x、y) 或 NULL (如果不存在)。 此参数未经初始化即被传递。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
返回的提供程序应对应于将在指定点接收鼠标输入的元素。
如果点位于此元素上,但不在任何子元素上,则返回 NULL 或片段根的提供程序。 如果点位于此片段承载的另一个框架中的元素上,则该方法返回承载该片段的元素 (,如 IRawElementProviderFragment::GetEmbeddedFragmentRoots) 所示。
示例
以下示例演示 HWND 中托管的列表框的实现,该列表框的句柄 m_controlHwnd。 IndexFromY 检索游标位置的列表项的索引,GetItemByIndex 检索该项的UI 自动化提供程序。
HRESULT STDMETHODCALLTYPE ListProvider::ElementProviderFromPoint(double x, double y, IRawElementProviderFragment** pRetVal)
{
if (pRetVal == NULL)
{
return E_INVALIDARG;
}
POINT pt;
pt.x = (LONG)x;
pt.y = (LONG)y;
ScreenToClient(m_controlHwnd, &pt);
int itemIndex = this->m_pControl->IndexFromY(m_controlHwnd, pt.y);
ListItemProvider* pItem = GetItemByIndex(itemIndex);
if (pItem != NULL)
{
*pRetVal = (IRawElementProviderFragment*)pItem;
pItem->AddRef();
}
else
{
pRetVal = (IRawElementProviderFragment*)this;
pItem->AddRef();
}
return S_OK;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | uiautomationcore.h (包括 UIAutomation.h) |