Использование дочерних идентификаторов в параметрах
В этом разделе описываются входные параметры, выходные параметры и специальные случаи для интерпретации дочерних идентификаторов, возвращаемых из методов IAccessible.
Входные параметры
Многие из функций Microsoft Active Accessibility и большинство свойств i AccessAccessIAccessible принимают структуру 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 и дочерний идентификатор, которые позволяют клиентам использовать методы и свойства IAccessible. Эти действия применяются к методам IAccessible::accHitTest, get_accFocusи get_accSelection. Они также применяются к AccessibleObjectFromEvent, AccessibleObjectFromPointи AccessibleObjectFromWindow клиентские функции.
В следующей таблице перечислены возможные возвращаемые результаты и необходимые шаги для постобработки, чтобы клиенты получили IAccessible указатель интерфейса и дочерний идентификатор.
Возвращается результат | После обработки возвращаемого значения |
---|---|
указатель интерфейса 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 и в Пространственная и логическая навигация.
Связанные разделы
-
концептуальные