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