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