Padrão de controle de invocação
Descreve diretrizes e convenções para implementar o IInvokeProvider, incluindo informações sobre métodos. O padrão de controle Invoke é usado para dar suporte a controles que não mantêm o estado quando ativados, mas sim iniciam ou executam uma única ação inequívoca.
Os controles que mantêm o estado, como caixas de marcar e botões de opção, devem implementar IToggleProvider e ISelectionProvider, respectivamente. Para obter exemplos de controles que implementam esse padrão de controle, consulte Tipos de controle e seus padrões de controle com suporte.
Este tópico inclui as seções a seguir.
- Diretrizes e convenções de implementação
- Membros necessários para IInvokeProvider
- Tópicos relacionados
Diretrizes e convenções de implementação
Ao implementar o padrão de controle Invoke , observe as seguintes diretrizes e convenções:
Os controles implementam IInvokeProvider se o mesmo comportamento não for exposto por meio de outro provedor de padrão de controle. Por exemplo, se o método IUIAutomationInvokePattern::Invoke em um controle executar a mesma ação que o método IUIAutomationExpandCollapsePattern::Expand ou Collapse , o controle não deve implementar IInvokeProvider.
A invocação de um controle geralmente é executada clicando ou clicando duas vezes ou pressionando ENTER, um atalho de teclado predefinido ou alguma combinação alternativa de teclas.
O evento invoked (UIA_Invoke_InvokedEventId) é gerado em um controle que foi ativado (como uma resposta a um controle que executa sua ação associada). Se possível, o evento deve ser acionado depois que o controle tiver concluído a ação e retornado sem bloqueio. O evento Invoked (UIA_Invoke_InvokedEventId) deve ser gerado antes de atender à solicitação Invoke nos seguintes cenários:
- Não é possível ou prático aguardar até que a ação seja concluída.
- A ação requer interação do usuário.
- A ação é demorada e fará com que o cliente de chamada seja bloqueado por um período significativo de tempo.
Se invocar o controle tiver efeitos colaterais significativos, esses efeitos colaterais deverão ser expostos por meio da propriedade HelpText . Por exemplo, embora IUIAutomationInvokePattern::Invoke não esteja associado à seleção, Invoke pode fazer com que outro controle seja selecionado.
Os efeitos hover (ou mouse-over) geralmente não constituem um evento Invocado . No entanto, os controles que executam uma ação (em vez de causar um efeito visual) com base no estado de foco devem dar suporte ao padrão de controle Invoke .
Observação
Essa implementação será considerada um problema de acessibilidade se o controle puder ser invocado apenas como resultado de um efeito colateral relacionado ao mouse.
Invocar um controle é diferente de selecionar um item. No entanto, dependendo do controle, a invocação dele poderá fazer com que o item seja selecionado como um efeito colateral. Por exemplo, invocar um item de lista de documentos do Microsoft Word na pasta Meus Documentos seleciona o item e abre o documento.
Um elemento pode desaparecer da árvore do Microsoft Automação da Interface do Usuário imediatamente após ser invocado. A solicitação de informações do elemento fornecido pelo retorno de chamada do evento pode falhar como resultado. A busca prévia de informações em cache é a solução alternativa recomendada.
Os controles podem implementar vários padrões de controle. Por exemplo, o controle Cor de Preenchimento na barra de ferramentas do Microsoft Excel implementa os padrões de controle Invoke e ExpandCollapse . O padrão de controle ExpandCollapse expõe o menu e o padrão de controle Invoke preenche a seleção ativa com a cor escolhida.
Membros necessários para IInvokeProvider
O método a seguir é necessário para implementar a interface IInvokeProvider .
Membros necessários | Tipo de membro | Observações |
---|---|---|
Invoke | Método |
Invoke é uma chamada assíncrona e deve retornar imediatamente sem bloqueio. Esse comportamento é particularmente crítico para controles que, direta ou indiretamente, iniciam uma caixa de diálogo modal quando invocado. Qualquer cliente de Automação da Interface do Usuário que instigou o evento permanecerá bloqueado até que a caixa de diálogo modal seja fechada. |
Esse padrão de controle não tem propriedades ou eventos associados.