描述:
调用SafeArray传入BYTE数组到OCX为什么不成功?只有25分了,大侠救救呀!!!
以下为我的代码:
long CTESTCtrl::CvtData(const VARIANT FAR& sArray)
{
char* buff; //unsigned char* buff;
//unsigned char m_abBinaryData[512];
if (sArray.vt == (VT_ARRAY | VT_UI1)) {
long Dims = SafeArrayGetDim(sArray.parray);
long UpperBounds;
long LowerBounds;
if (Dims == 1) {
SafeArrayGetLBound(sArray.parray, 1, &LowerBounds);
SafeArrayGetUBound(sArray.parray, 1, &UpperBounds);
SafeArrayAccessData (sArray.parray, (void**)&buff);
/*for (int i = 0; i < UpperBounds; i++) {
m_abBinaryData[i] = buff[i];
buff[i] = 0;
}*/
SafeArrayUnaccessData(sArray.parray);
return 1;
}
}
}
解决方案1:
传入参数不要使用VARIANT,用BSTR。把你要传的array解析到JSON中,使用JSon数组。