Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Como Funciona a Entrada do Teclado

Os Formulários do Windows processam a entrada do teclado gerando eventos do teclado em resposta às mensagens do Windows.A maioria dos aplicativos de Formulários do Windows processam a entrada do teclado exclusivamente manipulando eventos de teclado.No entanto, você precisa entender como as mensagens do teclado funcionam para que você pode implementar cenários mais avançados de entrada do teclado, como interceptar teclas antes que elas alcancem um controle.Este tópico descreve os tipos de dados de teclas que os Formulários do Windows reconhecem e fornece uma visão geral de como as mensagens do teclado são roteadas.Para obter mais informações sobre eventos do teclado, consulte Usando Eventos do Teclado.

Os Formulários do Windows identificam a entrada do teclado como códigos de tecla virtuais que são representados pela enumeração Keys bit a bit.Com a enumeração Keys, você pode combinar uma série de teclas pressionadas resultando em um único valor.Esses valores correspondem aos valores que acompanham as mensagens do Windows WM_KEYDOWN e WM_SYSKEYDOWN.Você poderá detectar a maior parte dos pressionamentos de teclas físicas pelo tratamento dos eventos KeyDown ou KeyUp.Teclas de caractere são um subconjunto da enumeração Keys e correspondem aos valores que acompanham as mensagens do Windows WM_CHAR e WM_SYSCHAR.Se a combinação de teclas pressionadas resulta em um caractere, você poderá detectar o caractere ao manipular o evento KeyPress.Como alternativa, você pode usar Keyboard, exposto pela interface de programação do Visual Basic, para descobrir quais teclas foram pressionadas e enviar teclas.Para obter mais informações, consulte Acessando o teclado.

Conforme listados anteriormente, existem 3 eventos relacionados ao teclado que podem ocorrer em um controle.A seqüência seguinte mostra a ordem geral dos eventos:

  1. O usuário pressiona a tecla "a", a chave é preprocessada, despachada, e um evento KeyDown ocorre.

  2. O usuário segura a tecla "a", a tecla é preprocessada, despachada, e um evento KeyPress ocorre.

    Este evento ocorre várias vezes enquanto o usuário segura a tecla.

  3. O usuário solta a tecla "a", a tecla é preprocessada, despachada, e um evento KeyUp ocorre.

Como outras mensagens, as mensagens do teclado são processadas no método WndProc de um formulário ou controle.No entanto, antes que as mensagens do teclado sejam processadas, o método PreProcessMessage chama um ou mais métodos que podem ser substituídos para manipular teclas de caracteres especiais e teclas físicas.Você pode substituir esses métodos para detectar e filtrar certas teclas antes que as mensagens sejam processadas pelo controle.A tabela a seguir mostra a ação que está sendo executada e o método relacionado que ocorre, na ordem que o método ocorre.

Pré-Processamento de um Evento KeyDown

Ação

Método relacionado

Anotações

Procure por uma tecla de comando como um acelerador ou um atalho para menu .

ProcessCmdKey

Este método processa uma tecla de comando, que tem precedência sobre teclas regulares.Se esse método retornar true, a mensagem da tecla não é enviada e um evento de tecla não ocorrerá.Se ele retornar false, IsInputKey será chamado .

verifica se é uma tecla especial que requer pré-processamento ou se é um caractere normal que deve gerar um evento KeyDown e ser enviado para um controle.

IsInputKey

Se o método retornar true, isto significa que o controle é um caractere normal e um KeyDown evento é gerado.Se false, ProcessDialogKey é chamado.

ObservaçãoObservação:
Para garantir que um controle receba uma tecla ou uma combinação de teclas, você pode manipular o evento PreviewKeyDown e definir IsInputKey do PreviewKeyDownEventArgs como true para a tecla ou teclas que você deseja.

Verifique se a tecla é uma tecla de navegação (teclas ESC, TAB, Retornar ou Seta)

ProcessDialogKey

Este método processa uma tecla física que utiliza uma funcionalidade especial dentro do controle, such as alternar o foco entre o controle e seu pai.Se o controle imediato não manipular a tecla, ProcessDialogKey é chamado no controle pai e assim por diante até o controle de nível mais alto na hierarquia.Se esse método retornar true, o pré-processamento está completo e uma evento de tecla não é gerado.Se ele retornar false, ocorre um evento KeyDown.

Pré-Processamento de um Evento KeyPress

Ação

Método relacionado

Anotações

Verifique se a chave é um caractere normal que deve ser processado pelo controle

IsInputChar

Se o caractere é um caractere normal, este método retornará true, o evento KeyPress é gerado e não ocorrerá mais pré-processamento.Caso contrário, ProcessDialogChar será chamado.

Verifique se o caractere é um mnemônico (como &OK em um botão)

ProcessDialogChar

Este método, de forma semelhante a ProcessDialogKey, será chamado subindo a hierarquia de controles.Se o controle for um recipiente de controles, ele procura mnemônicos chamando ProcessMnemonic em si mesmo e nos seus controles filhos.Se ProcessDialogChar retorna true, o evento KeyPress não ocorrerá.

Após que as mensagens do teclado alcançam o método WndProc de um controle ou formulário, eles são processados por um conjunto de métodos que podem ser substituídos.Cada um desses métodos retorna um valor Boolean especificando se a mensagem teclado foi processada e consumida pelo controle.Se um dos métodos retornar true, então a mensagem é considerada tratada e ela não é passada para a base ou pai do controle para processamento adicional.Caso contrário, a mensagem permanece na fila de mensagens e pode ser processada em outro método da base ou pai do controle.A tabela a seguir apresenta os métodos que processam mensagens do teclado.

Método

Anotações

ProcessKeyMessage

Este método processa todas as mensagens do teclado que são recebidas pelo método WndProc do controle.

ProcessKeyPreview

Este método envia a mensagem do teclado ao pai do controle.Se ProcessKeyPreview retorna true, nenhum evento de tecla é gerado, caso contrário, ProcessKeyEventArgs é chamado.

ProcessKeyEventArgs

Este método gera os eventos KeyDown, KeyPress e KeyUp, conforme apropriado.

Há vários métodos disponíveis para serem substituidos quando uma mensagem do teclado é pré-processada e processada; no entanto, alguns métodos são opções muito melhores do que outros.Tabela a seguir mostra tarefas que você pode querer fazer e a melhor maneira para substituir os métodos do teclado.

Tarefa 

Método

Interceptar uma tecla de navegação e gerar um evento KeyDown.Por exemplo, você deseja que TAB e RETURN sejam manipuladas em um caixa de texto

Substituir IsInputKey.

Executar uma entrada especial ou tratamento de navegação em um controle.Por exemplo, você deseja que o uso de teclas de direção no seu controle lista alterem o item selecionado.

Substituir ProcessDialogKey

Interceptar uma tecla de navegação e gerar um evento KeyPress.Por exemplo, em um controle caixa de rotação você deseja que vários pressionamentos de teclas de seta acelerem a progressão através dos itens.

Substituir IsInputChar.

Executar uma entrada especial ou tratamento de navegação durante um evento KeyPress.Por exemplo, em um controle lista, manter pressionada a tecla "r" faz caminhar entre os itens que começam com a letra r.

Substituir ProcessDialogChar

Executar tratamento mnemônico personalizado; por exemplo, você deseja manipular mnemônicos em botões desenhados pelo proprietário em uma barra de ferramentas.

Substituir ProcessMnemonic.

Contribuições da comunidade

ADICIONAR
Mostrar: