Re: VS7. Подключение к COM-events через __hook
От: Esperar  
Дата: 21.09.04 13:45
Оценка:
Здравствуйте, Andy77, Вы писали:

A>


A>что же я делаю неправильно?

A>имеем событийный интерфейс (оставил только существенное)...

A>
A>    dispinterface _IPlateDataEvents
A>    {
A>        properties:
A>        methods:
A>            [id(1), helpstring("Fired when plate size or labeling changed")] 
A>        HRESULT onChange();
A>    };
A>


A>теперь пишем класс для подключения к событиям


A>
A>#pragma once

A>#import "GenericPlateData.tlb" no_namespace

A>[event_receiver(com)]
A>class PlateDataEventsReceiver
A>{
A>public:

A>   PlateDataEventsReceiver() {}
A>   virtual ~PlateDataEventsReceiver() {}

A>   void hook(IUnknown* pSource)
A>   {
A>      __hook(&_IPlateDataEvents::onChange, pSource, &PlateDataEventsReceiver::onChange);
A>   }

A>   HRESULT onChange() { return S_OK; }
A>};

A>


A>и тут компилятор нам выдаёт


A>error C3731: incompatible event 'HRESULT _IPlateDataEvents::onChange(void)' and handler 'HRESULT PlateDataEventsReceiver::onChange(void)'; event source and event handler must have the same event type

A> The event type of '_IPlateDataEvents' is 'native'.
A> The event type of 'PlateDataEventsReceiver' is 'COM'.

A>действительно, в .tli и .tlh _IPlateDataEvents объявлен как простой интерфейс, что же делать?

ответьте если кто знает, тоже очень интересно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.