Win32 API. Работа с клавиатурой - Обработка сообщений о нажатии клавиши
ОГЛАВЛЕНИЕ
Обработка сообщений о нажатии клавиши
Оконная процедура окна, которое имеет фокус клавиатуры, принимает сообщения о нажатии клавиши, когда пользователь печатает на клавиатуре. Сообщения о нажатии клавиши - 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;
}