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


Навигация с использованием тестирования пересечений и координат экрана

Чтобы найти дочерние объекты или определить размер объекта, клиенты могут проверять тестовые точки на экране. Доступны два метода:

Использование IAccessible::accHitTest

Чтобы определить, находится ли точка внутри объекта, внутри дочернего объекта или ни один из клиентов, вызовет метод IAccess::accHitTest родительского объекта, передав координаты экрана для проверки точки. В следующем списке описаны некоторые типичные сценарии.

  • Если дочерние элементы объекта перекрываются в указанной точке, IAccessible::accHitTest извлекает самый верхний дочерний элемент, который визуально занимает пространство.
  • Если окно перекрывает дочерний элемент или если дочерний элемент обрезается родительским элементом, то при проверке точки извлекается дочерний элемент, даже если он не отображается.
  • Если найденный в указанной точке дочерний объект является доступным объектом, а не дочерним элементом, метод возвращает интерфейс IDispatch дочернего объекта.

Использование IAccessible::accLocation

Чтобы получить экранное расположение объекта или одного из дочерних объектов, клиенты вызывают IAccessible::accLocation. Этот метод возвращает координаты ограничивающего прямоугольника указанного объекта. Если объект не имеет формы прямоугольника, метод возвращает координаты наименьшего прямоугольника, охватывающего весь объект.

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

иллюстрация, показывающая зону неквадратного объекта (круг) и его ограничивающий прямоугольник.

Заметка

IAccessible::accHitTest является более точным, чем IAccessible::accLocation, так как он позволяет клиентам определять расположение объектов на пиксельном уровне, а не ограниченными прямоугольниками. Эта точность полезна, например, когда приложение собирает информацию, отслеживая расположение указателя мыши.