Использование идентификаторов дочерних элементов в параметрах

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

Входные параметры

Многие функции Microsoft Active Accessibility и большинство свойств IAccessible принимают в качестве входного параметра структуру VARIANT . Для большинства свойств IAccessible этот параметр позволяет разработчикам клиентов указать, нужны ли сведения о самом объекте или об одном из простых элементов объекта.

Microsoft Active Accessibility предоставляет постоянные CHILDID_SELF , указывающие, что требуются сведения о самом объекте. Чтобы получить сведения о простом элементе, клиентские разработчики указывают его дочерний идентификатор в параметре VARIANT .

При инициализации параметра VARIANT не забудьте указать VT_I4 в элементе vt в дополнение к значению дочернего идентификатора (или CHILDID_SELF) в элементе lVal .

Например, чтобы получить имя объекта, а не один из дочерних элементов объекта, инициализируйте VARIANT для первого параметра IAccessible::get_accName ( CHILDID_SELF в элементе lVal и VT_I4 в элементе vt ), а затем вызовите метод IAccessible::get_accName.

Выходные параметры

Некоторые функции и методы IAccessible имеют выходной параметр VARIANT*, содержащий идентификатор дочернего элемента или указатель интерфейса IDispatch на дочерний объект. Клиент должен выполнить различные действия в зависимости от того, получает ли он идентификатор дочернего VT_I4 (простой элемент) или указатель интерфейса IDispatch с CHILDID_SELF (полный объект). После выполнения этих действий вы получите указатель интерфейса IAccessible и идентификатор дочернего элемента, которые вместе позволяют клиентам использовать методы и свойства IAccess . Эти действия применяются к методам IAccessible::accHitTest, get_accFocus и get_accSelection . Они также применяются к клиентским функциям AccessibleObjectFromEvent, AccessibleObjectFromPoint и AccessibleObjectFromWindow .

В следующей таблице перечислены возможные возвращаемые результаты и необходимые шаги постобработки, чтобы клиенты имели указатель интерфейса IAccess и идентификатор дочернего элемента.

Возвращенный результат Постобработка возвращаемого значения
Указатель интерфейса IDispatch Это полный объект. Вызовите QueryInterface для доступа к указателю интерфейса IAccessible .
Используйте указатель интерфейса IAccessible с CHILDID_SELF для доступа к методам и свойствам IAccessible .
идентификатор дочернего VT_I4 Вызовите метод IAccessible::get_accChild , используя идентификатор дочернего элемента, чтобы узнать, есть ли у вас указатель интерфейса IDispatch . Если вы получаете указатель интерфейса IDispatch , используйте его с CHILDID_SELF для доступа к методам и свойствам интерфейса IAccessible .
Если вызов get_accChild завершается сбоем, у вас есть простой элемент. Используйте исходный указатель интерфейса IAccessible (тот, который использовался при вызове метода или функции, упомянутой выше) с идентификатором дочернего VT_I4 , возвращенного вызовом.

Прежде чем использовать параметр VARIANT , необходимо инициализировать его, вызвав функцию VariantInit Component Object Model (COM). Завершив работу со структурой, вызовите VariantClear , чтобы освободить память, зарезервированную для этого variant.

Особые случаи

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

Кроме того, существуют особые случаи для accNavigate. Дополнительные сведения см. в разделах IAccessible::accNavigate и Пространственная и логическая навигация.

Основные понятия

Интерфейс IDispatch

Структура VARIANT