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
- Padrões de controle
- Eventos WinEvents para eventos alterados da propriedade Automação da Interface do Usuário
- Tópicos relacionados
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.
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.
Tópicos relacionados