提供一段vc的代码作为参考:
//输出数据
SAFEARRAY* psa;
SAFEARRAYBOUND rgBound[1];
rgBound[0].lLbound = 0;
rgBound[0].cElements = dwDibSize - sizeof(BITMAPINFOHEADER) - nPaletteEntries * sizeof(RGBQUAD)
+ sizeof(DATATYPE);
psa = SafeArrayCreate(VT_UI1, 1, rgBound);
memcpy(psa->pvData, &DataType, sizeof(DATATYPE));
memcpy((unsigned char*)psa->pvData + sizeof(DATATYPE),
pDibBits,
dwDibSize - sizeof(BITMAPINFOHEADER) - nPaletteEntries * sizeof(RGBQUAD));
vtGreyData->vt = VT_ARRAY|VT_UI1;
vtGreyData->parray = psa;