Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Publicado na janela com o foco do teclado quando uma mensagem WM_KEYDOWN é traduzida pela função TranslateMessage . A mensagem WM_CHAR contém o código do carácter da tecla pressionada.
#define WM_CHAR 0x0102
Parameters
-
wParam
-
O código do carácter da chave.
-
lParam
-
A contagem de repetições, código de varrimento, flag de chave estendida, código de contexto, flag de estado de chave anterior e flag de estado de transição, conforme mostrado na tabela seguinte.
Bits Meaning 0-15 A contagem de repetições para a mensagem atual. O valor é o número de vezes que a tecla é repetida automaticamente como resultado do utilizador manter a tecla pressionada. Se a tecla for mantida pressionada tempo suficiente, são enviadas várias mensagens. No entanto, o número de repetições não é cumulativo. 16-23 O código de digitalização. O valor depende do OEM. 24 Indica se a tecla é uma tecla estendida, como as teclas ALT e CTRL da mão direita que aparecem num teclado melhorado de 101 ou 102 teclas. O valor é 1 se for uma chave estendida; caso contrário, é 0. 25-27 Reservado; Não usar. 28 A bandeira do modo menu. O valor é 1 se houver um menu ativo; caso contrário, o valor é 0. 29 O código de contexto. O valor é 1 se a tecla ALT for mantida pressionada enquanto a tecla é pressionada; caso contrário, o valor é 0. 30 O estado chave anterior. O valor é 1 se a chave estiver desativada antes da mensagem ser enviada, ou é 0 se a chave estiver ativa. 31 O estado de transição. O valor é 1 se a tecla estiver a ser libertada, ou 0 se a tecla estiver a ser pressionada. Para mais detalhes, veja Keystroke Message Flags.
Valor de retorno
Uma aplicação deverá devolver zero se processar esta mensagem.
Exemplo
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
// ...
case WM_CHAR:
OnKeyPress(wParam);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
Exemplo de de Exemplos Clássicos do Windows no GitHub.
Observações
A mensagem WM_CHAR utiliza unidades de código UTF-16 (Formato de Transformação Unicode de 16 bits) no seu wParam se a versão Unicode da função RegisterClass for usada para registar a classe janela. Caso contrário, o sistema fornece caracteres na página de códigos do processo atual, que pode ser definida para UTF-8 no Windows Versão 1903 (Atualização de maio de 2019) e versões posteriores. Para mais informações, consulte Registo de Classes de Janelas e Utilização de páginas de código UTF-8 em aplicações Windows.
A partir de Windows Vista, WM_CHAR mensagem pode enviar pares substitutos UTF-16 para janelas Unicode. Use os macros IS_HIGH_SURROGATE, IS_LOW_SURROGATE e IS_SURROGATE_PAIR para detetar esses casos, se necessário.
Não existe necessariamente uma correspondência um-para-um entre as teclas pressionadas e as mensagens de caracteres geradas, pelo que a informação na palavra de ordem superior do parâmetro lParam geralmente não é útil para aplicações. A informação da palavra de ordem superior aplica-se apenas à mensagem de WM_KEYDOWN mais recente que precede a publicação da mensagem WM_CHAR .
Para teclados melhorados de 101 e 102 teclas, as teclas estendidas são o ALT direito e as teclas CTRL direitas na secção principal do teclado; as teclas INS, DEL, HOME, END, PAGE UP, PAGE DOWN e setas nos clusters à esquerda do teclado numérico; e as teclas divide (/) e ENTER no teclado numérico. Alguns outros teclados podem suportar o bit de tecla estendida no parâmetro lParam .
A mensagem WM_UNICHAR é a mesma que WM_CHAR, exceto que usa UTF-32. Foi concebido para enviar ou publicar caracteres Unicode para janelas ANSI, e pode gerir caracteres do Plano Suplementar Unicode.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado |
Windows 2000 Professional [apenas aplicações de ambiente de trabalho] |
| Servidor mínimo suportado |
Windows 2000 Server [apenas aplicações de ambiente de trabalho] |
| Cabeçalho |
|