Не ловятся события _IDeviceProxyEvents
От: MicroCephalis Россия  
Дата: 08.04.08 04:59
Оценка:
Добрый день. У меня есть следующее объявление в IDL-файле
[
  uuid(157E83C8-70E4-4797-847C-5ADCA62A8797),
  version(1.0),
  helpstring("GCA 1.0 Type Library")
]
library GCALib
{

...

    [
      uuid(7B8A3B8E-687A-416E-9FEB-91D01031650E),
      helpstring("_IDeviceProxyEvents Interface")
    ]
    dispinterface _IDeviceProxyEvents {
        properties:
        methods:
            [id(0x00000001)]
            HRESULT ConnectionStateChanged(
                            [in] IDispatch* EventSource, 
                            [in] ConnectResultEnum State);
            [id(0x00000002)]
            HRESULT DeviceEventReceived(
                            [in] IDispatch* EventSource, 
                            [in] IEvent* Event);
    };
}

Есть класс-обработчик, выглядящий так:

class Device 
    : public IDispEventImpl<1, Device, &DIID__IDeviceProxyEvents, &LIBID_GCALib, 1, 0>
    ...
{
        ...

    BEGIN_SINK_MAP(Device)
        SINK_ENTRY_EX(1, DIID__IDeviceProxyEvents, 1, OnConnectionStateChanged)
    END_SINK_MAP()

        ...

    HRESULT Init()
    {
                ...

        CComPtr<IDeviceConnector> pDevProxy;
        if (SUCCEEDED(pDevProxy.CoCreateInstance(CLSID_DeviceProxy, NULL, CLSCTX_INPROC_SERVER)))
        {
            ...
            DispEventAdvise(pDevProxy, &DIID__IDeviceProxyEvents);
        }
    }

        ...

    HRESULT _stdcall OnConnectionStateChanged(IDispatch *EventSource, ConnectResultEnum State)
    {
    }
}


И хотя подпись проходит успешно, события объекта не попадают в мой обработчик. Что сделано не так, подскажите плиз?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.