Instructions d’implémentation iAccessibleEx
Microsoft UI Automation core peut récupérer toutes les propriétés Microsoft Active Accessibility pour tout objet accessible exposé par un serveur via l’interface IAccessible. Lorsque vous implémentez IAccessibleEx, vous devez exposer uniquement les aspects des fonctionnalités d’interface utilisateur qui ne peuvent pas être exposés par le biais des propriétés Microsoft Active Accessibility existantes. Cette rubrique identifie les propriétés UI Automation et les modèles de contrôle qui représentent des fonctionnalités d’interface utilisateur qui n’ont pas d’équivalent dans Microsoft Active Accessibility. Il s’agit des propriétés et des modèles de contrôle que vous pouvez exposer dans une implémentation IAccessibleEx.
Cette rubrique contient les sections suivantes :
- Propriétés
- Modèles de contrôle
- WinEvents for UI Automation Property Changed Events
- Rubriques connexes
Propriétés
Les propriétés de UI Automation suivantes ne chevauchent pas la fonctionnalité Microsoft Active Accessibility. Ils peuvent être utilisés dans une implémentation IAccessibleEx :
- AriaProperties
- AriaRole
- AutomationId
- ClassName
- ClickablePoint
- ControllerFor
- Culture
- Description Par
- FlowTo
- FrameworkId
- IsContentElement
- IsControlElement
- IsDataValidForForm
- IsRequiredForForm
- ItemStatus
- itemType
- LabeledBy
- LocalizedControlType
- Orientation
Bien que les propriétés AcceleratorKey et AccessKey UI Automation chevauchent la propriété accKeyboardShortcut Microsoft Active Accessibility, vous pouvez toujours les utiliser dans une implémentation IAccessibleEx pour les contrôles qui ont à la fois une clé d’accès et un accélérateur. De même, la propriété ControlType UI Automation chevauche la propriété AccRole Microsoft Active Accessibility, mais vous pouvez toujours l’utiliser dans une implémentation IAccessibleEx pour définir un rôle plus spécifique pour un contrôle.
Étant donné que les propriétés d’élément UI Automation suivantes sont déjà couvertes par les propriétés Microsoft Active Accessibility, il n’est pas nécessaire de les utiliser dans une implémentation IAccessibleEx.
Propriété UI Automation | Microsoft Active Accessibility Equivalent |
---|---|
BoundingRectangle | accLocation |
HasKeyboardFocus | accState, STATE_SYSTEM_FOCUSED |
IsEnabled | accState, STATE_SYSTEM_UNAVAILABLE |
IsKeyboardFocusable | accState, STATE_SYSTEM_FOCUSABLE |
IsPassword | accState, STATE_SYSTEM_PROTECTED |
HelpText | accHelp |
Nom | accName |
NativeWindowHandle | WindowFromAccessibleObject |
IsOffscreen | accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN |
ProcessId | Fourni par UI Automation core |
Pour toute propriété de UI Automation non prise en charge, votre implémentation de la méthode IRawElementProviderSimple::GetPropertyValue doit définir le paramètre pRetVal sur VT_EMPTY et retourner S_OK. Le retour de UIA_E_NOTSUPPORTED peut entraîner la suppression du mappage par défaut de la propriété correspondante par le proxy MSAA vers UIA.
Modèles de contrôle
Les modèles de contrôle UI Automation suivants ne chevauchent pas la fonctionnalité Microsoft Active Accessibility. Ils peuvent être utilisés dans une implémentation IAccessibleEx :
- Ancrer
- ExpandCollapse
- Grille
- GridItem
- MultipleView
- RangeValue
- Scroll
- ScrollItem
- SynchronizedInput
- Table de charge de travail
- TableItem
- Transformation
Pour les modèles de contrôle RangeValue et Transform, certaines méthodes se chevauchent entre le modèle de contrôle UI Automation et les méthodes Microsoft Active Accessibility. Dans ce cas, les deux doivent être implémentés. Par exemple, les méthodes IAccessible::get_accValue et IAccessible::p ut_accValue de Microsoft Active Accessibility doivent toutes deux être implémentées, de même que les méthodes UI Automation IRangeValueProvider::Value et IRangeValueProvider::SetValue. En interne, une implémentation peut partager du code pour ceux-ci. Cette exigence d’implémenter les deux ensembles évite d’avoir une implémentation partielle d’une interface de modèle tout en conservant l’interface IAccessible utilisable par les clients Microsoft Active Accessibility existants.
Les modèles de contrôle UI Automation suivants ne sont pas obligatoires lorsque le contrôle a l’un des rôles décrits ci-dessous ; sinon, ils doivent être explicitement pris en charge le cas échéant.
modèle de contrôle UI Automation | Rôle d’accessibilité active Microsoft |
---|---|
InvokePattern | ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON et tout autre rôle où la valeur de la propriété accDefaultAction n’est pas NULL. |
SelectionItemPattern | ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON |
SelectionPattern | ROLE_SYSTEM_LIST |
TogglePattern | ROLE_SYSTEM_CHECKBUTTON |
ValuePattern | ROLE_SYSTEM_TEXT (lorsqu’il n’est pas en lecture seule), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX et tout autre rôle lorsque la valeur de la propriété accValue n’est pas NULL. |
WindowPattern | Prise en charge automatique sur les HWNDMicrosoft Win32 de niveau supérieur. |
WinEvents for UI Automation Property Changed Events
Outre les événements définis pour IAccessible, les identificateurs d’événement suivants sont également définis et peuvent être utilisés avec une implémentation IAccessibleEx en tant qu’événements de modification de propriété pour les propriétés UI Automation correspondantes. Ceux-ci utilisent le même mécanisme que les événements définis pour IAccessible. Pour plus d’informations, consultez WinEvents.
Pour les événements ci-dessus qui ont une valeur EVENT_OBJECT_ répertoriée après eux, et l’implémentation IAccessibleEx doit déclencher cet événement en plus de l’événement modifié répertorié. Cela permet au code client IAccessibleEx existant de continuer à fonctionner, tout en transmettant des informations plus précises sur les événements aux clients intéressés.
Rubriques connexes