Математика | ||||
Выпускается с 1991 гола Фролов Л, В., Фролов Г. В. Ф91 Программщтованислля IBM OS/2 Warp: Ч. 1. - М.: ДИАЛОГ-МИФИ, 1996. — 288 с. — (Библиотека системного ир01раммиста; Т. 25) ISBN 5-86404-077-0 (Т. 25) Эта книга - первая в серии книг, посвященных программированию для операционной системы IBM OS/2 Warp. Основная задача книги - научить вас создавать приложения для графической оболочки Presentation Manager. Мы расскажем о том, как работают событийно-управляемые приложения, рассмотрим механизм передачи сообщений, научим создавать и использовать окна, органы управления и другие ресурсы, приведем исходные тексты приложений. Книга предназначена всем, кто собирается самостоятельно освоить программирование для операционной системы IBM OS/2 Warp. | ||||
ВВЕДЕНИЕ "Ш ПР°ЯОЛЖИМ зна*0мство с операционной системой IBM находится на переднем KP3ti современных технологий наряду с та-кмми операционными системами, как Microsoft windows NT и Microsoft Windows 95 Напомним, что это знакомство началось в 20-м томе „ашей серии книг »Би6лиотека системно, > программиста", в котором мы рассмотрели принципы, положенные в основу IBM оъ/2 \\arp, рассказали о том, как устанавливать, настраивать и использовать эту операционную систему. Мы также рассмотрели ее сетевые возможности Теперь, когда вы уже умеете работать в среде шм OS/2 Warp как пользователь, настало время научиться создавать приложения длн этой операционной системы Скажем сразу, что ^ шм OS/2 Waip мо^о сшдавать приложения двта разных типов Первый тип приложений в основном предназначен для работы в текстовом ре-жиме (текстовые приложения), второй - в графическом (приложения Presentation Ма- Если вы раньше программировали только д.1я операционной системы MS-DOS, то вы >-же создавали текстовые приложения. В составе MS.DOs нет удобных средств для nT^^OBOr° 1ИИ Пифического вЫьода, поэтому большинство программ раоотают напрямую с видеопамятью. фшкчески расположенной на плате ви- Операционная система IBM OS/2 Waip ИС1ЮЛЬЗует защищенный ре™ работы процессора, причем в большинстве случаев пРиложет|ЯМ запрещается обращаться к портам периферийных устройств и видеопамяти в обход соответствующих драйверов. dro ограни .ение. однако, с лихвой компенсируйся удобными и быстродействующими Функциями, достмшыми приложениям в рамк^ программного интерфейса IBM OS/2 ^Л10М программирование ^Ранного вывода для текстового режима заметно проще, чем для операцИонной системы MS-DOS' 1ем не менее текстовый режим не удовлетворяет современным требованиям. 1редъяв..1яемым к интерфейсу пользователя. Пра(сгически все приложекиЯ- составлен-иые атя новых операционных систем, работают в графическом режиме, реализуя ,ра- "рическии интерфейс потмокатетя Поэто\г\- TI,, . к - *, к* ML пользователя. иозшм> д,1я нас в большей степени представляет адтерес создание (рафических приложений, K ^Если вы программировали только для MS-bos и никогда не создавали приложении для операционной системы Microsoft Windows, то самое трудное для вас будет пе-реиги от обычного, линейного программирования к событийно-упра^яемот-. Однако МЫ постараемся ц, возможности облегчить та^й переход. ОГЛАВЛЕНИЕ ВВЕДЕНИЕ..............................................................................................3 Благодарности..................................................................................................................5 Как связаться с авторами...............................................................................................5 1. ОСНОВЫ PRESENTATION MANAGER................................................6 Базовые понятия и определения...............................................................S Окна в приложениях Presentation Manager....................,.............................................8 Функция окна..................................................................................................................9 Сообщения.....................................................................................................................10 Фокус ввода....................................................................................................................12 Цикл обработки сообщений........................................................................................12 Структура приложения Presentation Manager..........................................13 Инициализация приложения......................................................................................13 Создание очереди сообщений.....................................................................................14 Регистрация класса главного окна приложения.......................................................15 Создание главного окна приложения........................................................................19 Запуск цикла обработки сообщений..........................................................................25 Завершение работы приложения................................................................................26 Функция окна................................................................................................................27 Приложение MYWINDOW.....................................................................30 Определения и глобальные переменные.......................................-............................35 Функция main................................................................................................................36 Функция окна................................................................................................................37 Ресурсы приложения....................................................................................................39 Файл определения модуля...........................................................................................40 Трансляция исходных текстов приложения..............................................................40 2. ЭЛЕМЕНТАРНАЯ ТЕОРИЯ ОКОН....................................................43 Иерархия окон и родственные связи......................................................43 Родительские и дочерние окна....................................................................................43 Окно рабочего стола.....................................................................................................44 Окно Frame Window.....................................................................................................45 Функции для просмотра дерева окон.........................................................................46 . Отношения собственности..........................................................................................46 Удочерение окна...........................................................................................................47 Изменение размеров и расположения окна...........................................47 Передача сообщений функции окна.......................................................49 Создание дочерних окон.........................................................................52 Приложение WINTREE............................................................. 53 Файл wmtree.h................................................................................................................60 Файл wmtree.rc...............................................................................................................60 Файл wmtree.def...................................................................................................'..........61 Определения..................................................................................................................61 Функция main................................................................................................................61 Функции окон...............................................................................................................64 3. СОЗДАНИЕ МЕНЮ...........................................................................65 Классификация типов меню...................................................................65 Подготовка шаблона меню......................................................................6S Обработка сообщения WM_COMMAND...............................................72 Плавающее меню.....................................................................................73 Приложение MENUAPP.........................................................................7.6 Глобальные переменные..............................................................................................S3 Функция main................................................................................................................S3 Функция окна WndProc...............................................................................................84 Файл menuapp.h.............................................................................................................86 Файл ресурсов приложения MENUAPP....................................................................87 Файл определения модуля...........................................................................................89 Изменение системного меню..................................................................89 Динамическое создание меню................................................................93 Приложение MENU MOD.......................................................................95 Глобальные переменные............................................................................................103 Функция main..............................................................................................................104 Функция окна WndProc.............................................................................................104 Файл menumod.li.........................................................................................................104 Файл ресурсов menumod.rc........................................................................................105 Файл определения модуля.........................................................................................106 4. РИСОВАНИЕ ТЕКСТА.....................................................................107 Пространство отображения....................................................................108 Функция GpiChavStringAt.......................................................................ПО Система координат.................................................................................U1 Приложение TEXTOUT..........................................................................112 Функция окна приложения WndProc.......................................................................117 Фай;! textout.h..............................................................................................................49 Фа Га textout.rc.............................................................................................................119 Файл texiout.def............................................................................................................U9 Другие функции для рисования текста..................................................120 5. КЛАВИАТУРА...................................................................................123 Сообщение WM_CHAR..........................................................................124 Скан-код.............................................................................................................,.........124 Виртуальный код клавиши........................................................................................124 Код символа.............................................................................................................. 126 Счетчик повторений.................................................................................................. ]2у Флаги............................................................................................................................127 Макрокоманда CHARMSG....................................................................................... ]2$ Приложение KBDMSG...........................................................................129 Глобальные переменные............................................................................................137 Функция main..............................................................................................................137 Функция WndProc.......................................................................................................13s Функция SetCourierFont.............................................................................................140 Функция Reset Font.....................................................................................................140 Файл kbdmsg.h.............................................................................................................Hi Файл kbdmsg.rc............................................................................................................141 Файл kbdmsg.def...........................................................................................................141 6. РАБОТА С МЫШЬЮ.......................................................................142 Определение количества кнопок............................................................142 Нумерация кнопок........................................;.........................................143 Сообщения, поступающие от мыши......................................................143 Сообщения от кнопок мыши....................................................................................143 Сообщение WM_MOUSEMOVE...............................................................................145 Сообщение WM_HITTEST........................................................................................145 Другие сообщения.......................................................................................................146 Функции для работы с мышью............................................=.................147 Захват курсора мыши..................................................................................................147 Определение координат курсора мыши...................................................................147 Определение состояния клавиш мыши...................................................................I4S Установка позиции курсора мыши...........................................................................149 Как убрать курсор мыши...........................................................................................149 Приложение MOUSEMOV.....................................................................149 Глобальные переменные............................................................................................156 Функция main..............................................................................................................156 Функция окна WndProc.............................................................................................157 Файл mousemov.h.......:................................................................................................159 Файл mousemov.rc.......................................................................................................1^9 Файл определения модуля mousemov.def.................................................................160 Изменение внешнего вила курсора мыши............................................^0 Управление курсором мыши с помощью клавиатуры..........................16- Приложение POINTER..........................................................................163 Глобальные переменные............................................................................................171 Функция main..............................................................................................................I'1 Функция окна WndProc.............................................................................................172 Функция DrawMousePir.............................................................................................'' Файл pointer.h..................................................................................................-............1'_ Файл pointer.rc.............................................................................................................^ Файл pointer.def...........................................................................................................*'э 176 176 177 ТАЙМЕР..................................................................................... Запуск и остановка таймера............................................................ Сообщение WMJTIMER........................................................................" < Приложение ВЕЕР..................................................................................177 Функция WndProc.......................................................................................................1&1 ФайлЪеср.Н..................................................................................................................Ш Файл beep.rc.................................................................................................................183 Фай;! beep.def...............................................................................................................1S3 Другие функции для работы с таймером...............................................1S3 Функция WiuGelCurrentTime....................................................................................1S3 Функция WinQueryMsgTtme......................................................................................1S4 Функция DosGetDateTime.........................................................................................184 Приложение CLOCK..............................................................................1S4 .Глобальные переменные............................................................................................193 Функция main..............................................................................................................193 Функция окна WndProc.............................................................................................194 Файл clocK.h.................................................................................................................195 Файл описания ресурсов clock.rc..............................................................................196 Файл определения модуля clock.def..........................................................................196 8. ОРГАНЫ УПРАВЛЕНИЯ.................................................................197 Кнопки....................................................................................................198 Функция WinCreateWindow.......................................................................................19S Сообщение WM_CREATE.........................................................................................200 Стили кнопок..............................................................................................................201 Установка размеров и расположения кнопки.........................................................203 Извещение от кнопки................................................................................................204 Сообщения WM^SYSCOMMAND и WM_HELP...................................................206 Управление кнопками................................................................................................207 Приложение BUTTON...........................................................................207 Глобальные переменные............................................................................................212 Функиид main..............................................................................................................213 Функция окна WndProc.............................................................................................213 ......................................................................................................214 .......................214 Функция main Функция окна WndProc Файл buuon.h 214 Файл buuon.rc Файл buuon.def ............................................................................................................ 215 Переключатели 215 NTROL 216 217 21 S ере Сообщение WM_CONTROL Определение состояния переключателя Изменение состояния переключателя Приложение CHECK .............................................................................. 218 Глобальные переменные ............................................................................................ 225 Функция main .............................................................................................................. 225 Функция WndProc ....................................................................................................... 225 Цена: 75руб. |
||||