使用ocx控件输出数组参数

参数类型为VARIANT*,为可变类型的数组,本例子输出的是字符串数组

STDMETHODIMP CStarSoftMap::GetQueryResultToArray(LONG* nSum, VARIANT* vQuery)

{

     AFX_MANAGE_STATE(AfxGetStaticModuleState());

 

     *nSum=m_nQueryNum;

     CString str=m_strQuery;

 

     VariantClear(vQuery);

 

     SAFEARRAY * pSA;

     // Create the safearray.

     SAFEARRAYBOUND sabRSarray[1];  // A one-dimensional array.

     sabRSarray[0].cElements=*nSum;       // Two elements.

     sabRSarray[0].lLbound=0;         //Lower bound of array.

 

     pSA=SafeArrayCreate(VT_VARIANT,1, sabRSarray);

 

     _variant_t var1;

     long ndex;

     CString strTmp;

     int iStart = 0;

     for(int i = 0; i< *nSum; i++)

     {

         iStart = str.Find(";");

         strTmp = str.Left(iStart);

         str = str.Mid(iStart + 1);

         var1.vt = VT_BSTR;

         var1.bstrVal = strTmp.AllocSysString();

         ndex = i;

         SafeArrayPutElement(pSA, &ndex, &var1);

     }

     vQuery->vt = VT_ARRAY|VT_VARIANT;

     vQuery->parray = pSA;

     return S_OK;

}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值