Как и большинство интерактивных программ, работающих на персональных компьютерах, приложения Windows 95 активно используют пользовательский ввод с клавиатуры. Хотя Windows поддерживает в качестве устройства ввода также и мышь, работа с клавиатурой по-прежнему превалирует. Действительно, поскольку некоторые пользователи персональных компьютеров предпочитают пользоваться не мышью, а клавиатурой, рекомендуется, чтобы создатели программ пытались реализовать все функциональные возможности программы с помощью клавиатуры. (Конечно, в некоторых случаях, таких как программы рисования или издательские системы, это просто не практикуется, и в этом случае необходима мышь.)
Клавиатура не может рассматриваться исключительно как устройство для ввода информации, изолированно от других функций программы. Например, программы часто повторяют ввод с клавиатуры путем отображения печатаемых символов в рабочей области окна. Таким образом, обработка ввода с клавиатуры и вывод текста должны рассматриваться совместно. Если вам важно адаптировать ваши программы к иностранным языкам и рынкам, вам также нужно знать о том, как Windows 95 поддерживает расширенный набор символов ASCII (коды от 128 и выше), двухбайтные наборы символов (DBCS), и поддерживаемую Windows NT 16-разрядную кодировку клавиатуры, известную как Unicode.
Клавиатура. Основные понятия
Как вы, наверное, догадались, основанная на сообщениях архитектура Windows идеальна для работы с клавиатурой. Ваша программа узнает о нажатиях клавиш посредством сообщений, которые посылаются оконной процедуре.
На самом деле все происходит не столь просто: когда пользователь нажимает и отпускает клавиши, драйвер клавиатуры передает информацию о нажатии клавиш в Windows. Windows сохраняет эту информацию (в виде сообщений) в системной очереди сообщений. Затем она передает сообщения клавиатуры, по одному за раз, в очередь сообщений программы, содержащей окно, имеющее “фокус ввода” (input focus) (о котором вскоре будет рассказано). Затем программа отправляет сообщения соответствующей оконной процедуре.
Смысл этого двухступенчатого процесса — сохранение сообщений в системной очереди сообщений, и дальнейшая их передача в очередь сообщений приложения — в синхронизации. Если пользователь печатает на клавиатуре быстрее, чем программа может обрабатывать поступающую информацию, Windows сохраняет информацию о дополнительных нажатиях клавиш в системной очереди сообщений, поскольку одно из этих дополнительных нажатий может быть переключением фокуса ввода на другую программу. Информацию о последующих нажатиях следует затем направлять в другую программу. Таким образом Windows корректно синхронизирует такие сообщения клавиатуры.
Для отражения различных событий клавиатуры, Windows посылает