Оконная процедура окна, которое имеет фокус клавиатуры, принимает сообщения о нажатии клавиши, когда пользователь печатает на клавиатуре. Сообщения о нажатии клавиши - WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN и WM_SYSKEYUP. Обычно оконная процедура игнорирует все сообщения о нажатии клавиши кроме WM_KEYDOWN. Система отправляет сообщение 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; } |