Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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. |