ObjectWindows использует объектно-ориентированные расширения
Borland Pascal для инкапсуляции прикладного программного интер-
фейса Windows (API), скрывая от вас детали программирования для
Windows. В результате вы можете использовать IDE для Windows
Borland Pascal для написания программ Windows, затрачивая сущест-
венно меньше времени и усилий, чем это потребовалось бы при не-
объектно-ориентированном программировании. ObjectWindows предус-
матривает три полезных средства: инкапсуляцию информации окна,
абстракцию функций API Windows и автоматический ответ на сообще-
ния.
Интерфейсные объекты
Хотя библиотека ObjectWindows определяет объекты для окон,
диалоговых окон и управляющих элементов, она предусматривает
только поведение объектов, их атрибуты и типы данных. Физической
реализацией, визуальным отображением элемента на экране, управля-
ет сама Windows. Таким образом, объекты ObjectWindows, которые мы
называем интерфейсными объектами, взаимодействуют с соответствую-
щими визуальными элементами, которые мы называет интерфейсными
элементами. Успешное управление взаимодействием объект/элемент -
это ключ к успешному программированию в Windows с использованием
ObjectWindows.
Взаимодействие объект/элемент осуществляется через описатель
окна. Когда вы строите интерфейсный объект, одной из его функций
является указание Windows на создание интерфейсного элемента.
Windows возвращает идентифицирующий этот элемент описатель, кото-
рый объект сохраняет в поле с именем HWindow. Многие функции
Windows воспринимают описатель окна в качестве параметра, поэтому
сохранение его в поле поддерживает готовность доступа к оконному
объекту. Аналогично, поля интерфейсного объекта можно использо-
вать для сохранения информации о средствах отображения или инфор-
мации о состоянии конкретного окна.
Абстрагирование функций Windows
Приложения Windows управляют своим видом и поведением путем
вызова функций Windows - набора почти из 600 функций, образующий
интерфейс с прикладной программой Windows (API). Каждая функция
воспринимает разнообразные параметры различных типов, которые мо-
гут быть достаточно запутанными. Хотя из Borland Pascal вы можете
непосредственно вызывать любую функцию Windows, ObjectWindows уп-
рощает задачу, предлагая объектные методы, абстрагирующие функци-
ональные вызовы.
Как отмечалось выше, многие из параметров для функций
Windows уже записаны в полях интерфейсных объектов. Таким обра-
зом, методы могут использовать эти данные для подстановки пара-
метров для функций Windows. Кроме того, ObjectWindows группирует
родственные функциональные вызовы в отдельных методах, которые
выполняют задачи более высокого уровня. Результатом является уп-
рощенный и простой в использовании интерфейс API, улучшающий су-
ществующий API Windows.
Хотя такой подход существенно уменьшает вашу зависимость от
сотен функций API Windows, он не запрещает вам вызывать API не-
посредственно. ObjectWindows предлагает лучшее из обоих "миров":
объектно-ориентированную разработку высокого уровня, плюс макси-
мальное управление графической операционной средой.
Автоматизация ответа на сообщения
Кроме сообщения операционной среде Windows, что надо что-то
сделать, большинство приложений должны иметь возможность отвечать
на сотни сообщений Windows, являющихся результатом действий поль-
зователя (например, щелчка кнопкой "мыши"), других приложений или
прочих источников. Корректная обработка сообщений и ответ на них
является решающим для правильной работы вашей программы. Кроме
того, ваша программа должна как-то отвечать на выбор меню, и в
ответ на конкретное сообщение реализовать это не трудно. Но напи-
сание программы, которая знает как отвечать почти на 200 различ-
ных сообщений Windows, также затруднительно, как вызов нужных
функции Windows.
Объекты с их предопределенным поведением (методами) прекрас-
но подходят для задачи ответа на внешние воздействия (сообщения
Windows). ObjectWindows превращает сообщения Windows в вызовы ме-
тодов Borland Pascal. Таким образом, с помощью ObjectWindows вы
просто определяете метод для ответа на каждое сообщение, которое
вам нужно обрабатывать в программе. Например, когда пользователь
щелкает левой кнопкой "мыши", Windows генерирует сообщение
wm_LButtonDown. Если вы хотите, чтобы окно или управляющий эле-
мент в вашей программе реагировали на такие нажатия кнопки "мы-
ши", нужно определить метод WMLButtonDown, настроенный на сообще-
ние wm_LButtonDown. Затем, когда Windows посылает это сообщение,
ваш объект автоматически вызывает определенный вами метод.
Такие методы называются методами ответа на сообщение. Без
объектно-ориентированного программирования и ObjectWindows вам
пришлось бы написать длинный оператор case для каждого окна и уп-
равлять поступлением этого сообщения, отсортировывать вид сообще-
ния и наконец, решать, что с ним делать. ObjectWindows берет на
себя все эти функции.