Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
14.3 Mб
Скачать

4. Определение собственных сообщений

В предыдущих разделах посылались и обрабатывались сообщения, предопределенные API Windows. Однако, вы можете описать свои собственные сообщения и работать с ними так же, как с предопределенными. ;

Номера своих собственных сообщений вы должны отсчитывать от константы -WM_USER, которая соответствует первому номеру сообщения пользователя.

Например, вы можете определить в своем приложении константы,

const WM_MyMessl = WM_USER;

WM_MyMess2 = WM_USER+1;

и затем оперировать с сообщениями WM_MyMessl и WM_MyMess2 как с предопределенными в Windows.

Контрольные вопросы:

  1. Опишите структуру обработки сообщения.

  2. Назовите функции, которые посылают сообщения.

  3. В чем различие функций, которые посылают сообщения?

  4. Как определить собственное сообщение?

Рекомендуемая литература: 1.1, 1.3, 1.8.

Лекция№27

Тема: Внедрение и связывание объектов — технология OLE

План:

1. Внедрение объектов

2. Технология связывания и внедрения объектов (OLE)

3. Многопоточные приложения

4. Технология применения объектов COM, DCOM

1. Внедрение объектов

Внедренные объекты могут редактироваться простым двойным щелчком мыши на соответствующем элементе данных. Например, можно дважды щелкнуть на электронной таблице Excel, встроенной в документ редактора Word, и в отдельном окне запускался Excel с загруженным рабочим листом, готовым к редактированию. После завершения редактирования Excel сохраняет изменения во внедренном в документ Word объекте Excel.

Другой особенностью является связывание объектов. Это позволяет связать электронную таблицу с документом Word (по сути внутри документа Word хранится просто указатель на электронную таблицу). Если данные в оригинале электронной таблицы обновляются, и при следующей загрузке документа Word ссылка обновляет документ и отражает в нем проведенные изменения.

Автоматизация OLE, которая обеспечивает доступ к объектам приложения и манипуляцию с ними извне. Такие объекты, предоставленные (экспонированные) для внешнего пользования, называются автоматными объектами OLE. Типы объектов, которые могут быть экспонированы, так же разнообразны, как и сами приложения Windows. Текстовый процессор мог бы экспонировать в качестве автоматного объекта документ, абзац или предложение. Электронная таблица могла бы экспонировать таблицу, диаграмму, ячейку или группу ячеек.

Главное отличие автоматных объектов от обычных объектов OLE состоит в том, что автоматные объекты доступны только программно, они создаются и используются при помощи программного кода и, следовательно, в принципе временны. Они не могут быть внедрены или связаны. Они могут существовать только в течение времени выполнения ваших программ и не видны непосредственно конечному пользователю.

Существуют два типа автоматных серверов: внутри-процесса и вне-процесса (их еще называют локальными). Delphi поддерживает оба типа серверов.

Сервер внутри процесса является DLL (динамически связываемой библиотекой), которая экспортирует автоматные объекты. Поскольку автоматные объекты поставляются из DLL, а не из других приложений, они являются частью приложения клиента. Это избавляет от больших накладных расходов, сопутствующих каждому вызову автоматного сервера.

Сервер вне-процесса — это автономный исполняемый файл, экспортирующий автоматные объекты. Примером этого мог бы быть Microsoft Word. Word имеет некоторое количество объектов, которые он экспонирует в качестве автоматных. Позже будет приведен пример использования Word как автоматного сервера.

Автоматизация OLE, чтобы функционировать правильно, опирается на три различных источника информации: классы, документы и элементы.

Класс OLE определяет приложение сервера, которое создает автоматный объект. Например, если класс объекта — документ .doc, то он был создан с помощью Word.

Документы OLE ссылаются на исходный файл, содержащий данные объекта OLE. Любой документ OLE должен быть связанным документом (т. е. не внедренным), потому что данные связанных документов должны храниться в файле.

Элемент OLE определяет, какая часть документа содержит данные, подлежащие связыванию или внедрению в другой документ. Это способ, с помощью которого вы можете вместо целого документа связывать с другими документами лишь небольшую часть его данных. Элементы OLE позволяют сократить размеры объектов.