一个定义
CComQIPtr pEnum( resultV.punkVal );报错error C2955: 'CComQIPtr' : use of class template requires template argument list
        c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(715) : see declaration of 'CComQIPtr'此CPP已经包含了 #include <atlbase.h>如何解决,谢谢?其实我最终目的是解决JS传到VC里的数组参数问题,谁有这方面的例子?再次感谢
信箱[email protected]谢谢

解决方案 »

  1.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=188114
      

  2.   

    我在VC里是用VARIANT来解决VB/VBS/JS传参数的问题的 if (Buffer.vt == (VT_VARIANT | VT_BYREF)) //VB Script 
    {
    USES_CONVERSION;
    pv = Buffer.pvarVal ;
    psa = *(Buffer.pvarVal->pparray);
    }
    else if(Buffer.vt == (VT_UI1 | VT_ARRAY))    //VB
    {
    psa = Buffer.parray;
    }但是如果是JavaSrcipt用的是VT_DISPATCH类型,如何处理呢?或者有谁告诉我:一个定义
    CComQIPtr pEnum( resultV.punkVal );报错error C2955: 'CComQIPtr' : use of class template requires template argument list
            c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(715) : see declaration of 'CComQIPtr'此CPP已经包含了 #include <atlbase.h>如何解决,谢谢
      

  3.   

    需要这样写:
    CComQIPtr<IEnum, &IID_Enum> pEnum( resultV.punkVal );
    差不多等同于:
    HRESULT hr;
    IEnum *pEnum;
    if( FAILED( hr = resultV.punkVal->QueryInterface( IID_IEnum, (void **)pEnum ) ) )
    {
        return hr;
    }当然,使用这中方式可以不考虑pEnum释放问题!
      

  4.   

    你需要指定你将要查询的目标接口类型和GUID
      

  5.   

    IEnum 是???COM很菜,刚用
      

  6.   

    IEnum什么都不是,应该是你需要查询出来的接口定义
    比如说IHTMLDocument2或者其他的
      

  7.   

    如果是JavaSrcipt用的是VT_DISPATCH类型,那么说明JavaScript传递的将是一个对象,而每中对象都应该是实现某些组件的一部分,你需要明确需要传递的对象类型及起对应的接口.如果你无法预知传递的对象类型,个人建议你查询IDispatch接口,并把该接口传递给那些用这个接口的人(类),他们应该知道这些接口的类型