Linee guida per l'implementazione di IAccessibleEx

Microsoft Automazione interfaccia utente core può recuperare tutte le proprietà di Accessibilità Di Microsoft Active Per qualsiasi oggetto accessibile esposto da un server tramite l'interfaccia IAccessible. Quando si implementa IAccessibleEx, è necessario esporre solo gli aspetti della funzionalità dell'interfaccia utente che altrimenti non possono essere esposti tramite le proprietà di Accessibilità Microsoft Active Esistenti. Questo argomento identifica le proprietà Automazione interfaccia utente e i pattern di controllo che rappresentano la funzionalità dell'interfaccia utente che non ha alcuna controparte in Microsoft Active Accessibility, ovvero le proprietà e i pattern di controllo che è possibile esporre in un'implementazione IAccessibleEx.

In questo argomento sono incluse le sezioni seguenti:

Proprietà

Le proprietà di Automazione interfaccia utente seguenti non si sovrappongono alla funzionalità microsoft Active Accessibility. Possono essere usati in un'implementazione IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • culture
  • DescribedBy
  • FlussiTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • ItemType
  • LabeledBy
  • LocalizedControlType
  • Orientamento

Anche se le proprietà AcceleratorKey e AccessKey Automazione interfaccia utente si sovrappongono alla proprietà accKeyboardShortcut Microsoft Active Accessibility, è comunque possibile usarle in un'implementazione IAccessibleEx per i controlli che hanno sia un tasto di scelta che un acceleratore. Analogamente, la proprietà ControlType Automazione interfaccia utente si sovrappone alla proprietà accRole di Microsoft Active Accessibility, ma è comunque possibile usarla in un'implementazione IAccessibleEx per definire un ruolo più specifico per un controllo.

Poiché le proprietà degli elementi Automazione interfaccia utente seguenti sono già coperte dalle proprietà di Microsoft Active Accessibility, non è necessario usarle in un'implementazione IAccessibleEx.

Proprietà di automazione interfaccia utente 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
Nome accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Fornito da Automazione interfaccia utente core

 

Per qualsiasi proprietà Automazione interfaccia utente non supportata, l'implementazione del metodo IRawElementProviderSimple::GetPropertyValue deve impostare il parametro pRetVal su VT_EMPTY e restituire S_OK. La restituzione di UIA_E_NOTSUPPORTED può causare la rimozione del mapping predefinito per la proprietà corrispondente da PARTE del proxy MSAA a UIA.

Pattern di controllo

I modelli di controllo Automazione interfaccia utente seguenti non si sovrappongono alle funzionalità di accessibilità Di Microsoft Active. Possono essere usati in un'implementazione IAccessibleEx :

  • Ancora
  • ExpandCollapse
  • Grid
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Tabella
  • TableItem
  • Trasformazione

Per i pattern di controllo RangeValue e Transform, alcuni metodi si sovrappongono tra il pattern di controllo Automazione interfaccia utente e i metodi microsoft Active Accessibility. In questi casi, entrambi devono essere implementati. Ad esempio, entrambi i metodi IAccessible::get_accValue e IAccessible::p ut_accValue di Microsoft Active Accessibility devono essere implementati, perché devono essere implementati i metodi Automazione interfaccia utente IRangeValueProvider::Value e IRangeValueProvider::SetValue. Internamente, un'implementazione può condividere il codice per questi elementi. Questo requisito per implementare entrambi i set evita di avere un'implementazione parziale di un'interfaccia pattern mantenendo l'interfaccia IAccessible utilizzabile dai client Microsoft Active Accessibility esistenti.

I modelli di controllo seguenti Automazione interfaccia utente non sono necessari quando il controllo ha uno dei ruoli descritti di seguito. In caso contrario, devono essere supportati in modo esplicito, se pertinente.

Pattern di controllo Automazione interfaccia utente Ruolo di accessibilità Microsoft Active
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON e qualsiasi altro ruolo in cui il valore della proprietà accDefaultAction non è NULL.
Selectionitempattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
Selectionpattern ROLE_SYSTEM_LIST
Togglepattern ROLE_SYSTEM_CHECKBUTTON
Valuepattern ROLE_SYSTEM_TEXT (quando non è di sola lettura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX e qualsiasi altro ruolo quando il valore della proprietà accValue non è NULL.
Windowpattern Supportato automaticamente in Microsoft Win32 HWNDs di primo livello.

 

Eventi modificati winEvents per Automazione interfaccia utente proprietà

Oltre agli eventi definiti per IAccessible, vengono definiti anche gli identificatori di evento seguenti e possono essere usati con un'implementazione IAccessibleEx come eventi di modifica delle proprietà per le proprietà Automazione interfaccia utente corrispondenti. Questi usano lo stesso meccanismo degli eventi definiti per IAccessible. Per altre informazioni, vedere WinEvents.

ID WinEvent per le implementazioni IAccessibleEx ID WinEvent correlato da Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Nessuno
UIA_AriaRolePropertyId Nessuno
UIA_ControllerForPropertyId Nessuno
UIA_DescribedByPropertyId Nessuno
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Nessuno
UIA_InputDiscardedEventId Nessuno
UIA_InputReachedOtherElementEventId Nessuno
UIA_InputReachedTargetEventId Nessuno
UIA_IsDataValidForFormPropertyId Nessuno
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Nessuno
UIA_MultipleViewCurrentViewPropertyId Nessuno
UIA_ScrollHorizontallyScrollablePropertyId Nessuno
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Nessuno
UIA_ScrollVerticallyScrollablePropertyId Nessuno
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Nessuno
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Per gli eventi precedenti con un valore EVENT_OBJECT_ elencato dopo di esse e l'implementazione IAccessibleEx deve generare questo evento oltre all'evento modificato elencato. In questo modo, il codice client IAccessibleEx esistente può continuare a funzionare, trasmettendo al contempo informazioni sugli eventi più granulari ai client interessati.

WinEvents

Interfaccia IAccessibleEx