ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 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.


Яндекс цитирования