Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI.docx
Скачиваний:
49
Добавлен:
16.12.2018
Размер:
3.43 Mб
Скачать

5.2.5 Использование сообщений клавиатуры

Идея программы, получающей информацию о нажатии любой клавиши, несомненно, привлекательна; однако, большинство программ для Windows игнорируют все, кроме нескольких сообщений о нажатии и отпускании клавиш. Сообщения WM_SYSKEYUP и WM_SYSKEYDOWN адресованы системным функциям Windows, и вам не нужно их отслеживать. Если вы обрабатываете сообщения WM_KEYDOWN, то сообщения WM_KEYUP вам обычно также можно игнорировать.

Программы для Windows обычно используют сообщения WM_KEYDOWN для нажатия и отпускания клавиш, которые не генерируют символьные сообщения. Хотя вы можете подумать, что есть возможность использовать сообщения о нажатии клавиш в сочетании с информацией о состоянии клавиш сдвига для преобразования сообщений о нажатии клавиш в символьные сообщения, не делайте так. У вас будут проблемы из-за отличий международных клавиатур. Например, если вы получаете сообщение WM_KEYDOWN с wParam, равным 33H, вы знаете, что пользователь нажал клавишу <3>. Так, хорошо. Если вы используете GetKeyState и обнаруживаете, что клавиша <Shift> нажата, то можно было бы предположить, что пользователь печатает знак решетки <#>. Вовсе необязательно. Британский пользователь печатает знак <&>. Поэтому сообщения WM_KEYDOWN более удобны для клавиш управления курсором, функциональных клавиш и специальных клавиш, таких как <Insert> и <Delete>. Однако, иногда клавиши <Insert> и <Delete>, а также функциональные клавиши используются в качестве быстрых клавиш меню. Поскольку Windows преобразует быстрые клавиши меню в сообщения команд меню, вы не должны сами обрабатывать эти сообщения. Некоторые программы, написанные не для Windows, широко используют функциональные клавиши в сочетании с клавишами <Shift>, <Ctrl> и <Alt>. Вы можете сделать что-то похожее в ваших программах для Windows, но это не рекомендуется. Если вы хотите использовать функциональные клавиши, то лучше, чтобы они дублировали команды меню. Одна из задач Windows — обеспечить такой пользовательский интерфейс, для которого не требуется заучивание или использование сложного набора команд.

Мы собираемся отказаться от всего, за исключением последнего пункта: большую часть времени вы будете обрабатывать сообщения WM_KEYDOWN только для клавиш управления курсором. Если вы используете клавиши управления курсором, то можете контролировать состояние клавиш <Shift> и <Ctrl> с помощью функции GetKeyState. Функции Windows часто используют клавишу <Shift> в сочетании с клавишами управления курсором для расширения выбора, например, в программах текстовых редакторов. Клавиша <Ctrl> часто используется для изменения значения клавиш управления курсором. (Например, <Ctrl> в сочетании с клавишей стрелки вправо могло бы означать перемещение курсора на одно слово вправо.)

Одним из лучших способов выяснить то, как использовать клавиатуру должно быть изучение использования клавиатуры в существующих популярных программах для Windows. Если вам это не подходит, можете действовать как-то иначе. Но запомните, что в этом случае вы можете помешать пользователю быстро изучить вашу программу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]