Instrucciones de implementación de IAccessibleEx
El núcleo de Microsoft Automatización de la interfaz de usuario puede recuperar todas las propiedades de accesibilidad activa de Microsoft para cualquier objeto accesible expuesto por un servidor a través de la interfaz IAccessible. Al implementar IAccessibleEx, solo debe exponer los aspectos de la funcionalidad de la interfaz de usuario que, de lo contrario, no se pueden exponer a través de las propiedades de accesibilidad activas de Microsoft existentes. En este tema se identifican las propiedades Automatización de la interfaz de usuario y los patrones de control que representan la funcionalidad de la interfaz de usuario que no tiene ningún homólogo en Accesibilidad activa de Microsoft, son las propiedades y los patrones de control que puede exponer en una implementación de IAccessibleEx.
Este tema contiene las siguientes secciones:
- Propiedades
- Patrones de control
- Eventos modificados de propiedades de WinEvents para Automatización de la interfaz de usuario
- Temas relacionados
Propiedades
Las siguientes propiedades Automatización de la interfaz de usuario no se superponen con la funcionalidad de accesibilidad activa de Microsoft. Se pueden usar en una implementación de IAccessibleEx :
- AriaProperties
- AriaRole
- AutomationId
- ClassName
- ClickablePoint
- ControllerFor
- Referencia cultural
- DescriptBy
- FlowsTo
- FrameworkId
- IsContentElement
- IsControlElement
- IsDataValidForForm
- IsRequiredForForm
- ItemStatus
- ItemType
- LabeledBy
- LocalizedControlType
- Orientación
Aunque las propiedades AcceleratorKey y AccessKey Automatización de la interfaz de usuario se superponen con la propiedad accKeyboardShortcut Microsoft Active Accessibility, todavía puede usarlas en una implementación de IAccessibleEx para los controles que tienen una tecla de acceso y un acelerador. Del mismo modo, la propiedad ControlType Automatización de la interfaz de usuario se superpone con la propiedad accRole de accesibilidad activa de Microsoft, pero todavía puede usarla en una implementación de IAccessibleEx para definir un rol más específico para un control.
Dado que las siguientes propiedades de elemento Automatización de la interfaz de usuario ya están cubiertas por las propiedades de accesibilidad activa de Microsoft, no es necesario usarlas en una implementación de IAccessibleEx.
Propiedad de automatización de interfaz de usuario | Equivalente de accesibilidad activa de Microsoft |
---|---|
BoundingRectangle | accLocation |
HasKeyboardFocus | accState, STATE_SYSTEM_FOCUSED |
IsEnabled | accState, STATE_SYSTEM_UNAVAILABLE |
IsKeyboardFocusable | accState, STATE_SYSTEM_FOCUSABLE |
IsPassword | accState, STATE_SYSTEM_PROTECTED |
HelpText | accHelp |
Nombre | accName |
NativeWindowHandle | WindowFromAccessibleObject |
IsOffscreen | accState, STATE_SYSTEM_INVISIBLE STATE_SYSTEM_OFFSCREEN/ |
ProcessId | Proporcionado por Automatización de la interfaz de usuario core |
Para cualquier propiedad Automatización de la interfaz de usuario no admitida, la implementación del método IRawElementProviderSimple::GetPropertyValue debe establecer el parámetro pRetVal en VT_EMPTY y devolver S_OK. Devolver UIA_E_NOTSUPPORTED puede hacer que el proxy de MSAA a UIA quite la asignación predeterminada de la propiedad correspondiente.
Patrones de control
Los siguientes patrones de control Automatización de la interfaz de usuario no se superponen con la funcionalidad de accesibilidad activa de Microsoft. Se pueden usar en una implementación de IAccessibleEx :
- Acoplar
- Expandir y contraer
- Cuadrícula
- GridItem
- MultipleView
- RangeValue
- Scroll
- ScrollItem
- SynchronizedInput
- Tabla
- TableItem
- Transformación
Para los patrones de control RangeValue y Transform, algunos métodos se superponen entre el patrón de control de Automatización de la interfaz de usuario y los métodos de accesibilidad activa de Microsoft. En estos casos, ambos deben implementarse. Por ejemplo, tanto los métodos IAccessible::get_accValue como IAccessible:::p ut_accValue de Microsoft Active Accessibility deben implementarse, como los métodos Automatización de la interfaz de usuario IRangeValueProvider::Value e IRangeValueProvider::SetValue. Internamente, una implementación puede compartir código para estos. Este requisito para implementar ambos conjuntos evita tener una implementación parcial de una interfaz de patrón al tiempo que mantiene la interfaz IAccessible utilizable por los clientes existentes de Accesibilidad activa de Microsoft.
Los siguientes Automatización de la interfaz de usuario patrones de control no son necesarios cuando el control tiene uno de los roles que se describen a continuación; de lo contrario, deben admitirse explícitamente si procede.
patrón de control de Automatización de la interfaz de usuario | Rol de accesibilidad activa de Microsoft |
---|---|
InvokePattern | ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON y cualquier otro rol en el que el valor de la propiedad accDefaultAction no sea NULL. |
SelectionItemPattern | ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON |
SelectionPattern | ROLE_SYSTEM_LIST |
TogglePattern | ROLE_SYSTEM_CHECKBUTTON |
ValuePattern | ROLE_SYSTEM_TEXT (cuando no es de solo lectura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX y cualquier otro rol cuando el valor de la propiedad accValue no es NULL. |
WindowPattern | Se admite automáticamente en los S HWNDde Microsoft Win32 de nivel superior. |
Eventos modificados de propiedades de WinEvents para Automatización de la interfaz de usuario
Además de los eventos definidos para IAccessible, también se definen los siguientes identificadores de evento y se pueden usar con una implementación de IAccessibleEx como eventos modificados de propiedad para las propiedades de Automatización de la interfaz de usuario correspondientes. Estos usan el mismo mecanismo que los eventos definidos para IAccessible. Para obtener más información, consulte WinEvents.
Para los eventos anteriores que tienen un valor de EVENT_OBJECT_ enumerados después de ellos, y la implementación de IAccessibleEx debe activar este evento además del evento modificado enumerado. Esto permite que el código de cliente IAccessibleEx existente siga funcionando, al tiempo que transmite información de eventos más granular a los clientes interesados.
Temas relacionados