COleSafeArray类是用于处理任意类型和维数的数组的类。COleSafeArray是从OLE VARIANT结构派生而来的。OLE SAFEARRAY成员函数在可以通过COleSafeArray来访问,就像是特别为一维的字节数组所设计的成员函数集。
#include<afxdisp.h>
请参阅:COleVariant,CRecordset,CDatabase
COleSafeArray类成员
构造COleSafeArray构造一个COleSafeArray对象
操作Attach给COleSafeArray对象已存在的VARIANT数组的控制
Clear释放基VARIANT中的所有数据
Detach将VARIANT数组从COleSafeArray对象中分离出来(这将使数据不会被释放)
Win32 API包装AccessData获取一个指向数组数据的指针
AllocData为数组分配内存
AllocDescriptor为安全数组描述符分配内存
Copy创建一个已存在的数组的拷贝
Create创建一个安全数组
Destroy销毁一个已经存在的数组
DestroyData销毁一个安全数组中的数据
DestroyDescriptor销毁一个安全数组的描述符
GetDim返回数组的维数
GetElement获取安全数组中的一个单一元素
GetElemSize返回安全数组中一个元素的按字节表示的大小
GetLBound返回一个安全数组任一维的下界
GetUBound返回一个安全数组任一维的上界
Lock增加一个数组的加锁计数,并将一个指向数组数据的指针放到数组描述符中
PtrOflndex返回一个指向被索引的元素的指针
PtrElement将一个单一的元素放入数组中
Redim改变一个安全数组的最不重要(最右边)的边界
UnaccessData减小一个数组的加锁计数,并使由AccessData获得的指针无效
Unlock减小一个数组的加锁以使它能被释放或改变大小
一维数组操作CreateOneDim创建一个一维的COleSafeArray对象
GetOneDimSize返回一个一维的COleSafeArray对象中的元素个数
ResizeOneDim改变一个一维的COleSafeArray对象中的元素个数
操作operator = 将一些值(包括SAFEARRAY,VARIANT,COleVariant,或COleSafeArray对象)拷贝到COleSafeArray对象中
operator == 比较两个不同的数组(SAFEARRAY,VARIANT,COleSafeArray对象)
operator << 向转储描述表输出一个COleSafeArray对象的内容
operator LPVARIANT 访问COleSafeArray对象的基VARIANT结构
operator LPCVARIANT 访问COleSafeArray对象的基VARIANT结构
COleSafeArray::COleSafeArray
COleSafeArray();
COleSafeArray(const SAFEARRAY& saSrc,VARTYPE vtSrc);
COleSafeArray(LPCSAFEARRAY psaSrc,VARTYPE vtSrc);
COleSafeArray(const COleSafeArray& saSrc);
COleSafeArray(const VARIANT& varSrc);
COleSafeArray(LPCVARIANT pSrc);
COleSafeArray(const COleVariant& varSrc);
参数:saSrc要被拷贝到新的COleSafeArray对象中去的已经存在的COleSafeArray对象或SAFEARRAY。
vtSrc新的COleSafeArray对象的VARTYPE。
psaSrc一个指向要拷贝到新的COleSafeArray对象中去的SAFEARRAY的指针。
varSrc要被拷贝到新的COleSafeArray对象中去的已经存在的VARIANT或者COleVariant。
pSrc 一个指向要拷贝到新的COleSafeArray对象中去的VARIANT对象的指针。
说明:
这些构造函数都创建一个新的COleSafeArray对象。如果没有参数,则创建的是一个空的COleSafeArray对象(VT_EMPTY)。如果COleSafeArray是从另一个数组拷贝来的,并且这个数组的VARIANT并不是完全确定的(一个COleSafeArray,COleVariant,或者VARIANT),则源数组中的VARTYPE被保留,并且不需要说明。如果COleSafeArray是,从另一个数组拷贝而来,并且该数组的VARTYPE是不知道的,则VARTYPE必须用vtSrc参数来指定。
如果出错,则函数抛出一个CMemoryException或COleException。