使用Vc6.0的向导ATC COM APPWizard 建立了一个Com对象CSimpleObj,其具有两个接口:
ISimpleObj,_ISimpleObjEvents。并且实现了事件接口。
注册后,在客户端使用import指令来导入该类型库信息。  ISimpleObjPtr objPtr;
  objPtr.CreateInstance("ATLCOM.SimpleObj");
  objPtr->Method1();   //需要回调客户(事件)怎样创建/获取事件对象(接口)?怎样实现事件?怎样与ISimpleObjPtr所指对象关联?  谢谢!

解决方案 »

  1.   

    Idl如下:
    [
    uuid(826760BB-1B2A-4652-A989-313F1A03D852),
    helpstring("_ISimpleObjEvents Interface")
    ]
    dispinterface _ISimpleObjEvents
    {
    properties:
    methods:
    [id(1), helpstring("method EventMethod")] void EventMethod([in] long inVal);
    }; [
    uuid(0AA4DCD0-C9A4-4C63-BB28-0A88174895E7),
    helpstring("SimpleObj Class")
    ]
    coclass SimpleObj
    {
    [default] interface ISimpleObj;
    [default, source] dispinterface _ISimpleObjEvents;
    };连接点实现如下:
    template <class T>
    class CProxy_ISimpleObjEvents : public IConnectionPointImpl<T, &DIID__ISimpleObjEvents, CComDynamicUnkArray>类定义如下:
    class ATL_NO_VTABLE CSimpleObj : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CSimpleObj, &CLSID_SimpleObj>,
    public IConnectionPointContainerImpl<CSimpleObj>,
    public IDispatchImpl<ISimpleObj, &IID_ISimpleObj, &LIBID_ATLCOMLib>,
    public CProxy_ISimpleObjEvents< CSimpleObj >
    {
    ......
    };
      

  2.   

    请参考文档
    http://www.codeproject.com/com/connectionpoint.asp