ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 1 Turbo Pascal для Windows Руководство по программированию для Windows BORLAND INTERNATIONAL INC. 1800 GREEN HILLS ROAD P.O. BOX 660001, SCOTTS VALLEY, CA 95067-0001 Авторские права (c) 1991 принадлежат фирме Borland International. Все права сохраняются. Все имена продуктов Borland являются торговыми марками или зарегистрированными торговыми марками Borland International, Inc. Использованной в данном руководстве терм ин Windows относится к реализации системы окон фирмы Microsoft. Прочие имена продуктов являются торговыми марками или зарегистрированными торговыми марками соответствующих держателей этих марок. Содержание Введение В Windows нет ничего сложного Turbo Pascal для Windows Язык программирования Turbo Pascal Программирование для Windows в среде Windows Средства редактирования ресурсов Библиотека ObjectWindows Turbo Debugger для Windows Требования к подготовке О содержании этой книги Часть 1. Обучение ObjectWindows Глава 1. Унаследование окон Что представляет собой приложение Windows Преимущества Windows Требования Средства программирования Управляемая событиями архитектура Независимая от аппаратуры графика Многозадачный режим Управление памятью Ресурсы Динамическая компоновка Буфер вырезанного изображения Динамический обмен данными Множественный интерфейс документа Типы данных в Windows Объектно-ориентированное использование окон Лучший интерфейс для Windows Объекты интерфейса Абстрагирование функций Windows Автоматизация реакции системы в виде сообщений Структура программы Windows Структура Windows Взаимодействие с Windows и DOS "Здравствуй, Windows" Предназначение запуска приложения Главные предназначения окон Цикл разработки приложения Глава 2. Шаг за шагом по Windows Шаг 1: Простое приложение Windows Требования приложения Определение типа приложения Шаг 2: Основной тип объекта окна Что такое объект окна ? Регуляторы Родители и дети Создание нового типа окна Реакция на сообщения Прекращение выполнения приложения Глава 3. Заполнение окна Что такое контекст дисплея ? Шаг 3: Рисование текста в окне Записи сообщений Очистка экрана Шаг 4: Рисование линий в окне Модель протягивания Реакция на сообщения о протягивании Шаг 5: Изменение толщины линии Трассировка толщины линии Проведение диалога ввода Шаг 6: Автоматически регенерируемые изображения Модель рисования Сохранение изображений в качестве объектов Перерисовка сохраненных изображений Глава 4. Добавление меню Ресурсы меню Шаг 7: Меню для головного окна Перехват сообщения меню Реакция на сообщение меню Присоединение ресурсов к исполняемому файлу Глава 5. Организация диалога Шаг 8: Добавление всплывающего окна Создание и показ всплывающего окна Функция MakeWindow Добавление блока диалога Добавление объектного поля Модификация конструктора Init Запуск блока диалога Шаг 9: Сохранение рисунка в файле Управление состоянием Запись и загрузка файлов Глава 6. Всплывающие окна Шаг 10: Всплывающее окно подсказки Использование модулей с ObjectWindows Модификация головной программы Создание модуля Дополнительное управление окном Что такое управление ? Создание управления окном Управление объектами как полями Контроль за управлением Реакция на события управления Часть 2. Использование ObjectWindows Глава 7. Обзор ObjectWindows Соглашения относительно ObjectWindows Иерархия ObjectWindows Базовые объекты TAplication Объекты интерфейса TWindowsObjects Объекты окна TWindow TEditWindow TFileWindow Объекты диалога TDialog TDlgWindow TFileDialog TInputDialog Объекты управления TControl TButton TListBox TComboBox TCheckBox TRadioButton TGroupBox TEdit TScrollBar TStatic Объекты MDI TMDIWindow TMDIClient Модули ObjectWindows WObjects WinProcs WinTypes StdDlgs StdWnds Ресурсы Windows Функции Windows Вызовы функций Windows из ObjectWindows Доступ к функциям Константы комбинирования стиля Типы функций Windows Функция интерфейса менеджера окна Функции интерфейса графического устройства (GDI) Функции интерфейса системного сервиса Функции обратного вызова Прием сообщений Windows Как события становятся вызовами метода Параметры сообщения Windows Типы сообщений Windows Сообщения управления окном Сообщение инициализации Сообщения ввода Сообщения системы Сообщения буфера вырезанного изображения Сообщения системной информации Контрольно-управляющие сообщения Контрольно-информационные сообщения Информационные сообщения линейки прокрутки Сообщения из области не принадлежащей клиенту Сообщения интерфейса нескольких документов (MDI) Обработка сообщений по умолчанию Посылка сообщений Диапазон сообщения Определяемые пользователем сообщения Глава 8. Объекты приложения Управление потоком приложений Инициализация приложений Инициализация головного окна Инициализация каждого экземпляра приложения Инициализация первого экземпляра приложения Запуск приложений Завершение работы с приложениями Глава 9. Объекты интерфейса Тип TWindowsObject Зачем нужны объекты интерфейса ? Отношения родители-дети в окне Список дочерних окон Итераторы дочернего окна Обработка сообщений Реакция на сообщения Сообщения команд и дочерних окон Обработка сообщений команд Обработка дочерних сообщений Обработка сообщений по умолчанию Глава 10. Объекты окна Тип TWindow Инициализация и создание объектов окна Инициализация объектов окна Создание элементов окна Выводы, касающиеся инициализации и создания Регистрация класса окна Атрибуты регистрации Поле стиля класса Поле пиктограммы Поле курсора Поле цвета фона Поле меню по умолчанию Окна редактирования и файлов Окна редактирования Окна файлов Прокрутка окон Атрибуты прокрутки Задание прокрутки собственного окна Пример прокрутки Автоматическая прокрутка и трассировка Модификация единиц прокрутки и диапазона Изменение позиции прокрутки Установка размеров страницы Оптимизация методов Paint для прокрутки Глава 11. Объекты диалога Использование ресурсов диалога Использование объектов диалога Конструирование и инициализация диалогов Выполнение диалогов Моделированные и лишенные модели диалоги Завершающие диалоги Управление объектами диалога Управляющие манипуляции и обработка сообщений Манипуляция управлениями диалога Реакция на управляющие информационные сообщения Пример связи диалог/управление Ассоциирование объектов управления Вызов DefWndProc Расширенный пример использования диалогов Окна диалога Диалоги ввода Диалоги файлов Инициализация диалогов файлов Работа с диалогами файлов Глава 12. Объекты управления Тип объекта TControl Конструирование и создание объектов управления Разрушение и освобождение управления Обработка сообщений и управления Манипуляция управлением окнами Реакция на сообщения управления Окна, которые действуют как диалоги Управление блоком списка Конструирование и создание блоков списка Модификация блоков списка Запросы в блоках списка Выбор из блока списка Пример программы: LBoxTest Статическое управление Конструирование статического управления Запросы статического управления Модификация статического управления Пример: приложение StatTest Управление нажатием клавиш Реакции на клавишные сообщения Блоки проверки и клавиши выбора Конструирование блоков проверки и клавиш выбора Запрос состояния блока проверки Модификация состояния блока выбора Блоки групп Реакция на сообщения блока группы Пример программы: BtnTest Линейки прокрутки Конструирование линеек прокрутки Запросы в линейках прокрутки Модификация линеек прокрутки Реакция на сообщения линеек прокрутки Пример: SBarTest Управление редактированием Конструирование управления редактированием Буфер вырезанного изображения и операции редактирования Реализация Управление запросами на редактирование Изменение управления редактированием Удаление текста Вставка текста Форсированный выбор текста и прокрутка Пример программы: EditTest Комбинированные блоки Три типа комбинированных блоков Простые комбинированные блоки Опускающиеся комбинированные блоки Опускающиеся комбинированные блоки списков Выбор типа комбинированного блока Конструирование комбинированных блоков Модификация комбинированных блоков Пример приложения: CBoxTest Установка управляющих величин Определение буфера передачи Определение соответствующего диалога или окна Передача данных Обеспечение передачи соответствующего управления Пример передачи Глава 13. Объекты MDI Компоненты приложения MDI Каждое окно MDI является объектом Конструирование окон MDI Конструирование окон-рамок MDI Конструирование дочерних окон MDI Обработка сообщений в приложении MDI Управление дочерним окном MDI Активизация дочернего окна Меню дочернего окна Пример приложения MDI Часть 3. Расширенное использование ObjectWindows Глава 14. Управление памятью Использование менеджера памяти Как Windows управляет памятью Регуляторы и адреса Локальная и глобальная память Использование локальной динамической области Размещение и доступ к локальной памяти Высвобождение блоков локальной памяти Перемещение и модификация блоков локальной памяти Запрос блоков локальной памяти Замечания о программировании Использование глобальной динамической области Размещение и доступ к глобальной памяти Другие способы локализации блоков глобальной памяти Высвобождение блоков глобальной памяти Перемещение и модификация блоков глобальной памяти Запрос блоков глобальной памяти Изменение глобального высвобождения Получение предупреждений о нехватке памяти Замечания о программировании Глава 15. Библиотеки динамической компоновки Доступ к библиотекам DLL Простой пример DLL Глава 16. Динамический обмен данными Буфер вырезанного изображения Windows Форматы буфера вырезанного изображения Помещение данных в буфер вырезанного изображения Поиск данных из буфера вырезанного изображения Отложенное воспроизведение Обмен сообщениями между приложениями Динамический обмен данными Термины Установление диалога Прекращение диалога Методы обмена данными Запрос отдельного элемента данных Продолжение передачи данных Запрос серверу сменить значение данных Выполнение макрокоманд в сервере Системная тема Глава 17. Все о GDI Контекст дисплея Управление контекстом дисплея Что в контексте дисплея ? Побитовая графика Цвет Режимы распределения Области вырезанного изображения Инструментальные средства рисования Инструментальные средства рисования Основные инструменты Логические инструменты Логические ручки Логические кисти Логические шрифты Отображение графики в окнах Рисование в окнах Управление контекстом дисплея Вызов графических функций окна Раскрашивание окон Стратегия графики Использование инструментов рисования Графические функции GDI Функции рисования текста Функции рисования линий MoveTo и LineTo PolyLine Arc Функции закрашивания области Rectangle RoundRect Ellipse Pie и Chord Polygon Использование палитры Установка палитры Рисование с палитрой Выбор в палитре Модификация палитры Реакция на изменения палитры Глава 18. Более подробно о ресурсах Создание ресурсов Добавление ресурсов к исполняемой программе Работа с Компилятором Ресурсов Файлы описания Компилятора Ресурсов Замечания о Компиляторе Ресурсов Загрузка ресурсов в приложение Загрузка меню Загрузка таблиц акселераторов Загрузка блоков диалога Загрузка курсоров и пиктограмм Загрузка ресурсов строк Загрузка побитовых распределений Использование побитовых распределений для создания кистей Отображение побитовых распределений в меню Глава 19. Рекомендации для стандартного приложения Принципы разработки Обеспечение той реакции, которую ожидает пользователь Предоставление пользователю возможностей управления потоком Стандартное появление и поведение Общее представление Взаимодействие мыши и клавиатуры Меню Блоки диалога Рекомендации по разработке Написание безопасных программ Программировать или все или ничего Буфер безопасности Другие ошибки при создании окон Основные пользователи Часть 4. Наборы и потоки Глава 20. Наборы Объекты наборов Размеры наборов устанавливаются динамически Полиморфизм наборов Проверка типа и наборы Объединение в набор элементов, не являющихся объектами Создание набора Методы итератора Итератор ForEach Итераторы FirstThat и LastThat Отсортированные наборы Наборы строк Пересмотренные итераторы Нахождение элемента Полиморфные наборы Наборы и управление памятью Глава 21. Потоки Вопрос: Объект ввода/вывода Ответ: Поток Полиморфизм потоков Потоки обрабатывают объекты Смысл использования потоков Установка потока Чтение и запись потока Поместить Взять В случае ошибки Закрытие потока Приспособление объектов к потоку Методы загрузки и хранения Регистрация потока ID номера объектов Автоматические поля Регистрация на месте Регистрация стандартных объектов Механизм потока Процесс Put Процесс Get Обработка указателей объектов Наборы в потоке: Полный пример Добавление методов Store Регистрация записей Регистрация Запись в поток Как все хранится ? Поля в потоке Родство окон Копирование потока Потоки произвольного доступа Необъектные элементы потоков Разработка пользователем собственных потоков Обработка ошибок потока Таблицы 3.1: Общие сообщения событий, связанных с мышью 3.2: Используемые на Шаге 4 сообщения 7.1: Диапазоны сообщений Windows 10.1: Поля атрибутов окна 10.2: Регистрационные атрибуты окна 10.3: Методы окна файла и ID меню 10.4: Типичные значения полей окна редактирования 12.1: Управления Windows, поддерживаемые ObjectWindows 12.2: Информационные сообщения блока списка 12.3: Общие стили управления редактированием 12.4: ID меню и вызываемые ими методы 13.1: Стандартные методы, команды и действия MDI 16.1: Форматы буфера вырезанного изображения 17.1: Основные инструменты рисования 17.2: Примеры значений цвета 17.3: Константы шага и семейства шрифтов 18.1: Опции командной строки компилятора ресурсов 19.1: Значения ошибок при создании окон Рисунки 1.1: Экранные компоненты приложения Windows 1.2: IDE Turbo Pascal в качестве примера MDI 1.3: Взаимодействие приложения Windows с Windows и DOS. 2.1: Полное приложение ObjectWindows 2.2: Ваша первая программа ObjectWindows 2.3: Реакция MyProgram на совершенное пользователем действие 2.4: MyProgram с модифицированным поведением своего закрытия 3.1: MyProgram рисует текст в указанных пользователем точках 3.2: Изменение толщины линии 4.1: MyProgram с ресурсом меню 4.2: MyProgram с системой Help 5.1: Группа связанных родительских и дочерних окон 5.2: Новое окно подсказок MyProgram 5.3: MyProgram с блоком диалога файла 6.1: Система подсказок MyProgram 7.1: Иерархия типов объектов в ObjectWindows 7.2: Как сообщение попадает в приложение 8.1: Вызов методов, которые управляют работой приложения 8.2: Головное окно 8.3: Усовершенствование инициализации приложения 8.4: Вызов методов при закрытии приложения 9.1: Коммуникация между Windows и приложениями 10.1: Атрибуты окна 10.2: Программа, которая использует класс IBeamWindows 10.3: Окно редактирования 11.1: Приложения диалога 11.2: Диалог со специализированной кнопкой 11.3: Диалог с проверкой корректности ввода 11.4: Диалог ввода 11.5: Диалог файла 12.1: Примеры некоторых управлений 12.2: Заполненный блок списка 12.3: Реакция на выбор пользователем элемента блока списка 12.4: Статические управления 12.5: Программа Windows, использующая кнопки 12.6: Окно с различными кнопками 12.7: Объект линейки прокрутки 12.8: Окно с множеством линеек прокрутки 12.9: Окно с управлениями редактированием 12.10: Созданное без рамки управление редактированием 12.11: Три типа комбинированных блоков и блок списка 12.12: Опускающийся комбинированный блок списка 12.13: Простой комбинированный блок 13.1: Компоненты примера приложения MDI 14.1: Пример уплотнения 17.1: Стили линий для ручки 17.2: Стили штриховки для кисти 17.3: Результат выполнения функции TextOut 17.4: Результат выполнения функции LineTo 17.5: Результат выполнения функции Polyline 17.6: Результат выполнения функции Arc 17.7: Результат выполнения функции Rectangle 17.8: Результат выполнения функции RoundRect 17.9: Результат выполнения функции Ellipse 17.10: Результат выполнения функции Pie 17.11: Результат выполнения функции Chord 17.12: Результат выполнения функции Polygon 18.1: Заполнение области экрана полосками 18.2: Ресурс побитового распределения для создания кисти по образцу Рис.18.1 18.3: Меню, где в качестве одного из вариантов выбора использовано побитовое распределение 19.1: Стандартное меню CUA 19.2: Рекомендуемые CUA элементы меню File 19.3: Рекомендуемые CUA элементы меню Edit 19.4: Рекомендуемые CUA элементы меню View 19.5: Рекомендуемые CUA элементы меню Options 19.6: Рекомендуемые CUA элементы меню Help Введение В Windows нет ничего сложного Turbo Pascal для Windows обеспечивает превосходный новый способ разработки приложений для Microsoft Windows . До настоящего времени большинство программистов для среды Windows использовали язык программирования С и множество инструментальных средств, кот орые работают в среде DOS. В результате этого процесс разработки программ для Windows был очень длительным, сложным и иногда заканчивался неудачей. Turbo Pascal для Windows Но все это имело место раньше, а теперь все иначе. Turbo Pascal для Windows содержит ряд важных новых методов, которые устраняют сложности разработки приложений Windows. - Расширение языка Pascal - Среда работы Windows - Диалоговые средства редактирования ресурсов в среде Windows - Turbo Debugger для Windows Давайте подробно рассмотрим каждую из этих возможностей. Язык программирования Turbo Pascal До настоящего момента если вы и разрабатывали приложения для Windows, то скорее всего вами использовался язык программирования С. Но иногда у вас не было желания писать на С, либо у вас уже был код на языке Pascal, который вы хотели бы адаптировать для W indows. Turbo Pascal теперь имеет все нужные вам средства для разработки развитых приложений Windows. Наряду со всеми характеристиками, которые вы могли ожидать от Turbo Pascal (быстрая компиляция, возможность повторного использования модулей кода и объектно-ориентированное программирование) Turbo Pascal для Windows обеспечивает использование и создание библиотек динамической компоновки (DLL), прямое включение файлов ресурсов Windows, ряд новых типов данных и модернизированная версия стандартных модулей DOS Turbo Pascal для Windows. Программирование для Windows в среде Windows Первая особенность, на которую вы возможно обратите внимание при написании программ на Turbo Pascal для Windows, это то, что интегрированная среда разработки (IDE) работает в Windows как программа Windows. Это означает, что вы можете писать компилировать и тестировать ваши приложения на Turbo Pascal полностью используя возможности многозадачного режима Windows. Средства редактирования ресурсов Turbo Pascal для Windows включает компилятор ресурсов фирмы Microsoft и полный набор редакторов ресурсов. Редакторы ресурсов позволяют модифицировать такие ресурсы, как меню, диалоги, побитовые распределения, пиктограммы и курсоры визуально, без какого-л ибо программирования. Компилятор ресурса позволяет вам скомпилировать сценарий ресурса, написанный другим программистом Windows. Библиотека ObjectWindows Windows содержит большое количество таких нововведений, о которых вы ранее даже не могли и подумать. Например, работа с текстом и графикой в окнах изменяющегося размера, взаимодействие с другими программами в многозадачной среде и манипулирование почти 6 00 функциями в Windows API. Возможно, самая сложная задача будет состоять в том, чтобы определить, что нужно сделать с вашей программой, чтобы она работала в Windows, а затем убедиться в том, что все это сделано. Для того, чтобы программа была квалифицирована, как программа Windows, от нее требуется достаточно много. Например, нельзя осуществлять запись непосредственно на экран. Нельзя непосредственно модифицировать память. Кроме того, приложение Windows должно з нать, как следует реагировать на поток сообщений, которых Windows посылает приложению в ответ на события, генерируемые пользователем, например, выбор варианта из меню. Но мы не оставим вас наедине с этой проблемой. Вам будет дан первоначальный толчок: ObjectWindows. ObjectWindows представляет собой объектно-ориентированную библиотеку, которая включает в себя большинство вариантов поведения, которыми должно обладать каждое окно, и позволяет унаследовать все эти способности вместо их разработки заново при начале напис ания новой программы. Предоставляя вам такое солидное и надежное обрамление мы даем вам возможность сконцентрироваться на содержательной части программы, вместо непроизводительной затраты усилий на части программы, которые являются общими для всех прилож ений Windows. Turbo Debugger для Windows Turbo Debugger для Windows представляет собой мощный отладчик на уровне исходного кода предназначенный для работы с Turbo Pascal для Windows. Turbo Debugger для Windows обеспечивает полное распознавание выражений Turbo Pascal и ассемблера, специальные ср едства отладки приложений Windows и объектно-ориентированных программ. Подробное описание использования отладчика можно найти в "Руководстве пользователя по Turbo Debugger для Windows". Требования к подготовке До того как приступить к написанию приложений для Windows, нужно знать ряд вещей. Первое состоит в том, что вам необходимо знать, как использовать и Turbo Pascal и Windows. Элементы программирования на Turbo Pascal можно найти в "Руководстве пользователя " и "Руководстве программиста", а детали по использованию Windows поставляются вместе с программным обеспечением Windows. Кроме того, вы должны владеть приемами объектно-ориентированного программирования, для того, чтобы использовать ObjectWindows. Разработанные с ObjectWindows приложения широко используют объектно-ориентированные методы, включая наследование и полиморфизм. Эта тема рассматривается в "Руководстве пользователя", Глава 4, "Объектно-ориентированное программирование". Кроме объектно-ориентированных методов, нужно быть знакомым с использованием указателей и динамических переменных, т.к. практически все элементы ObjectWindows динамически размещаются в динамической области памяти. О содержании этой книги Turbo Pascal для Windows является новым подходом к программированию Windows и ObjectWindows использует некоторые приемы, которые могут быть вам неизвестны, поэтому данное руководство содержит большой объем пояснительного материала. Полный справочный мате риал как по ObjectWindows, так и по Интерфейсу Программного приложения Windows можно найти в "Справочном руководстве по Windows". Данное руководство состоит из четырех частей: - Часть 1, "Обучение ObjectWindows", служит введением в принципы написания программ Windows на Turbo Pascal и содержит учебный материал, который иллюстрирует процесс написания и усовершенствования приложения ObjectWindows. - Часть 2, "Использование ObjectWindows", содержит детальное описание элементов ObjectWindows, включая обзор иерархии объектных модулей и их взаимодействие со средой Windows, детальное описание частей этой иерархии и их использования. - Часть 3, "Расширенное использование ObjectWindows", рассматривает важные темы более сложных приемов программирования для Windows, особенно методы непосредственного взаимодействия с Windows : графика, использование ресурсов, управление памятью, разд еление кода и данных, рекомендации по программированию для Windows. - Часть 4, "Наборы и потоки", описывает использование механизмов наборов и потоков с объектами Turbo Pascal, при этом специальное внимание уделяется работе с ObjectWindows. |