Рекомендации по реализации IAccessibleEx
Ядро Microsoft модель автоматизации пользовательского интерфейса может извлекать все свойства Microsoft Active Accessibility для любого объекта со специальными возможностями, предоставляемого сервером через интерфейс IAccessible. При реализации IAccessibleEx необходимо предоставлять только те аспекты функциональности пользовательского интерфейса, которые невозможно предоставить через существующие свойства Microsoft Active Accessibility. В этом разделе описываются модель автоматизации пользовательского интерфейса свойства и шаблоны элементов управления, представляющие функциональные возможности пользовательского интерфейса, которые не имеют аналогов в Microsoft Active Accessibility. Это свойства и шаблоны элементов управления, которые можно предоставить в реализации IAccessibleEx.
Этот раздел состоит из следующих подразделов.
- Свойства
- Шаблоны элементов управления
- События WinEvents для событий изменения свойства модель автоматизации пользовательского интерфейса
- Связанные темы
Свойства
Следующие свойства модель автоматизации пользовательского интерфейса не перекрываются с функциональностью 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 продолжать работать, передавая более детализированные сведения о событиях заинтересованным клиентам.
Связанные темы