Win32 API. Работа с клавиатурой - Трансляция символьных сообщений
ОГЛАВЛЕНИЕ
Трансляция символьных сообщений
Любой поток, который принимает символьный ввод информации от пользователя, должен включать в свой цикл сообщений функцию TranslateMessage. Эта функция проверяет в сообщении о нажатии клавиши ее виртуальный код и, если код соответствует символу, помещает символьное сообщение в очередь сообщений. Символьное сообщение удаляется и отправляется при следующем повторении цикла сообщения; параметр wParam сообщения содержит код буквы.
Вообще, цикл сообщения потока должен использовать функцию TranslateMessage, чтобы транслировать каждое сообщение, а не только сообщения виртуальных клавиш. Хотя TranslateMessage не имеет никакого влияния на другие типы сообщений, она гарантирует, что ввод информации с клавиатуры оттранслируется правильно. Следующий пример показывает, как включить функцию TranslateMessage в типичный цикл сообщений потока.
while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
if (TranslateAccelerator(hwndMain, haccl, &msg) == 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}