Navigation Through Hit Testing and Screen Location

To locate an object's children or to determine an object's size, clients can hit test points on the screen. Two methods are available:

Using IAccessible::accHitTest

To identify whether a point is within an object, within its child, or neither, clients call the IAccessible::accHitTest method of the parent object, passing the screen coordinates of the point to be hit tested. The following list describes some typical scenarios:

  • If the object's children overlap at a specified point, IAccessible::accHitTest retrieves the topmost child that visually appears to occupy the space.
  • If a window covers a child, or if the child is clipped by the parent, hit testing the covered point retrieves the child even though it is not visible.
  • If the child found at the specified point is an accessible object, as opposed to a child element, the method returns the child's IDispatch interface.

Using IAccessible::accLocation

To get the screen location of an object or one of the object's children, clients call IAccessible::accLocation. This method returns the coordinates of the specified object's bounding rectangle. If the object is not shaped like a rectangle, the method returns the coordinates of the smallest rectangle that encompasses the entire object.

The following illustration shows the relationship between a non-rectangular object's region and its bounding rectangle.

Illustration showing a nonrectangular object's region (a circle) and its bounding rectangle.

Note  IAccessible::accHitTest is more precise than IAccessible::accLocation because it enables clients to determine the location of objects on a pixel-by-pixel basis rather than with bounding rectangles. This precision is useful, for example, when an application is gathering information by tracking the location of the mouse pointer.