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
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.