Программирование для IBM OS2

         

Nbsp;КЛАВИАТУРА


  • В этой главе мы расскажем о том, как приложения 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, поэтому в нашей книге мы не будем их рассматривать.



    Содержание раздела