Работа с клавиатурой - Трансляция символьных сообщений
ОГЛАВЛЕНИЕ
Страница 3 из 6
Трансляция символьных сообщений
Каждый поток, который получает ввод с клавиатуры, должен иметь в своём цикле сообщений функцию TranslateMessage. Эта функция позволяет отделить нажатия функциональных клавиш от символьных и преобразовать виртуальный код клавиши в символьный, а так же поместить его в очередь сообщений. При этом в параметре wParam символьного сообщения будет содержаться код символа.
Вообще, цикл сообщений использует функцию TranslateMessage для трансляции всех сообщений, а не только для клавиатуры. Однако, применение TranslateMessage к другим типам сообщений не несёт никакого эффекта, зато гарантирует корректную трансляцию ввода с клавиатуры.
Пример:
MSG msg;
BOOL bRet;
while (( bRet = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0)
{
if (bRet == -1);
{
// обработка ошибки
}
else
{
if (TranslateAccelerator(hwndMain, haccl, &msg) == 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}