Klasa CComSafeArray
Ta klasa jest otoki dla SAFEARRAY struktury.
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Parametry
- T
Typ danych przechowywanych w tablicy.
Członkowie
Publiczne konstruktory
Nazwa |
Opis |
---|---|
Konstruktor. |
|
Destruktor. |
Metody publiczne
Nazwa |
Opis |
---|---|
Dodaje jeden lub więcej elementów lub SAFEARRAY struktury do CComSafeArray. |
|
Dołącza SAFEARRAY struktury do CComSafeArray obiektu. |
|
Kopiuje zawartość SAFEARRAY struktury do CComSafeArray obiektu. |
|
Tworzy kopię CComSafeArray obiektu. |
|
Tworzy CComSafeArray obiektu. |
|
Niszczy CComSafeArray obiektu. |
|
Odłącza SAFEARRAY z CComSafeArray obiektu. |
|
Pobiera pojedynczego elementu z tablicy jednowymiarowej. |
|
Zwraca liczbę elementów w tablicy. |
|
Zwraca liczbę wymiarów tablicy. |
|
Zwraca dolną granicę dla danego wymiaru tablicy. |
|
Zwraca adres m_psa elementu danych. |
|
Zwraca typ danych przechowywanych w tablicy. |
|
Zwraca górna granica dla każdego wymiaru tablicy. |
|
Badania, jeśli CComSafeArray rozmiar obiektu można zmieniać. |
|
Pobiera pojedynczego elementu z tablicy wielowymiarowej. |
|
Ustawia wartość elementu w tablicy wielowymiarowej. |
|
Zmienia rozmiar CComSafeArray obiektu. |
|
Ustawia wartość elementu w tablicy jednowymiarowej. |
Podmioty publiczne
Nazwa |
Opis |
---|---|
Rzuca wartości do SAFEARRAY wskaźnik. |
|
Pobiera element z tablicy. |
|
Operator przypisania. |
Publiczne danych członków
Nazwa |
Opis |
---|---|
Ten element danych zawiera adres SAFEARRAY struktury. |
Uwagi
CComSafeArrayzapewnia otoki dla SAFEARRAY Data Type klasy, co sprowadza do tworzenia i zarządzania jedno - i tablice wielowymiarowe z niemal dowolnego typu obsługiwane WARIANTU.
CComSafeArrayupraszcza przekazywanie tablic między procesami i dodatkowo zapewnia dodatkowe zabezpieczenie przez sprawdzanie tablicy wartości indeksu górnego i dolną.
Dolna granica CComSafeArray rozpoczynają się z wartości zdefiniowanych przez użytkownika; tablice, które są dostępne za pośrednictwem C++ należy jednak użyć dolną granicą 0.Inne języki, w tym Visual Basic może użyć innych wartości obwiedni (na przykład -10-10).
Użyj CComSafeArray::Create do tworzenia CComSafeArray obiektu, i CComSafeArray::Destroy go usunąć.
A CComSafeArray może zawierać następujące podzbiór wariant typów danych:
VARTYPE |
Opis |
---|---|
VT_I1 |
CHAR |
VT_I2 |
Krótka |
VT_I4 |
int |
VT_I4 |
długie |
VT_I8 |
LONGLONG |
VT_UI1 |
bajt |
VT_UI2 |
USHORT |
VT_UI4 |
uint |
VT_UI4 |
ULONG |
VT_UI8 |
ULONGLONG |
VT_R4 |
Pływak |
VT_R8 |
podwójne |
VT_DECIMAL |
wskaźnik dziesiętne |
VT_VARIANT |
wskaźnik wariantu |
VT_CY |
Typ danych Waluta |
Wymagania
Nagłówek: atlsafe.h
Przykład
// 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]);
}
}