|
Программирование >> Процедурные приложения
Рис. 20.27. Диалоговое окно, отображающееся при нажатии правой кнопки мыши. Глава 21. Введение в OLE Основные концепции o Объекты o Структурированные файлы o Унифицированная передача данных o Внедрение o Связывание Создание OLE -контейнера o Работа с мастером приложений o Анализ программного кода Проверка работы контейнера В настоящей главе вы познакомитесь с основными концепциями технологии OLE(ObjectLinkingandEmbedding- связывание и внедрение объектов), которую можно определить как объектно-ориентированный протокол совместного доступа к данным и программному коду из разных процессов и даже из разных компьютеров в пределах локальной сети. OLE позволяет программистам создавать приложения для работы с составными документами, представляющими собой динамические связанные структуры, отдельные части которых могут разрабатываться в различных программах. Составной документ обычно включает в себя главный документ и ряд внедренных или связанных объектов. Разработку OLE-контейнеров и серверов проще всего вести в среде VisualC++ при помощи специальных мастеров, а также библиотеки MFC . Делать такого рода работу вручную бессмысленно, так как придется писать тысячи строк кода, большая часть которого будет повторяться от программы к программе. В этой главе мы поговорим о создании OLE-приложений с помощью мастера AppWizard, с которым вы уже познакомились в предыдущей главе. Благодаря этому мастеру программист избавляется от необходимости вводить однотипные программные блоки - они будут добавляться автоматически. Мастер AppWizard позволяет также не заботиться о деталях реализации многочисленных концепций технологии OLE. Вы убедитесь, что применение возможностей OLE-становится достаточно простой задачей. Основные концепции Объекты Процедурные приложения для Windows базируются главным образом на использовании стандартных API-функций. Из-за этого иногда бывает трудно определить язык реализации программы (С или C++), поскольку вся она может состоять только из вызовов стандартных функций! В главах 18 и 19 мы постепенно перешли от процедурных подходов в программировании к объектно-ориентированной методике. Этот переход стал возможным благодаря использованию библиотеки MFC . Технология OLE открывает новые возможности для объектно-ориентированного программирования. В основе OLE лежит модель компонентных объектов - COM (ComponentObjectModel), представляющая собой двоичный стандарт, который предназначен для организации взаимодействия между двумя не связанными приложениями. Подобное взаимодействие организуется посредством интерфейсов, которые должны реализовываться объектами. Объекты, подчиняющиеся правилам СОМ, называются СОМ-объектами. Каждый СОМ-объект имеет уникальный идентификатор класса (CLSID) и создается с помощью функций, содержащихся в специальной фабрике классов (classfactory), связанной с данным идентификатором. При создании Объекта приложение получает указатель на базовый интерфейс IUnknown данного объекта, и в дальнейшем все функции объекта вызываются через этот указатель. Такая схема позволяет создавать объекты независимо от языка программирования, на котором написано приложение. В обязанности библиотек OLE входит также передача параметров вызова функций и возвращаемых значений через границы процессов. Структурированные файлы Данные составных документов записываются на диск в виде структурированных файлов, в которых используются специальные объекты - потоки (stream) и хранилища (storage). Потоки напоминают обычные файлы, а хранилища аналогичны папкам. Структурированные файлы выполняют роль оболочки, скрывающей реальное размещение данных на диске и облегчающей пользователям процесс манипулирования документами. Унифицированная передача данных Унифицированная передача данных реализуется посредством объектов данных, инкапсулирующих сами данные. Наличие указателя на объект облегчает подключение к источнику данных различных клиентов. Объект данных, в свою очередь, осуществляет полный контроль за обменом данными между приложениями. Поэтому, с точки зрения программистов, обмен данными, осуществляемый методом drag-and-drop, ничем не отличается от передачи через буфер обмена. Внедрение В составных документах часто хранится информация из разных источников, не связанных между собой. Например, текстовый документ MicrosoftWordможет содержать электронную таблицу Excelи точечный рисунок из программы Paint. До появления OLEдиаграммы и точечные рисунки можно было копировать в текстовый документ лишь через буфер обмена. Как только объект помещался в новый документ, он терял все связи с приложением, в котором был создан. Объект превращался в статическое, мертвое изображение. Если со временем возникала необходимость внести в такой объект изменения, пользователю приходилось возвращаться к исходному приложению, вносить изменения в оригинал, копировать новый объект и замещать им старый. В описываемом случае Word является контейнером, a Excel и Paint- серверами. Иными словами, контейнер содержит объекты, созданные в других приложениях, а сервер - это приложение, являющееся источником самих объектов. В качестве примера мы рассмотрим внедрение в документ Word объекта Paint. Запустите программу MicrosoftWord. Типичное окно Word с введенным текстом показано на рис. 21.1.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |