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

Любой поток, который принимает символьный ввод информации от пользователя, должен включать в свой цикл сообщений функцию TranslateMessage. Эта функция проверяет в сообщении о нажатии клавиши ее виртуальный код и, если код соответствует символу, помещает символьное сообщение в очередь сообщений. Символьное сообщение удаляется и отправляется при следующем повторении цикла сообщения; параметр wParam сообщения содержит код буквы.

Вообще, цикл сообщения потока должен использовать функцию TranslateMessage, чтобы транслировать каждое сообщение, а не только сообщения виртуальных клавиш. Хотя TranslateMessage не имеет никакого влияния на другие типы сообщений, она гарантирует, что ввод информации с клавиатуры оттранслируется правильно. Следующий пример показывает, как включить функцию TranslateMessage в типичный цикл сообщений потока.

while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
	if (TranslateAccelerator(hwndMain, haccl, &msg) == 0)
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков.