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


Навигация по проверке попадания и расположению экрана

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

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

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

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

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

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

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

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

Примечание

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