Diretrizes de implementação IAccessibleEx

O núcleo do Microsoft Automação da Interface do Usuário pode recuperar todas as propriedades de Acessibilidade Ativa da Microsoft para qualquer objeto acessível exposto por um servidor por meio da interface IAccessible. Ao implementar o IAccessibleEx, você deve expor apenas os aspectos da funcionalidade da interface do usuário que, de outra forma, não podem ser expostos por meio das propriedades existentes da Acessibilidade Ativa da Microsoft. Este tópico identifica as propriedades Automação da Interface do Usuário e os padrões de controle que representam a funcionalidade da interface do usuário que não tem nenhum equivalente na Acessibilidade Ativa da Microsoft– são as propriedades e os padrões de controle que você pode expor em uma implementação IAccessibleEx.

Este tópico contém as seguintes seções:

Propriedades

As propriedades Automação da Interface do Usuário a seguir não se sobrepõem à funcionalidade de Acessibilidade Ativa da Microsoft. Eles podem ser usados em uma implementação IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Cultura
  • DescribedBy
  • FlowsTo
  • FrameworkId
  • Iscontentelement
  • Iscontrolelement
  • IsDataValidForForm
  • Isrequiredforform
  • Itemstatus
  • ItemType
  • LabeledBy
  • Localizedcontroltype
  • Orientation

Embora as propriedades AcceleratorKey e AccessKey Automação da Interface do Usuário se sobreponham à propriedade accKeyboardShortcut Microsoft Active Accessibility, você ainda pode usá-las em uma implementação IAccessibleEx para controles que têm uma chave de acesso e um acelerador. Da mesma forma, a propriedade Automação da Interface do Usuário ControlType se sobrepõe à propriedade accRole de Acessibilidade Ativa da Microsoft, mas você ainda pode usá-la em uma implementação IAccessibleEx para definir uma função mais específica para um controle.

Como as propriedades do elemento Automação da Interface do Usuário a seguir já estão cobertas pelas propriedades de Acessibilidade Ativa da Microsoft, não é necessário usá-las em uma implementação IAccessibleEx.

Propriedade de Automação da Interface do Usuário Equivalente à Acessibilidade Ativa da 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
Nome accName
NativeWindowHandle WindowFromAccessibleObject
Isoffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Fornecido pelo núcleo de Automação da Interface do Usuário

 

Para qualquer propriedade Automação da Interface do Usuário sem suporte, a implementação do método IRawElementProviderSimple::GetPropertyValue deve definir o parâmetro pRetVal como VT_EMPTY e retornar S_OK. Retornar UIA_E_NOTSUPPORTED pode fazer com que o Proxy MSAA para UIA remova o mapeamento padrão da propriedade correspondente.

Padrões de controle

Os padrões de controle de Automação da Interface do Usuário a seguir não se sobrepõem à funcionalidade de Acessibilidade Ativa da Microsoft. Eles podem ser usados em uma implementação IAccessibleEx :

  • Dock
  • ExpandCollapse
  • Grid
  • GridItem
  • MultipleView
  • RangeValue
  • Rolagem
  • ScrollItem
  • SynchronizedInput
  • Tabela
  • TableItem
  • Transformação

Para os padrões de controle RangeValue e Transform, alguns métodos se sobrepõem entre o padrão de controle Automação da Interface do Usuário e os métodos de Acessibilidade Ativa da Microsoft. Nesses casos, ambos devem ser implementados. Por exemplo, os métodos IAccessible::get_accValue e IAccessible::p ut_accValue da Microsoft Active Accessibility devem ser implementados, assim como os métodos Automação da Interface do Usuário IRangeValueProvider::Value e IRangeValueProvider::SetValue. Internamente, uma implementação pode compartilhar código para eles. Esse requisito para implementar ambos os conjuntos evita ter uma implementação parcial de uma interface de padrão, mantendo a interface IAccessible utilizável por clientes existentes do Microsoft Active Accessibility.

Os seguintes padrões de controle de Automação da Interface do Usuário não são necessários quando o controle tem uma das funções descritas abaixo; caso contrário, eles devem ter suporte explícito, se relevante.

Padrão de controle Automação da Interface do Usuário Função de Acessibilidade Ativa da Microsoft
Invokepattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON e qualquer outra função em que o valor da propriedade accDefaultAction não seja NULL.
Selectionitempattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
Selectionpattern ROLE_SYSTEM_LIST
Togglepattern ROLE_SYSTEM_CHECKBUTTON
Valuepattern ROLE_SYSTEM_TEXT (quando não é somente leitura), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX e qualquer outra função quando o valor da propriedade accValue não for NULL.
Windowpattern Com suporte automático em HWNDsdo Microsoft Win32 de nível superior.

 

Eventos WinEvents para eventos alterados da propriedade Automação da Interface do Usuário

Além dos eventos definidos para IAccessible, os identificadores de evento a seguir também são definidos e podem ser usados com uma implementação IAccessibleEx como eventos alterados de propriedade para propriedades de Automação da Interface do Usuário correspondentes. Eles usam o mesmo mecanismo que os eventos definidos para IAccessible. Para obter mais informações, consulte WinEvents.

ID do WinEvent para implementações IAccessibleEx ID do WinEvent relacionada da Acessibilidade Ativa da Microsoft
UIA_AriaPropertiesPropertyId Nenhum
UIA_AriaRolePropertyId Nenhum
UIA_ControllerForPropertyId Nenhum
UIA_DescribedByPropertyId Nenhum
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId Nenhum
UIA_InputDiscardedEventId Nenhum
UIA_InputReachedOtherElementEventId Nenhum
UIA_InputReachedTargetEventId Nenhum
UIA_IsDataValidForFormPropertyId Nenhum
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId Nenhum
UIA_MultipleViewCurrentViewPropertyId Nenhum
UIA_ScrollHorizontallyScrollablePropertyId Nenhum
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId Nenhum
UIA_ScrollVerticallyScrollablePropertyId Nenhum
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId Nenhum
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Para os eventos acima que têm um valor EVENT_OBJECT_ listado após eles, e a implementação IAccessibleEx deve disparar esse evento além do evento alterado listado. Isso permite que o código do cliente IAccessibleEx existente continue funcionando, transmitindo informações de evento mais granulares aos clientes interessados.

WinEvents

A interface IAccessibleEx