IRawElementProviderWindowlessSite::GetAdjacentFragment 方法(uiautomationcore.h)
检索与此控件站点拥有的无窗口Microsoft ActiveX 控件相邻的片段的片段指针。
语法
HRESULT GetAdjacentFragment(
[in] NavigateDirection direction,
[out, retval] IRawElementProviderFragment **ppParent
);
参数
[in] direction
一个值,指示要检索的相邻片段(父级、下一个同级、以前的同级等)。
[out, retval] ppParent
类型:IRawElementProviderFragment**
接收相邻片段。
返回值
类型:HRESULT
如果此方法成功,它将返回S_OK。 否则,它将返回 HRESULT 错误代码。 如果方向 NavigateDirection_FirstChild 或 NavigateDirection_LastChild,则返回值为E_INVALIDARG,此方法无效。 如果请求的方向中没有相邻的片段,该方法将返回S_OK并将 ppRetVal 设置为 NULL。
言论
若要返回片段的父级,实现 IRawElementProviderFragment 接口的对象必须能够实现 Navigate 方法。 实现 Navigate 对于无窗口 ActiveX 控件来说很难,因为该控件可能无法确定其在父对象的可访问树中的位置。 GetAdjacentFragment 方法使无窗口 ActiveX 控件能够查询其站点中的相邻片段,然后将该片段返回到调用 Navigate的客户端。
提供程序通常调用此方法作为处理 IRawElementProviderFragment::Navigate 方法的一部分。
例子
以下C++代码示例演示如何实现 GetAdjacentFragment 方法。
IFACEMETHODIMP CProviderWindowlessSite::GetAdjacentFragment(
enum NavigateDirection direction, IRawElementProviderFragment **ppFragment)
{
if (ppFragment == NULL)
{
return E_INVALIDARG;
}
*ppFragment = NULL;
HRESULT hr = S_OK;
switch (direction)
{
case NavigateDirection_Parent:
{
IRawElementProviderSimple *pSimple = NULL;
// Call an application-defined function to retrieve the
// parent provider interface.
hr = GetParentProvider(&pSimple);
if (SUCCEEDED(hr))
{
// Get the parent's IRawElementProviderFragment interface.
hr = pSimple->QueryInterface(IID_PPV_ARGS(ppFragment));
pSimple->Release();
}
}
break;
case NavigateDirection_FirstChild:
case NavigateDirection_LastChild:
hr = E_INVALIDARG;
break;
// Ignore NavigateDirection_NextSibling and NavigateDirection_PreviousSibling
// because there are no adjacent fragments.
default:
break;
}
return hr;
}
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 8 [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2012 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | uiautomationcore.h (包括 UIAutomation.h) |