Операционная система Microsoft Windows 3.1 для программиста -том 1


Клавиатура


5.1.

5.2.

5.3.

5.4.

5.5.

5.6.

5.7.

Способы работы с клавиатурой в среде Windows коренным образом отличаются от тех, к которым вы привыкли, когда составляли программы для MS-DOS. Из-за чрезвычайно слабой поддержки клавиатуры со стороны MS-DOS программы обычно вызывали прерывание INT16h, обработчик которого находится в BIOS. Приложения Windows не могут воспользоваться этим прерыванием, но в их распоряжении находится куда более мощный механизм сообщений.

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

Программа MS-DOS монопольно распоряжается клавиатурой. Она, например, может позволить себе приостановить свою работу до тех пор, пока вы не нажмете какую-либо клавишу. В среде Windows работает одновременно несколько приложений. Каждое приложение может создать несколько окон. Задачей Windows является правильное распределение сообщений в очереди приложений, с одной стороны, и в функции окон, принадлежащих приложениям, с другой.

Для распределения сообщений от клавиатуры используется концепция так называемого фокуса ввода (input focus). Фокус ввода - это атрибут, который может присваиваться окну, созданному приложением или Windows. Если окно имеет фокус ввода, соответствующая функция окна получает все клавиатурные сообщения из системной очереди.

Приложение может передавать фокус ввода от одного окна другому. Когда вы переключаетесь на другое приложение, фокус ввода передается активному окну приложения, на которое было выполнено переключение, или дочернему окну, созданному активным окном.

Функция окна может проследить за получением и потерей фокуса ввода.


Начало  Назад  Вперед



Книжный магазин