使用ocx控件输出数组参数

来源:互联网 发布:java工程师 考证书 编辑:程序博客网 时间:2024/06/06 03:33

参数类型为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;

}

 

原创粉丝点击