SAFEARRAY如何转换?

pkzl888 2003-10-17 06:16:38
如何将SAFEARRAY转换为char[],以及如何将unsigned char[] 转换为SAFEARRAY.请无比帮忙!感激不尽!
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldsjlzy 2003-10-18
  • 打赏
  • 举报
回复
SAFEARRAYBOUND Bound;
SAFEARRAY varValue;
long lIndex;
CString strValue;

Bound.cElements = 32;
Bound.lLbound = 0;

varValue.Clear();
varValue.vt = VT_ARRAY | VT_BSTR;
varValue.pArray = SafeArrayCreate(VT_BSTR, 1, &Bound);

for(int i = 0; i < 32; i++)
{
_bstr_ b = strValue[i].AllocSysString;
SafeArrayPutElement (varValue[i].parray, <emp, b.copy());
SysFreeString(b);
}

VariantClear(&varValue);
LeeZi 2003-10-18
  • 打赏
  • 举报
回复
查看MSDN吧,MSDN是最好的老师。
warmchang 2003-10-18
  • 打赏
  • 举报
回复
嗯,Lava_sdb(大波)的讲解够详细,呵呵,我就不说什么了。
shudingbo 2003-10-17
  • 打赏
  • 举报
回复
先SAFEARRAY中获取元素,再添进char中
如,下例中,Parames.parray 为 SAFEARRAY。
把它的元素,付给pReturn

你自己看看代码。
___________________

STDMETHODIMP CUnRealDraw::GetProData(int iProType, VARIANT Parames, VARIANT *pReturn)
{
// Get the parames

HRESULT hr=S_OK;
long lStartBound =0;
long lEndBound = 2;

hr = SafeArrayGetLBound(Parames.parray, 1, &lStartBound);
hr = SafeArrayGetUBound(Parames.parray, 1, &lEndBound);

SAFEARRAYBOUND safeBound[1];
SAFEARRAY* pOutArray;
safeBound[0].cElements = lEndBound-lStartBound+1;
safeBound[0].lLbound = 0;
pOutArray = SafeArrayCreate(VT_VARIANT,1,safeBound);


for(long iIndex = lStartBound; iIndex <= lEndBound; iIndex ++)
{

VARIANT varFlavor;
VariantInit(&varFlavor);

hr = SafeArrayGetElement(Parames.parray,&iIndex, &varFlavor);
if(hr != S_OK)
{
tt="error,can't find the value";
}
if(varFlavor.vt == VT_I4 )
{
long lsz = varFlavor.lVal;
}
if(varFlavor.vt == VT_BSTR )
{
_bstr_t bstrOut(varFlavor.bstrVal);
CComVariant variantFlavor(SysAllocString(varFlavor.bstrVal));
SafeArrayPutElement(pOutArray,&iIndex,&variantFlavor);

tt= bstrOut;
}

}//for loop

//......
//.......
//return the VARIANT
V_VT(pReturn)=VT_ARRAY | VT_VARIANT;
V_ARRAY(pReturn) = pOutArray;

return S_OK;
}

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧