用MFC进行COM编程,在CCmdTarget中派生了一个类CAA,支持自动化,现在我想添加一个自定义接口
1.在idl文件中,添加了
         [ uuid(50B738DE-FF12-4a47-979F-2B41F644A80A) ]
interface IIdlIest : IUnknown
{ //普通接口没有属性
     [id(3), helpstring("方法ScriptIDL")] void ScriptIDL(void); };
         
         [ uuid(3B2AA5BC-7D8E-4492-AEED-5316422FB8F9) ]  //标识Comd对象的uuid
coclass ObjectComTest
{
[default] dispinterface IObjectComTest;
 interface     IIdlIest; };
2.在CAA.cpp的接口映射表中
         BEGIN_INTERFACE_MAP(CObjectComTest, CCmdTarget)
  INTERFACE_PART(CObjectComTest, IID_IObjectComTest, Dispatch)
  INTERFACE_PART(CObjectComTest, IID_IIdlIest, IdlIest)  
         END_INTERFACE_MAP()
3.然后实现了void ScriptIDL(void);
现在编译总出现一个错误error C2039: “m_xIdlIest”: 不是“CObjectComTest”的成员
是不是哪里还需要声明这个IIdlIest接口??

解决方案 »

  1.   

    先用以下的看看
    BEGIN_INTERFACE_PART(IdlIest, IIdlIest)
    END_INTERFACE_PART(IdlIest)
      

  2.   

    这种方法我已经实现过了,相当于内嵌类的方法添加接口,而我是想在IDL中修改来添加接口
      

  3.   

    做过类似的,你可能会造成 代理和存根dll没有注册。
      

  4.   

    使用向导添加吧,所有的接口都是在IDispath这个接口里面,也就是说你要加在CXXXctrl这个类里面,最好的方法就是用向导。
      

  5.   

    INTERFACE_PART(CObjectComTest, IID_IIdlIest, IdlIest) 
    IID_IIDLIest是否打错了,是不是应该改成IID_IIDLTest
      

  6.   

    INTERFACE_PART(CObjectComTest, IID_IIdlIest, IdlIest)  
    IID_IIDLIest是否打错了,是不是应该改成IID_IIDLTest