Partilhar via


Sobre os controles de teclas de atalho

Um controlador de tecla de atalho é uma janela que permite ao utilizador inserir uma combinação de pressionamentos de teclas para ser utilizada como uma tecla de atalho. Uma tecla de atalho é uma combinação de teclas que o usuário pode pressionar para executar uma ação rapidamente. Por exemplo, um usuário pode criar uma tecla de atalho que ativa uma determinada janela e a traz para o topo da ordem z. O controle de tecla de atalho exibe as escolhas do usuário e garante que o usuário selecione uma combinação de teclas válida. A captura de ecrã a seguir mostra de que maneira um atalho de teclado aparece numa caixa de diálogo depois que o utilizador pressiona a tecla Alt.

captura de tela de uma caixa de diálogo que contém um controle de tecla de atalho

Usando controles de tecla de atalho

Quando o utilizador insere uma combinação de teclas para ser utilizada como uma tecla de atalho, os nomes das teclas aparecem no controlo da tecla de atalho. Uma combinação de teclas pode consistir em uma tecla modificadora (como CTRL, ALT ou SHIFT) e uma tecla que a acompanha (como uma tecla de caractere, uma tecla de seta, uma tecla de função e assim por diante).

Depois que o usuário escolheu uma combinação de teclas, o aplicativo recupera a combinação de teclas do controle de teclas de atalho e usa-a para configurar uma tecla de atalho no sistema. As informações recuperadas do controle de tecla de atalho incluem um sinalizador indicando a chave modificadora e o código de chave virtual da chave que a acompanha.

O aplicativo pode usar as informações fornecidas por um controle de tecla de atalho para configurar uma tecla de atalho global ou uma tecla de atalho específica de thread. Uma tecla de atalho global está associada a uma janela específica; Ele permite que o usuário ative a janela de qualquer parte do sistema. Um aplicativo define uma tecla de atalho global usando a mensagem WM_SETHOTKEY. Sempre que o usuário pressiona uma tecla de atalho global, a janela especificada em WM_SETHOTKEY recebe uma mensagem WM_SYSCOMMAND que especifica o valor SC_HOTKEY. Esta mensagem ativa a janela que a recebe. A tecla de atalho permanece válida até que o aplicativo que chamou WM_SETHOTKEY saia.

Uma tecla de atalho específica do thread gera uma mensagem WM_HOTKEY que é enviada para o início de um determinado thread para que seja removida pela próxima iteração do ciclo de mensagens. Uma aplicação define uma tecla de atalho específica para a thread utilizando a função RegisterHotKey.

Mensagens de controle de tecla de atalho

Depois de criar um controle de tecla de atalho, um aplicativo interage com ele usando três mensagens: HKM_SETRULES, HKM_SETHOTKEYe HKM_GETHOTKEY.

Um aplicativo pode enviar a mensagem HKM_SETRULES para especificar um conjunto de combinações de teclas CTRL, ALT e SHIFT que são consideradas teclas de atalho inválidas. Se o aplicativo especificar uma combinação de teclas inválida, ele também deverá especificar uma combinação de modificador padrão a ser usada quando o usuário selecionar a combinação inválida. Quando o usuário insere a combinação inválida, o sistema executa uma operação lógica OR na combinação inválida e na combinação padrão. O resultado é considerado uma combinação válida; ele é convertido em uma cadeia de caracteres e exibido no controle.

A mensagem HKM_SETHOTKEY permite que uma aplicação defina a combinação de teclas de atalho para um controlo de atalho. Essa mensagem também é normalmente usada quando o controle de tecla de atalho é criado.

Os aplicativos usam a mensagem HKM_GETHOTKEY para recuperar o código de chave virtual e sinalizadores modificadores da tecla de atalho escolhida pelo usuário.

Notificações de controlo de atalhos de teclado

O controle de tecla de atalho não envia nenhum código de notificação através da mensagem WM_NOTIFY. No entanto, ele enviará a notificação de EN_CHANGE através da mensagem WM_COMMAND quando o usuário alterar o conteúdo do controle.

Processamento de mensagens de tecla de atalho padrão

Esta seção descreve as mensagens de janela manipuladas pelo procedimento de janela para a classe de janela predefinida HOTKEY_CLASS utilizada com controlos de teclas de atalho.

Mensagem Processamento realizado
WM_CHAR Recupera o código da chave virtual.
WM_CREATE Inicializa o controle de tecla de atalho, limpa todas as regras de tecla de atalho e usa a fonte do sistema.
WM_ERASEBKGND Oculta o cursor, chama a função DefWindowProc e mostra o cursor novamente.
WM_GETDLGCODE Devolve uma combinação dos valores DLGC_WANTCHARS e DLGC_WANTARROWS.
WM_GETFONT Recupera a fonte.
WM_KEYDOWN Chama a função DefWindowProc se a tecla for ENTER, TAB, BARRA DE ESPAÇO, DEL, ESC ou BACKSPACE. Se a tecla for SHIFT, CTRL ou ALT, verifica se a combinação é válida e, se for, define a tecla de atalho usando a combinação. Todas as outras chaves são definidas como teclas de atalho sem que a sua validade seja verificada primeiro.
WM_KEYUP Recupera o código da chave virtual.
WM_KILLFOCUS Destrói o caret.
WM_LBUTTONDOWN Coloca o foco na janela.
WM_NCCREATE Configura o estilo de janela WS_EX_CLIENTEDGE.
WM_PAINT Pinta o controle de tecla de atalho.
WM_SETFOCUS Cria e mostra o cursor.
WM_SETFONT Define a fonte.
WM_SYSCHAR Recupera o código da chave virtual.
WM_SYSKEYDOWN Chama a função DefWindowProc se a tecla for ENTER, TAB, BARRA DE ESPAÇO, DEL, ESC ou BACKSPACE. Se a tecla for SHIFT, CTRL ou ALT, verifica se a combinação é válida e, se for, define a tecla de atalho usando a combinação. Todas as outras chaves são definidas como teclas de atalho sem que a sua validade seja verificada primeiro.
WM_SYSKEYUP Recupera o código da chave virtual.