亲宝软件园·资讯

展开

使用SAFEARRAY返回的代码

人气:0
想了解使用SAFEARRAY返回的代码的相关内容吗,在本文为您仔细讲解的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:使用SAFEARRAY返回的代码,下面大家一起来学习吧。
前天碰到有人问SAFEARRAY的问题,我正好对VB SCRIPT里面如何得到COM组件返回的数组感兴趣,就试验了一下。

IDE用的是VC7.1

开始都差不多,建立工程,建立COM对象,建立方法:

接口定义:

[id(2), helpstring("method GetArray")] HRESULT GetArray1([out,retval] VARIANT* v);

方法实现:
STDMETHODIMP CATL3::GetArray1(VARIANT * pvaVariant)
{
    std::vector< float> vct;
    vct.push_back(   11.4 );
    vct.push_back(   12.4 );
    vct.push_back(   14.4 );
    CComSafeArray<VARIANT> saMatrix;
    for ( int i = 0 ; i < vct.size(); ++i )
    {
        saMatrix.Add( CComVariant(vct[i]));
    }
    VariantInit(pvaVariant);
    CComVariant var( saMatrix );
    var.Detach( pvaVariant );
    return S_OK;
}

注意的一点就是:VBS或其它脚本环境中要得到返回数组参数,数组中的类型是VARIANT类型。

VBS测试脚本
Dim v4

Cnxn4.Add 1, 2 

v4 = Cnxn4.GetArray1()

Dim x

For x = Lbound(v4) To Ubound( v4 )
 MsgBox v4(x)
Next

加载全部内容

相关教程
猜你喜欢
用户评论