Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 138

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 132 133 134 135 136 137 < 138 > 139 140 141 142 143 144 .. 173 >> Следующая

Чтобы определить, содержит ли буфер данные, соответствующие указанному формату, вызовите функцию : : IsClipboardFormatAvailable.
Глава 24
Использование механизма OLE
• Внедрение, связывание и автоматизация
• Создание программы-сервера
• Создание программы-контейнера
В предыдущей главе вы узнали, как с помощью буфера обмена выполняется передача данных из одной программы в другую. Программа, принимающая данные, должна быть способна отображать и изменять их. При этом формат данных должен входить в относительно небольшой набор стандартных форматов, воспринимаемых большинством программ. Если принимающая программа не может редактировать и изменять данные (например, текстовый процессор может отображать текст, но не может редактировать растровое изображение), то необходимо вручную переключиться на исходную программу, отредактировать или вновь создать данные, а затем повторить все операции копирования и вставки.
Механизм OLE — Object Linking and Embedding (связывание и внедрение объектов) — метод обмена данными между программами, позволяющий преодолеть эти ограничения. После добавления данных в документ принимающей программы он поддерживает связь с создавшей его исходной программой. Принимающей программе не нужно воспринимать формат данных, так как за их отображение и редактирование отвечают исходная программа и механизм OLE. При редактировании данных исходная программа запускается автоматически, вследствие чего команды редактирования становятся доступными. Следовательно, при использовании механизма OLE можно передавать данные в любом формате любой программе, которая способна их принять. Чтобы изменить данные в принимающей программе, не нужно вручную запускать исходную программу и даже помнить ее имя (хотя она должна быть инсталлирована).
Используя механизм OLE можно создать документ, содержащий блоки данных, созданных в различных программах. Такой документ называют составным (compound). Если данные собраны, то можно сосредоточиться на документе, не отслеживая различные исходные программы. Таком образом, OLE — это механизм. концентрирующий внимание на документе, а не на приложениях, в которых он был создан.
Как можно догадаться, чем больше удобств механизм OLE предоставляет пользователю, тем больше работы у программиста. В этой главе кратко рассмотрено введение в OLE-программирование (для подробного рассмотрения понадобилось бы несколько больших томов). Основное внимание уделяется использованию кода OLE, предоставляемого библиотекой MFC и мастерами Visual С++. Глава начинается с обзора трех основных механизмов OLE: внедрения, связывания и автоматизации. В следующем параграфе будет создан простой сервер OLE, являющийся исходной программой. Затем будет создан простой контейнер OLE, являющийся программой, принимающей данные OLE. В этих параграфах описан код, предоставляемый мастерами и библиотекой MFC, а также код, который необходимо добавить самостоятельно.
Внедрение, связывание и автоматизация
Сервер и контейнер OLE поддерживают механизмы внедрения объекта, связывания и автоматизации. Наиболее распространенным из них является внедрение объекта. Под термином объект подразумевается блок данных, созданных сервером и отображаемых в контейнере. При внедрении объекта приложение-контейнер сохраняет его как часть документа контейнера, в который вставлен дополнительный компонент данных.
Внедрить объект можно одним из двух способов. Первый: можно скопировать или вырезать блок данных из документа программы-сервера, а затем поместить его в документ программы-контейнера. Если данные заданы не в собственном формате программы-контейнера, то при выполнении команды Paste меню Edit программа-контейнер автоматически внедряет данные, а не просто статически передает содержимое буфера обмена, как описано в предыдущей главе. Обычно меню Edit контейнера содержит команду Paste Special для явного внедрения или передачи данных с помощью любого другого метода. Данные из документа сервера после их внедрения в контейнер утрачивают связь с оригиналом документа сервера. Таким образом, контейнер использует отдельную копию данных (изменение или удаление оригинала документа сервера на данных не отражается). Разновидностью этого метода передачи является обычная операция drag-and-drop, которая позволяет перетащить данные из окна документа сервера в окно документа контейнера.
Второй способ: чтобы внедрить объект, можно выбрать команду Insert New Object... в меню Edit программы-контейнера. (Эта команда может быть помещена в другое меню и иметь отличающееся название.) Отобразится диалоговое окно со списком объектов различных типов. (Каждая инсталлированная программа-сервер OLE регистрирует в реестре Windows один или более типов объектов. Эти типы перечисляются в диалоговом окне.) При выборе типа объекта OLE автоматически запускает программу-сервер, использующую команды для создания объекта данных. Второй способ полезен именно для создания нового блока внедренных данных, а не для внедрения уже существующего. Сервер и контейнер (будут описаны позже в этой главе) поддерживают этот способ внедрения объекта.
Предыдущая << 1 .. 132 133 134 135 136 137 < 138 > 139 140 141 142 143 144 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100