Работа с клавиатурой
Страница 3. Трансляция символьных сообщений


 

Трансляция символьных сообщений

Каждый поток, который получает ввод с клавиатуры, должен иметь в своём цикле сообщений функцию 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);
}
}
}

 
« Предыдущая статья   Следующая статья »