9.6.4 - Вызов функции TranslateAccelerator

Чтобы обрабатывать клавиши - ускорители, цикл сообщения прикладной программы (или потока) должен содержать вызов функции TranslateAccelerator. TranslateAccelerator сравнивает нажатия клавиши с таблицей клавиш-ускорителей и, если она находит соответствие, переводит нажатия клавиш в сообщения WM_COMMAND (или WM_SYSCOMMAND). Затем функция отправляет сообщение оконной процедуре. Параметры функции TranslateAccelerator включают в себя дескриптор окна, которое должно принять сообщения WM_COMMAND, дескриптор таблицы клавиш-ускорителей, использованной трансляции клавиш - ускорителей и указатель на структуру MSG, содержащую сообщение из очереди. Следующий пример показывает, как вызвать TranslateAccelerator изнутри цикла сообщения.

while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
	/* Проверка нажатия клавиши-ускорителя. */

	if (!TranslateAccelerator(
		hwndMain,	/* дескриптор окна - приемника */
		haccel,	/* дескриптор таблицы активной клавиши-ускорителя */
		&msg))	/* адрес данных сообщений */
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
}

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