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


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

 

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz