IRawElementProviderFragment::Navigate 方法(uiautomationcore.h)

检索 UI 自动化树中指定方向的 Microsoft UI 自动化元素。

语法

HRESULT Navigate(
  [in]          NavigateDirection           direction,
  [out, retval] IRawElementProviderFragment **pRetVal
);

参数

[in] direction

类型:NavigateDirection

要导航的方向。

[out, retval] pRetVal

类型:IRawElementProviderFragment**

接收指向指定方向的 UI 自动化元素提供程序的指针;如果没有该方向的元素,则 NULL。 此参数未初始化传递。

返回值

类型:HRESULT

如果此方法成功,则返回 S_OK。 否则,它将返回 HRESULT 错误代码。

言论

此方法的 UI 自动化服务器的实现定义 UI 自动化树的结构。

导航必须向上支持到父级、向下到第一个子级和最后一个子级,以及横向到下一个和上一个兄弟姐妹(如果适用)。

每个子节点只有一个父节点,并且必须通过 NavigateDirection_FirstChildNavigateDirection_LastChild放置在从父级到达的同级节点链中。

兄弟姐妹之间的关系必须两个方向相同:如果 A 是 B 以前的兄弟姐妹(NavigateDirection_PreviousSibling),则 B 是 A 的下一个兄弟姐妹(NavigateDirection_NextSibling)。 第一个孩子(NavigateDirection_FirstChild)没有以前的兄弟姐妹,最后一个孩子(NavigateDirection_LastChild)没有下一个兄弟姐妹。

片段根不支持导航到父级或同级;片段根之间的导航由默认窗口提供程序处理。 片段中的元素只能导航到该片段中的其他元素。

例子

以下示例演示列表项提供程序的实现。 创建列表时初始化父级、上一个同级和下一个同级提供程序的成员变量。

HRESULT STDMETHODCALLTYPE ListItemProvider::Navigate(NavigateDirection direction, IRawElementProviderFragment ** pRetVal)
{
    if (pRetVal == NULL) 
    {
        return E_INVALIDARG;
    }

    IRawElementProviderFragment* pFrag = NULL;
    switch(direction)
    {
        case NavigateDirection_Parent:
            pFrag = (IRawElementProviderFragment*)m_parentProvider;       
            break;

        case NavigateDirection_NextSibling:
            pFrag = (IRawElementProviderFragment*)m_nextSiblingProvider;
            break;

        case NavigateDirection_PreviousSibling:  
            pFrag = (IRawElementProviderFragment*)m_previousSiblingProvider;
            break;
    }
    *pRetVal = pFrag;
    if (pFrag != NULL) 
    {
        pFrag->AddRef();
    }
    return S_OK;
}              

要求

要求 价值
最低支持的客户端 Windows XP [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2003 [桌面应用 |UWP 应用]
目标平台 窗户
标头 uiautomationcore.h (包括 UIAutomation.h)

另请参阅

IRawElementProviderFragment