Использование идентификаторов дочерних элементов в параметрах
В этом разделе описываются входные параметры, выходные параметры и особые случаи интерпретации дочерних идентификаторов, возвращаемых методами 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 и Пространственная и логическая навигация.
Связанные темы
-
Основные понятия