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

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

当我添加枚举时,我想起了很多与IDL一起玩耍的方法,最终让它接受了枚举作为参数。同班同学没有这种运气。

从ATL向导提供的默认生成代码中,使该代码正常工作需要执行哪些步骤? (即,我该向何处以及为什么移动?)

最佳答案

如果您使用的是IDL,那会有所帮助。

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

interface IMyFactory:IDispatch
{
  ...
};

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


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

关于c++ - ATL:我想创建一个可以用作类中方法参数的协类。为什么我不能使它正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/698273/

10-12 00:18
查看更多