描述:
VARIANT varCircle;
SAFEARRAY * psa;
SAFEARRAYBOUND rgbBound[2];
long ix[1];
unsigned int ndim = 2;
rgbBound[0].cElements=3;
rgbBound[0].lLbound=0;
rgbBound[1].cElements=4;
rgbBound[1].lLbound=0;
psa=SafeArrayCreate(VT_VARIANT,ndim,rgbBound);
VariantInit(&varCircle);
varCircle.vt=VT_I4;
for(long i=0;i<12;i++)
{
varCircle.lVal=i;
ix[0]=i;
if(DISP_E_BADINDEX==SafeArrayPutElement(psa,ix,&varCircle))
。。。
可是 SafeArrayPutElement(psa,ix,&varCircle))的返回值总是DISP_E_BADINDEX
请问各位 用 SAFEARRAY 创建多维安全数组。
谢谢!!
解决方案1:
主要是ix维数赋值的问题:可改成这样
VARIANT varCircle;
SAFEARRAY * psa;
SAFEARRAYBOUND rgbBound[2];
long ix[2];
unsigned int ndim = 2;
rgbBound[0].cElements=3;
rgbBound[0].lLbound=0;
rgbBound[1].cElements=4;
rgbBound[1].lLbound=0;
psa=SafeArrayCreate(VT_VARIANT,ndim,rgbBound);
VariantInit(&varCircle);
varCircle.vt=VT_I4;
for(long i=0;i<12;i++)
{
varCircle.lVal=i;
ix[0]=i % 3;
ix[1] = i / 4;
if(DISP_E_BADINDEX==SafeArrayPutElement(psa,ix,&varCircle))
break;
}