方法一:使用SafeArrayAllocDescriptor在栈上创建一维数组... 2
方法二:使用SafeArrayAllocDescriptor和SafeArrayAllocData在堆上创建一维数组... 2
方法三:使用SafeArrayAllocDescriptor和SafeArrayAllocData在堆上创建二维数组... 3
方法四:使用SafeArrayCreate在堆上创建一维数组... 4
方法五:使用SafeArrayCreate在堆上创建二维数组... 5
方法六:使用SafeArrayCreateEx创建包含结构的一维数组... 5
方法一:使用SafeArrayAccessData方法... 7
方法二:使用SafeArrayGetElement和SafeArrayPutElement7
SAFEARRAY使用总是困扰很多人,为了把这个问题说个明白,我把我目前掌握的知识做个总结
SAFEARRAY实际上是一个结构,关于这部分可以参考MSDN。
ms-help://MS.MSDNQTR.2003FEB.2052/automat/htm/chap7_9ntx.htm
我们不需要关心16位操作系统下的定义,因为我们团队只在WIN2000以上平台下开发。
方法一:使用SafeArrayAllocDescriptor在栈上创建一维数组
//创建SAFEARRAY数组,每个元素为long型,该数组是一维数组
long nData[10]={1,2,3,4,5,6,7,8,9,10};
SAFEARRAY* pArray=NULL;
HRESULT hr=SafeArrayAllocDescriptor(1,&pArray);//创建SAFEARRAY结构的对象
pArray->cbElements=sizeof(nData[0]);
pArray->rgsabound[0].cElements=10;
pArray->rgsabound[0].lLbo