CComSafeArray选件类

此选件类是 SAFEARRAY 结构的包装。

template <
   typename T,
   VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray

参数

  • T
    在数组中存储的数据类型。

成员

3xzbsee8.collapse_all(zh-cn,VS.110).gif公共构造函数

名称

说明

CComSafeArray::CComSafeArray

构造函数。

CComSafeArray::~CComSafeArray

该析构函数。

3xzbsee8.collapse_all(zh-cn,VS.110).gif公共方法

名称

说明

CComSafeArray::Add

添加一个或多个元素或一 SAFEARRAY 结构,以便 CComSafeArray

CComSafeArray::Attach

附加 SAFEARRAY 结构。CComSafeArray 对象。

CComSafeArray::CopyFrom

复制 SAFEARRAY 结构的内容复制到 CComSafeArray 对象。

CComSafeArray::CopyTo

创建 CComSafeArray 对象的一个副本。

CComSafeArray::Create

创建一个 CComSafeArray 对象。

CComSafeArray::Destroy

销毁 CComSafeArray 对象。

CComSafeArray::Detach

分离 CComSafeArray 对象的 SAFEARRAY

CComSafeArray::GetAt

从一维数组检索一个元素。

CComSafeArray::GetCount

返回元素数。数组的。

CComSafeArray::GetDimensions

返回中的维数。数组的。

CComSafeArray::GetLowerBound

返回数组的特定维度的下限。

CComSafeArray::GetSafeArrayPtr

返回 m_psa 数据成员的地址。

CComSafeArray::GetType

返回数组中存储的数据的类型。

CComSafeArray::GetUpperBound

返回数组的所有维度的上限。

CComSafeArray::IsSizable

如果 CComSafeArray 对象的大小进行调整,测试。

CComSafeArray::MultiDimGetAt

从多维数组检索一个元素。

CComSafeArray::MultiDimSetAt

设置一个元素的值在多维数组的。

CComSafeArray::Resize

调整 CComSafeArray 对象。

CComSafeArray::SetAt

设置一个元素的值在一维数组。

3xzbsee8.collapse_all(zh-cn,VS.110).gif公共运算符

名称

说明

CComSafeArray::operator LPSAFEARRAY

将值转换为 SAFEARRAY 指针。

CComSafeArray::operator []

从数组检索元素。

CComSafeArray::operator =

赋值运算符。

3xzbsee8.collapse_all(zh-cn,VS.110).gif公共数据成员

名称

说明

CComSafeArray::m_psa

此数据成员保存 SAFEARRAY 结构的地址。

备注

CComSafeArraySAFEARRAY Data Type 选件类提供一个包装,使其成为简单的内容创建和管理单和多维数组几乎任何变量支持的类型。

此外CComSafeArray 简化之间传递数组通过检查数组索引值处理和提供额外的安全上限和下限。

CComSafeArray 的下限开始在任何用户定义的值;但是,通过C++捕获的数组应使用下限0。其他语言(如Visual Basic能使用其他绑定值(例如,-10到10)。

使用 CComSafeArray::Create 创建 CComSafeArray 对象和 CComSafeArray::Destroy 删除它。

CComSafeArray 可以包含不同数据类型的以下部分:

VARTYPE

说明

VT_I1

char

VT_I2

short

VT_I4

int

VT_I4

long

VT_I8

longlong

VT_UI1

byte

VT_UI2

ushort

VT_UI4

uint

VT_UI4

ulong

VT_UI8

ulonglong

VT_R4

float

VT_R8

double

VT_DECIMAL

十进制指针

VT_VARIANT

不同的指针

VT_CY

货币数据类型

要求

Header: atlsafe.h

示例

// Create a multidimensional array, 
// then write and read elements

// Define an array of character pointers
CComSafeArray<char> *pSar;

char cElement;
char cTable[2][3] = {'A','B','C','D','E','F'};

// Declare the variable used to store the
// array indexes
LONG aIndex[2];

// Define the array bound structure
CComSafeArrayBound bound[2];
bound[0].SetCount(3);
bound[0].SetLowerBound(0);
bound[1].SetCount(3);
bound[1].SetLowerBound(0);   

// Create a new 2 dimensional array
// each dimension size is 3
pSar = new CComSafeArray<char>(bound,2); 

// Use MultiDimSetAt to store characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0] = x;
      aIndex[1] = y;
      HRESULT hr = pSar->MultiDimSetAt(aIndex,cTable[x][y]);
      ATLASSERT(hr == S_OK);
   }
}
// Use MultiDimGetAt to retrieve characters in the array
for (int x = 0; x < 2; x++)
{
   for (int y = 0; y < 3; y++)
   {
      aIndex[0]=x;
      aIndex[1]=y;
      HRESULT hr = pSar->MultiDimGetAt(aIndex,cElement);
      ATLASSERT(hr == S_OK);
      ATLASSERT(cElement == cTable[x][y]);
   }   
}

请参见

参考

SAFEARRAY Data Type

CComSafeArray::Create

CComSafeArray::Destroy

其他资源

ATL选件类概述