VS7. Подключение к COM-events через __hook
От: Andy77 Ниоткуда  
Дата: 09.07.02 16:17
Оценка:
:crash:

что же я делаю неправильно?
имеем событийный интерфейс (оставил только существенное)...

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


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

#pragma once

#import "GenericPlateData.tlb" no_namespace

[event_receiver(com)]
class PlateDataEventsReceiver
{
public:

   PlateDataEventsReceiver() {}
   virtual ~PlateDataEventsReceiver() {}

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

   HRESULT onChange() { return S_OK; }
};


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

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
The event type of '_IPlateDataEvents' is 'native'.
The event type of 'PlateDataEventsReceiver' is 'COM'.

действительно, в .tli и .tlh _IPlateDataEvents объявлен как простой интерфейс, что же делать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.