ATL:我想创建一个coclass,我可以将其用作我班级方法的参数。为什么我不能让这个工作?

时间:2009-03-30 17:48:30

标签: c++ parameters atl

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

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

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

从ATL向导提供的默认生成代码中,执行此操作所需的步骤是什么? (即,我在哪里以及为什么移动?)

1 个答案:

答案 0 :(得分:1)

如果你把你正在使用的IDL放在一边会有所帮助。

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

interface IMyFactory:IDispatch
{
  ...
};

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

但是我建议你传递像IUnknown *或IDispach *这些参数(如果它们是合适的),那么最后一个资源就是使用VOID *作为参数。