【问题标题】:ATL: I want to create a coclass that I can use as a parameter for a method in my class. Why can't I get this to work?ATL:我想创建一个可用作类中方法的参数的 coclass。为什么我不能让它工作?
【发布时间】:2010-10-16 10:40:00
【问题描述】:

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

我得到的错误是 MIDL2025:语法错误:期望“IgBrush”附近的类型规范。我正在使用 Visual Studio 2008。

当我添加一个枚举时,我记得我玩了很多 IDL,最终让它接受枚举作为参数。同班同学没有这样的运气。

根据 ATL 向导提供的默认生成代码,需要哪些步骤才能使其工作? (即,我将什么移动到哪里以及为什么?)

【问题讨论】:

    标签: c++ parameters atl


    【解决方案1】:

    如果你把你正在使用的 IDL 放在上面会有帮助。

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

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

    但我建议您传递 IUnknown* 或 IDispach* 之类的参数(如果合适的话),那么最后一个资源将使用 VOID* 作为参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      相关资源
      最近更新 更多