Пространственная и логическая навигация
Клиенты получают сведения об объекте, который находится пространственно или логически рядом с другим объектом в том же контейнере, вызывая метод IAccess::accNavigate и указывая одну из констант навигации.
С помощью пространственной навигации клиенты переходит к объекту в зависимости от его расположения на экране. Клиенты перемещаются вверх, вниз, влево или вправо от текущего объекта, чтобы получить сведения о другом объекте в том же контейнере.
С помощью логической навигации клиенты переходют к объекту, который логически предшествует другому объекту или следует за ним, как определено сервером. Клиенты переходить ко всем дочерним элементам объекта двумя способами:
- Запустите навигацию с NAVDIR_FIRSTCHILD , а затем повторно вызовите метод с NAVDIR_NEXT.
- Запустите навигацию с NAVDIR_LASTCHILD и повторно вызовите метод с NAVDIR_PREVIOUS.
Независимо от направления навигация посещает каждый видимый дочерний элемент, принадлежащий родительскому объекту. Невидимые дочерние элементы могут быть пропущены при логической навигации. Кроме того, каждый дочерний элемент посещается только один раз, и навигация не циклически. Это значит, что метод завершается ошибкой, если клиент пытается перейти до первого или после последнего объекта.
Пространственная и логическая навигация связаны. Например, на горизонтальной панели инструментов вызов метода с помощью NAVDIR_RIGHT должен давать те же результаты, что и вызов метода с NAVDIR_NEXT.
Начальным объектом навигации является либо сам объект, либо один из дочерних элементов объекта, за исключением случаев, когдазаданы NAVDIR_FIRSTCHILD или NAVDIR_LASTCHILD ; в этом случае навигация должна начинаться с самого объекта .
Если клиент переходит от доступного объекта к элементу одноуровневого пользовательского интерфейса или если элемент lValvarStart является CHILDID_SELF , а указанный флаг в navDir является любым флагом навигации, кроме NAVDIR_FIRSTCHILD или NAVDIR_LASTCHILD, результатом в pvarEnd является либо дочерний идентификатор, либо интерфейс IDispatch . Если pvarEnd содержит дочерний идентификатор, клиенты должны сначала получить указатель на интерфейс IAccess родительского элемента, чтобы перейти из этого элемента пользовательского интерфейса или получить дополнительные сведения о нем. Чтобы получить родительский объект, клиенты вызывают свойство IAccess::get_accParent одноуровневого объекта или начального объекта навигации.
Обратите внимание, что клиенты должны иметь сведения обо всех плавающих объектах путем вызова функции EnumChildWindows . Поскольку плавающий объект не обрезается к родительскому объекту, клиенты не имеют сведений об иерархической связи между двумя объектами, расположенными рядом друг с другом на экране.
На следующем рисунке показан пример плавающего объекта, который не обрезается к родительскому объекту.
Установка порядка в логической навигации
В логической навигации разработчики, разрабатывающие объекты, устанавливают связи между ними. Логическая навигация более субъективна, чем пространственная навигация. Кроме того, порядок в логической навигации отличается от порядка, используемого с дочерними идентификаторами.
Для объектов с расположением экрана разработчики серверов должны установить порядок навигации так, как большинство пользователей считает логическим. Например, в англоязычных странах и регионах это означает порядок слева направо, сверху вниз.
Порядок логической навигации должен быть параллельным порядком навигации с помощью клавиатуры. Например, диалоговое окно содержит кнопки "ОК" и "Отмена " и несколько элементов управления "Изменить". Клиент, вызывающий IAccessible::accNavigate для перехода к следующему или предыдущему объекту в этом диалоговом окне, перемещается в том же порядке, что и пользователь, нажимающий клавиши TAB или SHIFT+TAB для перемещения фокуса между элементами.
Для объектов, которые не имеют определенных расположений на экране, логический порядок определяется разработчиками серверов, и разработчики клиентов не должны делать никаких предположений относительно этого. Например, это допустимо для невидимых объектов, таких как объекты, которые только временно скрыты, перемежаются с видимыми объектами.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по