Share via


Método IRawElementProviderFragment::Navigate (uiautomationcore.h)

Recupera el elemento Microsoft UI Automation en una dirección especificada dentro del árbol de automatización de la interfaz de usuario.

Sintaxis

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

Parámetros

direction

[out, retval] pRetVal

Tipo: IRawElementProviderFragment**

Recibe un puntero al proveedor del elemento ui Automation en la dirección especificada, o NULL si no hay ningún elemento en esa dirección. Este parámetro se pasa sin inicializar.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Las implementaciones del servidor de Automatización de la interfaz de usuario de este método definen la estructura del árbol de automatización de la interfaz de usuario.

La navegación debe admitirse hacia arriba hasta el elemento primario, hacia abajo hasta el primer y último elemento secundario, y lateralmente a los elementos del mismo nivel siguientes y anteriores, según corresponda.

Cada nodo secundario tiene solo un elemento primario y debe colocarse en la cadena de elementos del mismo nivel alcanzados desde el elemento primario por NavigateDirection_FirstChild y NavigateDirection_LastChild.

Las relaciones entre los hermanos deben ser idénticas en ambas direcciones: si A es el mismo nivel anterior de A (NavigateDirection_PreviousSibling), B es el siguiente relacionado de A (NavigateDirection_NextSibling). Un primer hijo (NavigateDirection_FirstChild) no tiene ningún elemento relacionado anterior y un último elemento secundario (NavigateDirection_LastChild) no tiene el siguiente elemento del mismo nivel.

Las raíces de fragmentos no permiten la navegación a un elemento primario o relacionado; La navegación entre raíces de fragmentos se controla mediante los proveedores de ventanas predeterminados. Los elementos de los fragmentos solo deben navegar a otros elementos dentro de ese fragmento.

Ejemplos

En el ejemplo siguiente se muestra una implementación para un proveedor de elementos de lista. Las variables de miembro para los proveedores primarios, anteriores del mismo nivel y los siguientes proveedores del mismo nivel se inicializaron cuando se creó la lista.

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;
}              

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado uiautomationcore.h (incluir UIAutomation.h)

Consulte también

IRawElementProviderFragment