- •Содержание
- •Управление памятью: хорошо, плохо и ужасно
- •Сегментированная память
- •Промежуточные решения
- •И, наконец, 32 бита
- •Выделение памяти
- •Библиотечные функции C
- •Фундаментальное выделение памяти в Windows 95
- •Перемещаемая память
- •Удаляемая память
- •Другие функции и флаги
- •Хорошо ли это?
- •Функции работы с "кучей"
- •Файловый ввод/вывод
- •Старый путь
- •Отличия Windows 95
- •Ввод/вывод с использованием файлов, проецируемых в память
- •Режимы многозадачности
- •Многозадачность в DOS
- •Невытесняющая многозадачность
- •Решения, использующие многопоточность
- •Многопоточная архитектура
- •Коллизии, возникающие при использовании потоков
- •Преимущества Windows
- •Новая программа! Усовершенствованная программа! Многопоточная!
- •Многопоточность в Windows 95
- •И снова случайные прямоугольники
- •Задание на конкурсе программистов
- •Решение с использованием многопоточности
- •О пользе использования функции Sleep
- •Синхронизация потоков
- •Критический раздел
- •Объект Mutex
- •Программа BIGJOB1
- •Объект Event
- •Локальная память потока
- •Печать, буферизация и функции печати
- •Контекст принтера
- •Формирование параметров для функции CreateDC
- •Измененная программа DEVCAPS
- •Вызов функции PrinterProperties
- •Проверка возможности работы с битовыми блоками (BitBlt)
- •Программа FORMFEED
- •Печать графики и текста
- •Каркас программы печати
- •Прерывание печати с помощью процедуры Abort
- •Реализация процедуры прерывания
- •Добавление диалогового окна печати
- •Добавление печати к программе POPPAD
- •Обработка кодов ошибок
- •Техника разбиения на полосы
- •Разбиение на полосы
- •Реализация разбиения страницы на полосы
- •Принтер и шрифты
- •Глава 16 Буфер обмена
- •Простое использование буфера обмена
- •Стандартные форматы данных буфера обмена
- •Передача текста в буфер обмена
- •Получение текста из буфера обмена
- •Открытие и закрытие буфера обмена
- •Использование буфера обмена с битовыми образами
- •Метафайл и картина метафайла
- •Более сложное использование буфера обмена
- •Использование нескольких элементов данных
- •Отложенное исполнение
- •Нестандартные форматы данных
- •Соответствующая программа просмотра буфера обмена
- •Цепочка программ просмотра буфера обмена
- •Функции и сообщения программы просмотра буфера обмена
- •Простая программа просмотра буфера обмена
- •Основные концепции
- •Приложение, раздел и элемент
- •Типы диалогов
- •Символьные строки и атомы
- •Программа сервер DDE
- •Программа DDEPOP1
- •Сообщение WM_DDE_INITIATE
- •Оконная процедура ServerProc
- •Функция PostDataMessage программы DDEPOP1
- •Сообщение WM_DDE_ADVISE
- •Обновление элементов данных
- •Сообщение WM_DDE_UNADVISE
- •Сообщение WM_DDE_TERMINATE
- •Программа-клиент DDE
- •Инициирование диалога DDE
- •Сообщение WM_DDE_DATA
- •Сообщение WM_DDE_TERMINATE
- •Управляющая библиотека DDE
- •Концептуальные различия
- •Реализация DDE с помощью DDEML
- •Элементы MDI
- •Windows 95 и MDI
- •Пример программы
- •Три меню
- •Инициализация программы
- •Создание дочерних окон
- •Дополнительная информация об обработке сообщений в главном окне
- •Дочерние окна документов
- •Освобождение захваченных ресурсов
- •Сила оконной процедуры
- •Основы библиотек
- •Библиотека: одно слово, множество значений
- •Пример простой DLL
- •Разделяемая память в DLL
- •Библиотека STRLIB
- •Точка входа/выхода библиотеки
- •Программа STRPROG
- •Работа программы STRPROG
- •Разделение данных между экземплярами программы STRPROG
- •Некоторые ограничения библиотек
- •Динамическое связывание без импорта
- •Библиотеки, содержащие только ресурсы
- •Глава 20 Что такое OLE?
- •Основы OLE
- •Связь с библиотеками OLE
- •Расшифровка кода результата
- •Интерфейсы модели составного объекта (COM-интерфейсы)
- •Услуги интерфейса IUnknown
- •Является ли OLE спецификацией клиент/сервер?
- •Сервер закрытого компонента
- •IMALLOC.DLL
- •Теперь о макросах
- •Услуги, предоставляемые интерфейсом IUnknown
- •Клиент закрытого компонента
- •Сервер открытого компонента
- •Назначение реестра
- •Способы генерации и использования идентификаторов CLSID
- •Компонент фабрика классов
- •Управление временем жизни сервера
- •Клиент открытого компонента
- •Заключение
Глава 20 Что такое OLE? |
20 |
OLE (Object Linking and Embedding) — это набор стандартов для связи и внедрения объектов при создании компонентов программного обеспечения. Одним из стандартов OLE является спецификация модели составного объекта (Component Object Model, COM), основа для бинарных соединений между компонентами. Другим определяющим элементом OLE является набор динамически подключаемых библиотек, являющихся частью
Windows 95 и Windows NT. Фирма Microsoft совместно с Digital, Software AG и Bristol Technologies приняла решение о переносе некоторых технологий из этих библиотек на платформы других операционных систем. Набор услуг, которые предлагает OLE, не постоянен. Microsoft постоянно модернизирует и расширяет операционную систему Windows, и точно также она готова развивать OLE, чтобы адаптировать к широкому диапазону требований по интеграции приложений. В соответствие с этим положением Network (сетевой) OLE, например, призван стать частью Windows NT версии 4.0, что даст возможность связывать компоненты в рамках сети.
OLE позволяет увеличить степень интеграции между программными модулями, для чего ранее требовались специальные условия, и следовательно является первым шагом в создании множества взаимозаменяемых компонентов программного обеспечения. Из такого множества пользователь мог бы в окне текстового процессора, купленного у одного поставщика, запускать программу проверки орфографии другого, а для предварительного просмотра выводимого на печать текста — программу третьего поставщика программного продукта.
К настоящему времени существует несколько категорий стандартных соединений OLE. Причем архитектура OLE не только допускает увеличение количества таких категорий, но делает неизбежным появление новых семейств соединений. До появления Windows 95 четырьмя основными категориями соединений OLE были: поддержка составных документов (compound document support), автоматизация OLE (OLE Automation), дочерние элементы управления OLE (OLE Controls) и расширенный интерфейс программирования приложений для обмена сообщениями (Extended Messaging Applications Programming Interface, Extended MAPI). Windows 95 добавила новое семейство компонентов OLE — расширения оболочки (shell extensions) — для создания тесной связи между программами-приложениями и рабочим столом (desktop) Windows 95. Другим OLE-компонентом, связанным с появлением Windows 95, является дочерний элемент управления диалогового окна — усовершенствованный редактор (Rich Edit Control), который представляет собой простой контейнер составных документов.
Контейнер составных документов (compound document container) создает составные документы (compound documents), в которых могут содержаться данные из разных, несвязанных между собой приложений. Контейнеры связываются с приложением-сервером объектов (object server) для обеспечения двунаправленного перемещения данных между сервером и составным документом. Примером составного документа является документ, образованный внедрением части электронной таблицы Excel в документ Microsoft Word for Windows. В этом примере данные из электронной таблицы Excel являются внедренным объектом (embedded object), а Word for Windows является контейнером составных документов. Однако из этого примера не видны все достоинства OLE, поскольку легко предположить, что между двумя программами одной фирмы существует некое соглашение. Поддержка составных документов OLE является действительно универсальной, что становится очевидным, когда программы нескольких независимых производителей — например, Adobe PageMaker или Micrografx Designer — обеспечивают такую же поддержку составных документов, как и Microsoft Word. В каждом из приложенийконтейнеров могут находиться объекты электронных таблиц Excel, рисованные объекты Corel Draw, диаграммы Visio или объекты данных из любого OLE-совместимого сервера объектов.
Автоматизация обеспечивает механизм определения набора макросов. Макросы состоят из методов (methods) (другое название вызовов функций) и свойств (properties) (то есть, элементов данных, которые можно читать и записывать, или только читать, или только записывать). Термин "объект автоматизации" (automation object) относится к такому компоненту OLE, который обеспечивает поддержку макропримитивов. "Контроллер автоматизации" (automation controller) манипулирует методами и характеристиками объекта автоматизации. С помощью определенных OLE-стандартов для автоматизации, среды программирования, например, Visual Basic
фирмы Microsoft, Delphi фирмы Borland или Power Builder фирмы PowerSoft, можно создавать контроллеры