10.15.1 - Обработка сообщений о нажатии клавиши

Оконная процедура окна, которое имеет фокус клавиатуры, принимает сообщения о нажатии клавиши, когда пользователь печатает на клавиатуре. Сообщения о нажатии клавиши - WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN и WM_SYSKEYUP. Типичная оконная процедура игнорирует все сообщения о нажатии клавиши кроме WM_KEYDOWN. Windows посылает сообщение WM_KEYDOWN, когда пользователь нажимает клавишу.

Когда оконная процедура принимает сообщение WM_KEYDOWN, она должна проверить код виртуальной клавиши, который сопровождает сообщение, чтобы установить, как обработать нажатие клавиши. Код виртуальной клавиши находится в параметре wParam сообщения. Как правило, приложение обрабатывает только нажатия клавиши, сгенерированные не символьными клавишами, включая функциональные клавиши, клавиши управления курсором, и клавиши специального назначения типа INS, DEL, HOME и END.

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

case WM_KEYDOWN:
	switch (wParam) {
		case VK_LEFT:
			.
			. /* Обрабатывает клавишу LEFT ARROW (Стрелка влево). */
			.
		break;

		case VK_RIGHT:
			.
			. /* Обрабатывает клавишу RIGHT ARROW (Стрелка вправо). */
			.
		break;

		case VK_UP:
			.
			. /* Обрабатывает клавишу UP ARROW (Стрелка вверх). */
			.
		break;

		case VK_DOWN:
			.
			. /* Обрабатывает клавишу DOWN ARROW (Стрелка вниз). */
			.
		break;

		case VK_HOME:
			.
			. /* Обрабатывает клавишу HOME. */
			.
		break;

		case VK_END:
			.
			. /* Обрабатывает клавишу END. */
			.
		break;

		case VK_INSERT:
			.
			. /* Обрабатывает клавишу INS. */
			.
		break;

		case VK_DELETE:
			.
			. /* Обрабатывает клавишу DEL. */
			.
		break;

		case VK_F2:
			.
			. /* Обрабатывает клавишу F2. */
			.
		break;

		.
		. /* Обрабатывает другие не символьные нажатия клавиш. */
		.
		default:
		break;
	}

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