Основы COM. Рудалев В.Г - 24 стр.

UptoLike

24
2. Доработайте клиентский проект, предусмотрев возможность обращения к
методам также через IDispatch и диспинтерфейс.
3. Перепишите обработчик btLoadClick, используя явный вызов Query-
Interface.
2.2. Внутренний сервер
2.2.1. Создание сервера
Сначала Вы должны создать библиотеку , оформленную с учетом требований
COM. Это делается при помощи мастера File - New ActiveX - ActiveX Library.
При его выборе будет создан новый проект, реализующий DLL, и сгенериро -
ван следующий код :
Library Project1;
uses
ComServ;
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;
{$R *.RES}
begin
end.
Созданная DLL экспортирует четыре функции, необходимые для работы COM.
Далее эту библиотеку необходимо преобразовать в COM-сервер. Сохраните ее с
именем InProcServer и вызовите мастер « COM-object» . В появившемся диалоге
в поле Class Name (имя компонентного класса ) введите ChangeImage. Поля
Instansing, Threading Model заполните в соответствии с рекомендациями п.2.1.
Флаг Include Type Library приводит к включению в сервер библиотеки типов .
Флаг Mark interface OleAutomation делает COM-сервер совместимым с OLE
Automation, что вынудит Вас использовать в методах интерфейса только со -
вместимые с OLE Automation типы данных. Поле Implemented interfaces пока -
зывает имя интерфейса COM-объекта по умолчанию. Его можно заменить , вве-
дя, например ISetImage.
В редакторе библиотеке типов для интерфейса ISetImage создайте метод
Paint. Paint имеет два параметра . Через входной параметр FileName
строкового типа передается имя графического файла. Тип выходного параметра
Destination, через который измененное изображение будет передаваться
клиенту , определите как Picture**. Редактор заменит его типом IPic-
tureDisp.
                                        24
2. Д оработай те кли ентски й проект, пред усмотрев в оз мож ность обращ ени я к
метод ам такж ечерез IDispatch и д и спи нтерфей с.
3. Перепи ш и те обработчи к btLoadClick, и спольз уя яв ны й в ы з ов Query-
Interface.


2.2. Внут ре нни й се рв е р
2.2.1. Соз д ани есервера
Сначала В ы д олж ны соз д ать би бли отеку, оформленную с учетом требов ани й
COM. Э то д елаетсяпри помощ и мастера File - New –ActiveX - ActiveX Library.
При его в ы боре буд етсоз д ан нов ы й проект, реали з ую щ и й DLL, и сгенери ро-
в ан след ую щ и й код :
Library Project1;
uses
  ComServ;
exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;
{$R *.RES}
begin
end.
Соз д анная DLL экспорти руетчеты рефункци и , необход и мы ед ля работы COM.
Д алееэту би бли отеку необход и мо преобраз ов ать в COM-серв ер. Сохрани тееес
и менем InProcServer и в ы з ов и темастер«COM-object» . В появ и в ш емсяд и алоге
в поле Class Name (и мя компонентного класса) в в ед и те ChangeImage. Поля
Instansing, Threading Model з аполни те в соотв етств и и с рекоменд аци ями п.2.1.
Ф лаг Include Type Library при в од и т кв клю чени ю в серв ерби бли отеки ти пов .
Ф лаг Mark interface OleAutomation д елает COM-серверсов мести мы м с OLE
Automation, что в ы нуд и т В ас и спольз ов ать в метод ах и нтерфей са только со-
в мести мы есOLE Automation ти пы д анны х. ПолеImplemented interfaces пока-
з ы в аети мяи нтерфей са COM-объекта по умолчани ю . Е го мож но з амени ть, в в е-
д я, напри мерISetImage.
В ред акторе би бли отеке ти пов д ля и нтерфей са ISetImage соз д ай те метод
Paint. Paint и меет д в а параметра. Ч ерез в ход ной параметр FileName
строков ого ти па перед аетсяи мяграфи ческого фай ла. Т и п в ы ход ного параметра
Destination, через которы й и з мененное и з ображ ени е буд ет перед ав аться
кли енту, опред ели те как Picture**. Ред актор з амени т его ти пом IPic-
tureDisp.