Classe de CComSafeArray
Cette classe est un wrapper pour la structure de SAFEARRAY .
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Paramètres
- T
Le type de données à stocker dans le tableau.
Membres
Constructeurs publics
Nom |
Description |
---|---|
Constructeur. |
|
Le destructeur. |
Méthodes publiques
Nom |
Description |
---|---|
Ajoute un ou plusieurs éléments, ou une structure de SAFEARRAY , à CComSafeArray. |
|
Joint une structure de SAFEARRAY à un objet d' CComSafeArray . |
|
Copie le contenu d'une structure de SAFEARRAY dans l'objet de CComSafeArray . |
|
Crée une copie de l'objet CComSafeArray. |
|
Crée un objet CComSafeArray. |
|
Détruit un objet CComSafeArray. |
|
Détache SAFEARRAY d'un objet d' CComSafeArray . |
|
Extrait un élément dans un tableau unique dimensionnelle. |
|
Retourne le nombre d'éléments du tableau. |
|
Retourne le nombre de dimensions du tableau. |
|
Retourne la limite inférieure d'une dimension du tableau. |
|
Retourne l'adresse des données membres d' m_psa . |
|
Retourne le type de données stocké dans le tableau. |
|
Retourne la limite supérieure pour toute dimension du tableau. |
|
Teste si un objet d' CComSafeArray peut être redimensionné. |
|
Extrait un élément dans un tableau multidimensionnel. |
|
Définit la valeur d'un élément dans un tableau multidimensionnel. |
|
Redimensionne un objet d' CComSafeArray . |
|
Définit la valeur d'un élément dans un tableau unique dimensionnelle. |
Opérateurs publics
Nom |
Description |
---|---|
Effectue une valeur à un pointeur de SAFEARRAY . |
|
Extrait un élément de tableau. |
|
Opérateur d'assignation |
Données membres publiques
Nom |
Description |
---|---|
Cette donnée membre contient l'adresse de la structure de SAFEARRAY . |
Notes
CComSafeArray fournit un wrapper pour la classe de SAFEARRAY Data Type , la transformant chose facile de créer et de gérer unique et des tableaux multidimensionnels de types Variante- charge presque l'un des.
CComSafeArray simplifie le passage de tableaux entre les processus, et en outre fournit la sécurité en vérifiant les valeurs d'index de tableau à la limite supérieure et les limites inférieures.
La limite inférieure d' CComSafeArray peut commencer à n'importe quelle valeur définie par l'utilisateur ; toutefois, les tableaux qui sont accessibles via C++ doivent utiliser une limite inférieure de 0.D'autres langages tels que Visual Basic peuvent utiliser d'autres valeurs des englobant (par exemple, -10 à 10).
Utilisation CComSafeArray::Create de créer un objet d' CComSafeArray , et CComSafeArray::Destroy pour le supprimer.
CComSafeArray peut contenir un sous-ensemble suivant de types de données 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 |
pointeur décimal |
VT_VARIANT |
pointeur variant |
VT_CY |
Type de données de devise |
Configuration requise
Header: atlsafe.h
Exemple
// 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]);
}
}