Compartir a través de


Clase CComVariant

Esta clase encapsula el tipo VARIANT, proporcionando un miembro que indica el tipo de los datos almacenados.

Sintaxis

class CComVariant : public tagVARIANT

Miembros

Constructores públicos

Nombre Descripción
CComVariant::CComVariant Constructor .
CComVariant::~CComVariant El destructor .

Métodos públicos

Nombre Descripción
CComVariant::Attach Adjunta un elemento VARIANT al objeto CComVariant.
CComVariant::ChangeType Convierte el objeto CComVariant en un nuevo tipo.
CComVariant::Clear Borra el objeto CComVariant.
CComVariant::Copy Copia un elemento VARIANT en el objeto CComVariant.
CComVariant::CopyTo Copia el contenido del objeto CComVariant.
CComVariant::Detach Desasocia el elemento VARIANT subyacente del objeto CComVariant.
CComVariant::GetSize Devuelve el tamaño, en número de bytes, del contenido del objeto CComVariant.
CComVariant::ReadFromStream Carga un VARIANT objeto desde una secuencia.
CComVariant::SetByRef Inicializa el objeto CComVariant y establece el miembro vt en VT_BYREF.
CComVariant::WriteToStream Guarda el elemento VARIANT subyacente en una secuencia.

Operadores públicos

Operator Descripción
CComVariant::operator < Indica si el objeto CComVariant es menor que el elemento VARIANT especificado.
CComVariant::operator > Indica si el objeto CComVariant es mayor que el elemento VARIANT especificado.
CComVariant::operator != Indica si el objeto CComVariant no es igual al elemento VARIANT especificado.
CComVariant::operator = Asigna un valor al objeto CComVariant.
CComVariant::operator == Indica si el objeto CComVariant es igual al elemento VARIANT especificado.

Comentarios

CComVariant encapsula el elemento VARIANT y el tipo VARIANTARG, que consta de una unión y un miembro que indica el tipo de los datos almacenados en la unión. Los elementos VARIANT normalmente se usan en la automatización.

CComVariant deriva del tipo VARIANT para que se pueda usar dondequiera que se pueda usar VARIANT. Por ejemplo, puede usar la macro V_VT para extraer el tipo de un objeto CComVariant o puede acceder al miembro vt directamente igual que puede con un elemento VARIANT.

Jerarquía de herencia

tagVARIANT
 └ CComVariant

Requisitos

Encabezado: atlcomcli.h

CComVariant::Attach

Borra de forma segura el contenido actual del objeto CComVariant, copia el contenido de pSrc en este objeto y, a continuación, establece el tipo variant de pSrc en VT_EMPTY.

HRESULT Attach(VARIANT* pSrc);

Parámetros

pSrc
[in] Apunta al elemento VARIANT que se va a adjuntar al objeto.

Valor devuelto

Un valor HRESULT estándar.

Comentarios

La propiedad de los datos contenidos por pSrc se transfiere al objeto CComVariant.

CComVariant::CComVariant

Cada constructor controla la inicialización segura del objeto CComVariant llamando a la función VariantInit de Win32 o estableciendo el valor y el tipo del objeto según los parámetros pasados.

CComVariant() throw();
CComVariant(const CComVariant& varSrc);
CComVariant(const VARIANT& varSrc);
CComVariant(LPCOLESTR lpszSrc);
CComVariant(LPCSTR lpszSrc);
CComVariant(bool bSrc);
CComVariant(BYTE nSrc) throw();
CComVariant(int nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned int  nSrc, VARTYPE vtSrc = VT_UI4) throw();
CComVariant(shor  nSrc) throw();
CComVariant(unsigned short nSrc) throw();
CComVariant(long  nSrc, VARTYPE vtSrc = VT_I4) throw();
CComVariant(unsigned long  nSrc) throw();
CComVariant(LONGLONG  nSrc) throw();
CComVariant(ULONGLONG  nSrc) throw();
CComVariant(float  fltSrc) throw();
CComVariant(double  dblSrc, VARTYPE vtSrc = VT_R8) throw();
CComVariant(CY  cySrc) throw();
CComVariant(IDispatch* pSrc) throw();
CComVariant(IUnknown* pSrc) throw();
CComVariant(const SAFEARRAY* pSrc);
CComVariant(char  cSrc) throw();
CComVariant(const CComBSTR& bstrSrc);

Parámetros

varSrc
[in] Elemento CComVariant o VARIANT utilizado para inicializar el objeto CComVariant. El contenido del elemento variant de origen se copia en el destino sin conversión.

lpszSrc
[in] Cadena de caracteres utilizada para inicializar el objeto CComVariant. Puede pasar una cadena de caracteres anchos (Unicode) terminada en cero a la versión LPCOLESTR del constructor o una cadena ANSI a la versión LPCSTR. En cualquier caso, la cadena se convierte en un elemento Unicode BSTR asignado mediante SysAllocString. El tipo del objeto CComVariant es VT_BSTR.

bSrc
[in] Valor de tipo bool utilizado para inicializar el objeto CComVariant. El argumento bool se convierte en un elemento VARIANT_BOOL antes de almacenarse. El tipo del objeto CComVariant es VT_BOOL.

nSrc
[in] Elemento int, BYTE, short, long, LONGLONG, ULONGLONG, unsigned short, unsigned long o unsigned int utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8, VT_UI8, VT_UI2, VT_UI4 o VT_UI4, respectivamente.

vtSrc
[in] Tipo del elemento variant. Cuando el primer parámetro es int, los tipos válidos son VT_I4 y VT_INT. Cuando el primer parámetro es long, los tipos válidos son VT_I4 y VT_ERROR. Cuando el primer parámetro es double, los tipos válidos son VT_R8 y VT_DATE. Cuando el primer parámetro es unsigned int, los tipos válidos son VT_UI4 y VT_UINT.

fltSrc
[in] Valor de tipo float utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_R4.

dblSrc
[in] Valor de tipo double utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_R8.

cySrc
[in] Valor de tipo CY utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_CY.

pSrc
[in] Puntero IDispatch o IUnknown utilizado para inicializar el objeto CComVariant. Se llama a AddRef en el puntero de interfaz. El tipo del objeto CComVariant es VT_DISPATCH o VT_UNKNOWN, respectivamente.

O bien, el puntero SAFERRAY utilizado para inicializar el objeto CComVariant. Se almacena una copia del objeto SAFEARRAY en el objeto CComVariant. El tipo del objeto CComVariant es una combinación del tipo original de SAFEARRAY y VT_ARRAY.

cSrc
[in] Valor de tipo char utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_I1.

bstrSrc
[in] Valor de tipo BSTR utilizado para inicializar el objeto CComVariant. El tipo del objeto CComVariant es VT_BSTR.

Comentarios

El destructor administra la limpieza mediante una llamada a CComVariant::Clear.

CComVariant::~CComVariant

El destructor .

~CComVariant() throw();

Comentarios

Este método administra la limpieza mediante una llamada a CComVariant::Clear.

CComVariant::ChangeType

Convierte el objeto CComVariant en un nuevo tipo.

HRESULT ChangeType(VARTYPE vtNew, const VARIANT* pSrc = NULL);

Parámetros

vtNew
[in] Nuevo tipo del objeto CComVariant.

pSrc
[in] Puntero al elemento VARIANT cuyo valor se convierte en el nuevo tipo. El valor predeterminado es NULL, lo que significa que el objeto CComVariant se convierte de forma local.

Valor devuelto

Un valor HRESULT estándar.

Comentarios

Si pasa un valor para pSrc, ChangeType usará este elemento VARIANT como origen para la conversión. De lo contrario, el objeto CComVariant es el origen.

CComVariant::Clear

Borra el objeto CComVariant mediante una llamada a la función VariantClear de Win32.

HRESULT Clear();

Valor devuelto

Un valor HRESULT estándar.

Comentarios

El destructor llama automáticamente a Clear.

CComVariant::Copy

Libera el objeto CComVariant y, a continuación, le asigna una copia del elemento VARIANT especificado.

HRESULT Copy(const VARIANT* pSrc);

Parámetros

pSrc
[in] Puntero al elemento VARIANT que se va a copiar.

Valor devuelto

Un valor HRESULT estándar.

CComVariant::CopyTo

Copia el contenido del objeto CComVariant.

HRESULT CopyTo(BSTR* pstrDest);

Parámetros

pstrDest
Apunta a un elemento BSTR que recibirá una copia del contenido del objeto CComVariant.

Valor devuelto

Un valor HRESULT estándar.

Comentarios

El objeto CComVariant debe ser de tipo VT_BSTR.

CComVariant::Detach

Desasocia el elemento VARIANT subyacente del objeto CComVariant y establece el tipo del objeto en VT_EMPTY.

HRESULT Detach(VARIANT* pDest);

Parámetros

pDest
[out] Devuelve el valor del elemento VARIANT subyacente del objeto.

Valor devuelto

Un valor HRESULT estándar.

Comentarios

El contenido del elemento VARIANT al que hace referencia pDest se borra automáticamente antes de asignar el valor y el tipo del objeto CComVariant que realiza la llamada.

CComVariant::GetSize

Para elementos VARIANT de tamaño fijo simple, este método devuelve el valor sizeof del tipo de datos subyacente más sizeof(VARTYPE).

ULONG GetSize() const;

Valor devuelto

Tamaño en bytes del contenido actual del objeto CComVariant.

Comentarios

Si el elemento VARIANT contiene un puntero de interfaz, GetSize consulta IPersistStream o IPersistStreamInit. Si se ejecuta correctamente, el valor devuelto es el orden bajo de 32 bits del valor devuelto por GetSizeMax más sizeof(CLSID) y sizeof(VARTYPE). Si el puntero de interfaz es NULL, GetSize devuelve sizeof(CLSID) más sizeof(VARTYPE). Si el tamaño total es mayor que ULONG_MAX, GetSize devuelve sizeof(VARTYPE), lo que indica un error.

En todos los demás casos, se fuerza un elemento VARIANT temporal de tipo VT_BSTR a partir del elemento VARIANT actual. La longitud de este elemento BSTR se calcula como el tamaño de la longitud de la cadena más la longitud de la propia cadena más el tamaño del carácter NULL más sizeof(VARTYPE). VARIANT Si no se puede coercirse en un VARIANT de tipo VT_BSTR, GetSize devuelve sizeof(VARTYPE).

El tamaño devuelto por este método coincide con el número de bytes usados por CComVariant::WriteToStream en condiciones correctas.

CComVariant::operator =

Asigna un valor y el tipo correspondiente al objeto CComVariant.

CComVariant& operator=(const CComVariant& varSrc);
CComVariant& operator=(const VARIANT& varSrc);
CComVariant& operator=(const CComBSTR& bstrSrc);
CComVariant& operator=(LPCOLESTR lpszSrc);
CComVariant& operator=(LPCSTR lpszSrc);
CComVariant& operator=(bool bSrc);
CComVariant& operator=(BYTE nSrc) throw();
CComVariant& operator=int nSrc) throw();
CComVariant& operator=(unsigned int nSrc) throw();
CComVariant& operator=(short nSrc) throw();
CComVariant& operator=(unsigned short nSrc) throw();
CComVariant& operator=(long nSrc) throw();
CComVariant& operator=(unsigned long nSrc) throw();
CComVariant& operator=(LONGLONG nSrc) throw();
CComVariant& operator=(ULONGLONG nSrc) throw();
CComVariant& operator=(float fltSrc) throw();
CComVariant& operator=(double dblSrc) throw();
CComVariant& operator=(CY cySrc) throw();
CComVariant& operator=(IDispatch* pSrc) throw();
CComVariant& operator=(IUnknown* pSrc) throw();
CComVariant& operator=(const SAFEARRAY* pSrc);
CComVariant& operator=(char cSrc) throw();

Parámetros

varSrc
[in] Objeto CComVariant o elemento VARIANT que se va a asignar al objeto CComVariant. El contenido del elemento variant de origen se copia en el destino sin conversión.

bstrSrc
[in] Elemento BSTR que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_BSTR.

lpszSrc
[in] Cadena de caracteres que se va a asignar al objeto CComVariant. Puede pasar una cadena de caracteres anchos (Unicode) terminada en cero a la versión LPCOLESTR del operador o una cadena ANSI a la versión LPCSTR. En cualquier caso, la cadena se convierte en un elemento Unicode BSTR asignado mediante SysAllocString. El tipo del objeto CComVariant es VT_BSTR.

bSrc
[in] Elemento bool que se va a asignar al objeto CComVariant. El argumento bool se convierte en un elemento VARIANT_BOOL antes de almacenarse. El tipo del objeto CComVariant es VT_BOOL.

nSrc
[in] Elemento int, BYTE, short, long, LONGLONG, ULONGLONG, unsigned short, unsigned long o unsigned int que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8, VT_UI8, VT_UI2, VT_UI4 o VT_UI4, respectivamente.

fltSrc
[in] Elemento float que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_R4.

dblSrc
[in] Elemento double que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_R8.

cySrc
[in] Elemento CY que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_CY.

pSrc
[in] Puntero IDispatch o IUnknown que se va a asignar al objeto CComVariant. Se llama a AddRef en el puntero de interfaz. El tipo del objeto CComVariant es VT_DISPATCH o VT_UNKNOWN, respectivamente.

O bien, un puntero SAFEARRAY que se va a asignar al objeto CComVariant. Se almacena una copia del objeto SAFEARRAY en el objeto CComVariant. El tipo del objeto CComVariant es una combinación del tipo original de SAFEARRAY y VT_ARRAY.

cSrc
[in] Carácter que se va a asignar al objeto CComVariant. El tipo del objeto CComVariant es VT_I1.

CComVariant::operator ==

Indica si el objeto CComVariant es igual al elemento VARIANT especificado.

bool operator==(const VARIANT& varSrc) const throw();

Comentarios

Devuelve TRUE si el valor y el tipo de varSrc son iguales al valor y al tipo, respectivamente, del objeto CComVariant. En caso contrario, es FALSE. El operador usa la configuración regional predeterminada del usuario para realizar la comparación.

El operador compara solo el valor de los tipos variant. Compara cadenas, enteros y números de punto flotante, pero no matrices ni registros.

CComVariant::operator !=

Indica si el objeto CComVariant no es igual al elemento VARIANT especificado.

bool operator!=(const VARIANT& varSrc) const throw();

Comentarios

Devuelve TRUE si el valor o el tipo de varSrc no son iguales al valor o al tipo, respectivamente, del objeto CComVariant. En caso contrario, es FALSE. El operador usa la configuración regional predeterminada del usuario para realizar la comparación.

El operador compara solo el valor de los tipos variant. Compara cadenas, enteros y números de punto flotante, pero no matrices ni registros.

CComVariant::operator <

Indica si el objeto CComVariant es menor que el elemento VARIANT especificado.

bool operator<(const VARIANT& varSrc) const throw();

Comentarios

Devuelve TRUE si el valor del objeto CComVariant es menor que el valor de varSrc. En caso contrario, es FALSE. El operador usa la configuración regional predeterminada del usuario para realizar la comparación.

CComVariant::operator >

Indica si el objeto CComVariant es mayor que el elemento VARIANT especificado.

bool operator>(const VARIANT& varSrc) const throw();

Comentarios

Devuelve TRUE si el valor del objeto CComVariant es mayor que el valor de varSrc. En caso contrario, es FALSE. El operador usa la configuración regional predeterminada del usuario para realizar la comparación.

CComVariant::ReadFromStream

Establece el elemento VARIANT subyacente en el elemento VARIANT contenido en la secuencia especificada.

HRESULT ReadFromStream(IStream* pStream);

Parámetros

pStream
[in] Puntero a la interfaz IStream de la secuencia que contiene los datos.

Valor devuelto

Un valor HRESULT estándar.

Comentarios

ReadToStream requiere una llamada anterior a WriteToStream.

CComVariant::SetByRef

Inicializa el objeto CComVariant y establece el miembro vt en VT_BYREF.

template < typename T >
void SetByRef(T* pT) throw();

Parámetros

T
Tipo del elemento VARIANT, por ejemplo, BSTR, int o char.

pT
Puntero utilizado para inicializar el objeto CComVariant.

Comentarios

SetByRef es una plantilla de función que inicializa el objeto CComVariant en el puntero pT y establece el miembro vt en VT_BYREF. Por ejemplo:

CComVariant var;
int nData = 10;
var.SetByRef(&nData);   

CComVariant::WriteToStream

Guarda el elemento VARIANT subyacente en una secuencia.

HRESULT WriteToStream(IStream* pStream);

Parámetros

pStream
[in] Puntero a la interfaz IStream de una secuencia.

Valor devuelto

Un valor HRESULT estándar.

Consulte también

Información general de clases