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


Рекомендации по реализации IAccessibleEx

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

Этот раздел состоит из следующих подразделов.

Свойства

Следующие свойства модель автоматизации пользовательского интерфейса не перекрываются с функциональностью Microsoft Active Accessibility. Их можно использовать в реализации IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Культура
  • Описание По
  • FlowsTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Ориентация

Хотя свойства AcceleratorKey и AccessKey модель автоматизации пользовательского интерфейса перекрываются со свойством accKeyboardShortcut Microsoft Active Accessibility, их по-прежнему можно использовать в реализации IAccessibleEx для элементов управления с ключом доступа и ускорителем. Аналогичным образом свойство ControlType модель автоматизации пользовательского интерфейса перекрывается со свойством Microsoft Active Accessibility accRole, но его по-прежнему можно использовать в реализации IAccessibleEx для определения более конкретной роли для элемента управления.

Так как следующие свойства элементов модель автоматизации пользовательского интерфейса уже охвачены свойствами Microsoft Active Accessibility, их нет необходимости использовать в реализации IAccessibleEx.

Свойство модели автоматизации пользовательского интерфейса Эквивалент специальных возможностей Microsoft Active
BoundingRectangle accLocation
HasKeyboardFocus accState, STATE_SYSTEM_FOCUSED
IsEnabled accState, STATE_SYSTEM_UNAVAILABLE
IsKeyboardFocusable accState, STATE_SYSTEM_FOCUSABLE
IsPassword accState, STATE_SYSTEM_PROTECTED
HelpText accHelp
Имя accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Предоставляется модель автоматизации пользовательского интерфейса ядром

 

Для любого неподдерживаемого свойства модель автоматизации пользовательского интерфейса реализация метода IRawElementProviderSimple::GetPropertyValue должна задать для параметра pRetVal значение VT_EMPTY и вернуть S_OK. Возврат UIA_E_NOTSUPPORTED может привести к тому, что прокси-сервер MSAA-to-UIA удалит сопоставление по умолчанию для соответствующего свойства.

Шаблоны элементов управления

Следующие модель автоматизации пользовательского интерфейса шаблоны элементов управления не перекрываются с возможностями Microsoft Active Accessibility. Их можно использовать в реализации IAccessibleEx :

  • Панель закрепления
  • ExpandCollapse
  • Сетка
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Таблица
  • TableItem
  • Преобразование

Для шаблонов элементов управления RangeValue и Transform некоторые методы перекрываются между шаблоном элемента управления модель автоматизации пользовательского интерфейса и методами Microsoft Active Accessibility. В этих случаях необходимо реализовать оба варианта. Например, необходимо реализовать оба метода Microsoft Active Accessibility IAccessible::get_accValue и IAccessible::p ut_accValue, а также методы модель автоматизации пользовательского интерфейса IRangeValueProvider::Value и IRangeValueProvider::SetValue. На внутреннем уровне реализация может совместно использовать код для них. Это требование для реализации обоих наборов позволяет избежать частичной реализации интерфейса шаблона, сохраняя интерфейс IAccess в использовании существующими клиентами Microsoft Active Accessibility.

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

Шаблон элемента управления модель автоматизации пользовательского интерфейса Роль Microsoft Active Accessibility
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON и любую другую роль, где значение свойства accDefaultAction не равно NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (если оно не доступно только для чтения), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX и любую другую роль, если значение свойства accValue не равно NULL.
WindowPattern Автоматически поддерживается в microsoft Win32 HWNDверхнего уровня.

 

События WinEvents для событий изменения свойства модель автоматизации пользовательского интерфейса

Помимо событий, определенных для IAccessible, также определяются следующие идентификаторы событий, которые могут использоваться с реализацией IAccessibleEx в качестве событий изменения свойства для соответствующих свойств модель автоматизации пользовательского интерфейса. Они используют тот же механизм, что и события, определенные для IAccessible. Дополнительные сведения см. в разделе События WinEvents.

Идентификатор WinEvent для реализаций IAccessibleEx Связанный идентификатор WinEvent из Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Нет
UIA_AriaRolePropertyId Нет
UIA_ControllerForPropertyId Нет
UIA_DescribedByPropertyId Нет
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Нет
UIA_InputDiscardedEventId Нет
UIA_InputReachedOtherElementEventId Нет
UIA_InputReachedTargetEventId Нет
UIA_IsDataValidForFormPropertyId Нет
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Нет
UIA_MultipleViewCurrentViewPropertyId Нет
UIA_ScrollHorizontallyScrollablePropertyId Нет
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Нет
UIA_ScrollVerticallyScrollablePropertyId Нет
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Нет
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Для указанных выше событий, у которых есть значение EVENT_OBJECT_, указанное после них, и реализация IAccessibleEx должна вызывать это событие в дополнение к указанному измененному событию. Это позволяет существующему клиентскому коду IAccessibleEx продолжать работать, передавая более детализированные сведения о событиях заинтересованным клиентам.

WinEvents

Интерфейс IAccessibleEx