Взаимодействие приложения с внешними программами_______________395

// модуль UlMess2.cpp

void _fastcall TFormI::OnMyPost(TMessageS a)
{
Label2->Caption = "Получено письмо " + IntToStr(a.LParam);

»

В объявлении и реализации обработчика использован тип TMessage — стан-
дартный тип параметра сообщения Windows.

Можете запускать приложения и убедиться, что послание нормально переда-
ется и воспринимается. Конечно, это просто демонстрация возможностей обмена
собственными сообщениями. В реальных приложениях можно по номеру парамет-
ра оператором switch выбирать тот или иной вид реакции приложения на получен-
ное сообщение.

6.4 Внедрение и связывание объектов — OLE
6.4.1 Общие сведения

Прежде, чем рассматривать реализацию в C++Builder технологии внедрения и
связывания объектов OLE (произносится «оле» с ударением на последний слог),
остановимся на некоторых базовых понятиях. Эта технология появилась как OLE
1.0 в Windows 3.1 и означала, что пользователь мог создавать сложные составные
документы, в которых содержались объекты различного происхождения. Внедрен-
ные объекты могли редактироваться простым двойным щелчком мыши на соот-
ветствующем элементе данных. Например, можно было дважды щелкнуть на элек-
тронной таблице Excel, встроенной в документ редактора Word, и в отдельном
окне запускался Excel с загруженным рабочим листом, готовым к редактирова-
нию. После завершения редактирования Excel позволял сохранить изменения во
внедренном в документ Word объекте Excel.

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

Дальнейшее развитие внедрение и связывание получило в OLE 2.0. Основой
этого усовершенствованного подхода явилась компонентная модель объекта
(СОМ). Это модель объекта в системном обеспечении, которая предусматривает
полную совместимость во взаимодействии между компонентами, написанными
разными компаниями и на разных языках. Ключом к успеху является модуль-
ность этих компонентов. Они могут покупаться, модернизироваться или заменять-
ся поодиночке или группами, причем это никак не влияет на работу целого.

СОМ определяет двоичный интерфейс, полностью независимый от языка про-
граммирования, использованного при реализации компонента. Компонент, напи-
санный в соответствии со спецификациями двоичного интерфейса СОМ, может
вступать во взаимодействие с другим компонентом, не зная в действительности ни-
чего о реализации последнего.

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