idl中事件接口应该这样写,自动生成的不知为什么会不工作,我也碰到过
[
uuid(74C7C383-A5DA-11D5-8F3F-0080C87FA8D8),
dual,helpstring("IObj2Events Interface"),
pointer_default(unique)
]
interface IObj2Events : IDispatch
{
[id(1), helpstring("method Finished")] HRESULT Finished();
};

解决方案 »

  1.   

    [
    uuid(FF1813A3-A2A1-11D5-A985-0050BA59B944),
    version(1.0),
    helpstring("WD900ST 1.0 Type Library")
    ]
    library WD900STLib
    {
    importlib("stdole32.tlb");
    importlib("stdole2.tlb"); [
    uuid(FF1813B2-A2A1-11D5-A985-0050BA59B944),
    helpstring("_IBJWDgpsEvents Interface")
    ]
    dispinterface _IBJWDgpsEvents
    {
    properties:
    methods:
    [id(1), helpstring("消息通知 MesNotify")] HRESULT MesNotify([in]USHORT iFlag);
    }; [
    uuid(FF1813B1-A2A1-11D5-A985-0050BA59B944),
    helpstring("BJWDgps Class")
    ]
    coclass BJWDgps
    {
    [default] interface IBJWDgps;
    [default, source] dispinterface _IBJWDgpsEvents;
    };
    };这种的就是不能工作,但是我参考的例子却能很好的执行。自己添加的事件接口,通知函数应怎样做,是那种传递回调接口指针的那种吗
      

  2.   

    编译后在类符号上右击选择implement connection point,选择EVENT借口就可以啦