代码之家  ›  专栏  ›  技术社区  ›  Christophe

ATL:我想创建一个coclass,可以用作类中方法的参数。为什么我不能让它工作?

  •  0
  • Christophe  · 技术社区  · 16 年前

    我用atl创建了一个com对象。我想创建一个新对象,它可以从方法返回,并作为参数传入。我已经创建了coclass,但是我不知道如何添加一个接受它作为参数的方法。

    我得到的错误是midl2025:语法错误:在“igbrush”附近需要类型规范。我正在使用visual studio 2008。

    当我添加了一个枚举时,我记得我经常使用idl,并最终让它接受枚举作为参数。跟小姑娘没什么好运气。

    从atl向导提供的默认生成代码中,需要哪些步骤才能使其工作?(即,我要搬到哪里?为什么?)

    1 回复  |  直到 15 年前
        1
  •  1
  •   Ismael Philip Pryde    16 年前

    如果你把你正在使用的idl放进去会有帮助的。

    要在MIDL中使用类型,必须先声明它。

    interface IMyFactory:IDispatch
    {
      ...
    };
    
    interface IMyObject:IDispatch
    {
      HRESULT SetFactory([in] IMyFactory * state);
    }
    

    但我建议您传递那些参数,如iunknown*或idispach*(如果它们是适当的),那么最后一个资源将使用void*作为参数。