Processing Character Messages
9/9/2008
Quando o usuário insere um caractere, uma mensagem caractere não é gerada automaticamente; Em vez disso, uma mensagem pressionamento de tecla é gerada. Para converter uma mensagem pressionamento de tecla em um correspondente mensagem caractere, o loop de mensagem do aplicativo deve chamar a função TranslateMessage. Essa função examina o código de chave virtual de uma mensagem pressionamento de tecla e, se a codificar corresponde a um caractere, coloca uma mensagem caractere para a fila de mensagens. A mensagem caractere é removida e distribuída no próximo iteração de executar um loop de mensagem.
O executar um loop mensagem deve chamar o TranslateMessage função converter cada mensagem, não apenas mensagens pressionamento de tecla. Embora TranslateMessage não tem nenhum efeito em outros tipos de mensagens, usar essa função garante que entrada do teclado é traduzido corretamente.
Há quatro mensagens caractere: WM_CHAR WM_SYSCHAR, WM_DEADCHAR e WM_SYSDEADCHAR. Um procedimento window típica ignora todas as mensagens caractere, exceto para WM_CHAR. A mensagem WM_CHAR contém a código de caractere e os sinalizadores que fornecem dados adicionais sobre o caractere. As chaves que fazem não gerar imprimível caracteres, como qualquer uma das teclas de VK_F *, nunca irão gerar uma mensagem WM_CHAR.
Quando um procedimento janela recebe a mensagem WM_CHAR, ele deve examinar o código de caractere que acompanha a mensagem para determinar como processo o caractere. O código de caractere Consta a mensagem wParam parâmetro.
O seguinte exemplo de código mostra a estrutura procedimento janela que um aplicativo comum usa para receber e caractere processo mensagens e inclui o TranslateMessage função em um executar um loop mensagem típica para um segmento.
while (GetMessage (&msg, (HWND)NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
See Also
Concepts
Receiving Keyboard Input
Keys and Key Codes for Windows Mobile