我见到的例子无一例外都只支持一个IDispatch派生接口,在ATL中就可以方便支持多个IDispatch派生接口,在MFC工程中怎么实现呢?

解决方案 »

  1.   

    in .h
    BEGIN_INTERFACE_PART(MyInterface, IDispatch)
    INIT_INTERFACE_PART(C, MyInterface)
    STDMETHOD(GetTypeInfoCount)(unsigned int*);
    STDMETHOD(GetTypeInfo)(unsigned int, LCID, ITypeInfo**);
    STDMETHOD(GetIDsOfNames)(REFIID, LPOLESTR*, unsigned int, LCID, DISPID*);
    STDMETHOD(Invoke)(DISPID, REFIID, LCID, unsigned short, DISPPARAMS*,VARIANT*, EXCEPINFO*, unsigned int*);
    //add your function here
    END_INTERFACE_PART(MyInterface)
    ...
    //add another interface part
    in .cpp
    BEGIN_INTERFACE_MAP(C, CCmdTarget)
             INTERFACE_PART(C, IID_IDispatch, Dispatch)
             INTERFACE_PART(C, IID_IAuoInterface,Dispatch)
    INTERFACE_PART(C, IID_IMyInterface, MyInterface)
    END_INTERFACE_MAP() 
      

  2.   

    推荐不要这么做,否则会有歧义。
    好象有一个INTERFACE_PART2可以帮你做到这一点