Программирование для IBM OS/2
© Александр Фролов, Григорий Фролов
Том 25, М.: Диалог-МИФИ, 1993, 286 стр.
5 КЛАВИАТУРА
В этой главе мы расскажем о том, как приложения
Presentation Manager работают с клавиатурой. Как и
следовало ожидать, методика работы с клавиатурой
в прилоениях Presentation Manager полностью отличается от
той, что используется в программах MS-DOS .
Напомним, что когда пользователь нажимает
клавишу, генерируется аппаратное прерывание. В
операционной системе MS-DOS обработчик этого
прерывания записывал скан-код нажатой клавиши в
специальный клавиатурный буфер, расположенный в
области данных BIOS . Когда программе MS-DOS нужно
было ввести код нажатой клавиши, она (прямо или
косвенно) обращалась к прерыванию INT 16h , которое
возвращало расширенный ASCII-код нажатой клавиши.
При необходимости программа переходила в режим
ожидания и находилась в нем до тех пор, пока
пользователь не нажимал какую-нибудь клавишу.
Способы работы с клавиатурой в среде MS-DOS мы
подробно рассмотрели во втором томе
"Библиотеки системного программиста",
который называется "Аппаратное обеспечение IBM
PC".
В среде операционной системы IBM OS/2 одновременно
может работать несколько приложений, которые при
этом должны пользоваться только одной
клавиатурой. Очевидно, что в такой ситуации
никакое приложение не может блокировать работу
всей системы, ожидая ввод с клавиатуры.
Для работы с клавиатурой в приложениях Presentation
Manager используется механизм сообщений. Каждый раз
когда пользователь нажимает или отпускает любую
клавишу, система Presentation Manager генерирует
сообщение с кодом WM_CHAR . Параметры этого
сообщения несут всю необходимую информацию о
нажатой (или отпущенной) клавише.
В какое окно попадают клавиатурные сообщения?
В то, которое имеет фокус ввода. Если
пользователь делает одно из приложений активным,
выдвигая его на передний план, функция окна этого
приложения будет получать клавиатурные
сообщения. С помощью функции WinSetFocus приложение
может передать фокус ввода любому окну. При этом
сообщения от клавиатуры будут поступать в
функцию этого окна.
Заметим, что в среде операционной системы IBM OS/2
могут работать приложения двух типов -
приложения Presentation Manager и приложения текстового
режима, напоминающие программы MS-DOS . Последние
работают с клавиатурой при помощи набора
функций, имеющих префикс имени Kbd, например, KbdCharIn
. По своим возможностям эти функции недалеко ушли
от прерывания INT 16h. Такие функции нельзя
использовать в приложениях Presentation Manager, поэтому в
нашей книге мы не будем их рассматривать.
|