用atl写dll,method中return type及[out retval]参数选项怎么是灰的?
return type里填的是HRESULT,是灰的,根本没法改变。
参数里只有in选项框可用,out与retval都是灰的?
要求用atl写一个dll,实现一些方法,如输入两个整数,返回经过一些运算的结果,如加法。int add(int a, int b)
{
return a+b;
}可是在增加method过程中,发现return type是灰的,参数里out及retval也不可用。
(由于接口定义时要求返回运算结果,而不是传入指针参数,所以不好用HRESULT add(int a, int b, int* res))有什么办法吗?

解决方案 »

  1.   

    按照COM标准,必须是HRESULT返回值。
    因为你的类型不是指针,只有是指针类型,才能用[out retval],
    HRESULT add(int a, int b,int  * ret)学ATL前,最好了解一下COM标准。当你用VB或者其它脚本语言的调用的时候就可以这样写ret=obj.add(1,2)
      

  2.   

    按照COM标准,必须是HRESULT返回值。
    因为你的类型不是指针,只有是指针类型,才能用[out retval],
    HRESULT add(int a, int b,int  * ret)学ATL前,最好了解一下COM标准。当你用VB或者其它脚本语言的调用的时候就可以这样写ret=obj.add(1,2)
      

  3.   

    按照COM标准,必须是HRESULT返回值。
    因为你的类型不是指针,只有是指针类型,才能用[out retval]
    HRESULT add(int a, int b,int  * ret)学ATL前,最好了解一下COM标准。当你用VB或者其它脚本语言的调用的时候就可以这样写ret=obj.add(1,2)
      

  4.   

    idl中声明如下
    HRESULT add( int a,int b,[out,retval]int* res );参数选择int*就可以选择out retval了
      

  5.   

    另外,去了书城,居然没找到一本有关ATL的书籍。
    哪位能推荐一下么?
      

  6.   

    包括用atl写ocx,生成aa.ocx,而不是aa.dll,该怎么做?能介绍一本书么?
    之前我一直都是用MFC写。
    电子书更好。