Поделиться через


Метод IRawElementProviderFragment::Navigate (uiautomationcore.h)

Извлекает элемент службы автоматизации пользовательского интерфейса Майкрософт в указанном направлении в дереве автоматизации пользовательского интерфейса.

Синтаксис

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

Параметры

[in] direction

Тип: NavigateDirection

Направление навигации.

[out, retval] pRetVal

Тип: IRawElementProviderFragment**

Получает указатель на поставщика элемента автоматизации пользовательского интерфейса в указанном направлении или NULL, если в этом направлении нет элемента. Этот параметр передается неинициализирован.

Возвращаемое значение

Тип: HRESULT

Если этот метод выполнен успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT.

Замечания

Реализации этого метода сервера автоматизации пользовательского интерфейса определяют структуру дерева автоматизации пользовательского интерфейса.

Навигация должна поддерживаться вверх к родительскому, вниз к первому и последнему дочерним, а затем к следующему и предыдущему брату, как применимо.

Каждый дочерний узел имеет только один родитель и должен быть помещен в цепочку братьев и сестер, достигнутых от родительского узла NavigateDirection_FirstChild и NavigateDirection_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 (include UIAutomation.h)

См. также

IRawElementProviderFragment