0

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

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

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

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

4

1 回答 1

1

如果您放置您正在使用的 IDL,这会有所帮助。

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

interface IMyFactory:IDispatch
{
  ...
};

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

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

于 2009-03-30T18:41:46.673 回答