IRawElementProviderFragment::Navigate 方法 (uiautomationcore.h)

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

语法

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

参数

direction

[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 应用]
目标平台 Windows
标头 uiautomationcore.h (包括 UIAutomation.h)

另请参阅

IRawElementProviderFragment