Sdílet prostřednictvím


Třída CComSafeArray

Tato třída je obal SAFEARRAY struktury.

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

Parametry

  • T
    Typ dat uložené v poli.

Členy

Veřejné konstruktory

Název

Description

CComSafeArray::CComSafeArray

Konstruktor.

CComSafeArray:: ~ CComSafeArray

Destruktoru.

Veřejné metody

Název

Description

CComSafeArray::Add

Přidá jeden nebo více prvků nebo SAFEARRAY do struktury CComSafeArray .

CComSafeArray::Attach

Připojí SAFEARRAY ke CComSafeArray objektu.

CComSafeArray::CopyFrom

Zkopíruje obsah SAFEARRAY do struktury CComSafeArray objektu.

CComSafeArray::CopyTo

Vytvoří kopii CComSafeArray objektu.

CComSafeArray::Create

Vytvoří CComSafeArray objektu.

CComSafeArray::Destroy

Ničí CComSafeArray objektu.

CComSafeArray::Detach

Odpojí SAFEARRAY z CComSafeArray objektu.

CComSafeArray::GetAt

Zkopíruje jeden prvek z jednorozměrná pole.

CComSafeArray::GetCount

Vrátí počet prvků v poli.

CComSafeArray::GetDimensions

Vrátí počet rozměrů pole.

CComSafeArray::GetLowerBound

Vrátí dolní mez pro danou dimenzi matice.

CComSafeArray::GetSafeArrayPtr

Vrátí adresu m_psa datový člen.

CComSafeArray::GetType

Vrátí typ dat uložených v poli.

CComSafeArray::GetUpperBound

Vrátí horní mez pro jakýkoli rozměr pole.

CComSafeArray::IsSizable

Pokud testy CComSafeArray můžete změnit velikost objektu.

CComSafeArray::MultiDimGetAt

Zkopíruje jeden prvek z multidimenzionální pole.

CComSafeArray::MultiDimSetAt

Nastaví hodnotu prvku v multidimenzionální pole.

CComSafeArray::Resize

Změní velikost CComSafeArray objektu.

CComSafeArray::SetAt

Nastaví hodnotu elementu jednorozměrná pole.

Veřejné operátory

Název

Description

CComSafeArray::operator LPSAFEARRAY

Vrhá hodnotu SAFEARRAY ukazatel.

[CComSafeArray::operator]

Prvek získá z pole.

CComSafeArray::operator =

Operátor přiřazení.

Veřejné datové členy

Název

Description

CComSafeArray::m_psa

Tento datový člen obsahuje adresu SAFEARRAY struktury.

Poznámky

CComSafeArrayposkytuje obal SAFEARRAY Data Type třídy, takže jednoduché věci vytvořit a spravovat jediný a vícedimenzionální pole téměř všech typů podporovaných VARIANT.

CComSafeArrayzjednodušuje předávání polí mezi procesy a také poskytuje další zabezpečení kontrolou hodnoty pole indexu proti horní a dolní meze.

Dolní mez CComSafeArray můžete spustit v libovolné hodnotě uživatelem definované; pole, které jsou přístupné pomocí C++ však měli použít dolní mez 0.Další jazyky, například Visual Basic může použít jiné hodnoty ohraničovacího rámečku (například -10 do 10).

Použití CComSafeArray::Create k vytvoření CComSafeArray objektu, a CComSafeArray::Destroy jej odstranit.

A CComSafeArray může obsahovat následující podmnožiny datové typy VARIANT:

VARTYPE

Description

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

desítkové ukazatel

VT_VARIANT

varianty ukazatel

VT_CY

Typ dat Měna

Požadavky

Záhlaví: atlsafe.h

Příklad

// 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]);
   }   
}

Viz také

Referenční dokumentace

CComSafeArray::Create

CComSafeArray::Destroy

Další zdroje

SAFEARRAY Data Type

Přehled třídy ATL