Compartilhar via


Classe CComVariant

Essa classe encapsula o tipo VARIANT, fornecendo um membro que indica o tipo de dados armazenados.

Sintaxe

class CComVariant : public tagVARIANT

Membros

Construtores públicos

Nome Descrição
CComVariant::CComVariant O construtor .
CComVariant::~CComVariant O destruidor.

Métodos públicos

Nome Descrição
CComVariant::Attach Anexa um VARIANT ao objeto CComVariant.
CComVariant::ChangeType Converte o objeto CComVariant em um novo tipo.
CComVariant::Clear Limpa o objeto CComVariant.
CComVariant::Copy Copia um VARIANT para o objeto CComVariant.
CComVariant::CopyTo Copia o conteúdo do objeto CComVariant.
CComVariant::Detach Desanexa o VARIANT subjacente do objeto CComVariant.
CComVariant::GetSize Retorna o tamanho em número de bytes do conteúdo do objeto CComVariant.
CComVariant::ReadFromStream Carrega um VARIANT de um fluxo.
CComVariant::SetByRef Inicializa o objeto CComVariant e define o membro vt como VT_BYREF.
CComVariant::WriteToStream Salva o VARIANT subjacente em um fluxo.

Operadores públicos

Operador Descrição
CComVariant::operator < Indica se o objeto CComVariant é menor que o VARIANT especificado.
CComVariant::operator > Indica se o objeto CComVariant é maior que o VARIANT especificado.
CComVariant::operator != Indica se o objeto CComVariant não é igual ao VARIANT.
CComVariant::operator = Atribui um valor ao objeto CComVariant.
CComVariant::operator == Indica se o objeto CComVariant é igual ao VARIANT.

Comentários

CComVariant encapsula o tipo VARIANT e VARIANTARG, que consiste em uma união e um membro que indica o tipo dos dados armazenados na união. VARIANTs são normalmente usados na Automação.

CComVariant deriva do VARIANT tipo para que ele possa ser usado onde quer que um VARIANT possa ser usado. Você pode, por exemplo, usar a macro V_VT para extrair o tipo de um CComVariant ou você pode acessar o membro vt diretamente da mesma forma que puder com um VARIANT.

Hierarquia de herança

tagVARIANT
 └ CComVariant

Requisitos

Cabeçalho: atlcomcli.h

CComVariant::Attach

Limpa com segurança o conteúdo atual do objeto CComVariant, copia o conteúdo de pSrc nesse objeto e define o tipo de variante de pSrc como VT_EMPTY.

HRESULT Attach(VARIANT* pSrc);

Parâmetros

pSrc
[in] Aponta para o VARIANT a ser anexado ao objeto.

Valor retornado

Um valor HRESULT padrão.

Comentários

A propriedade dos dados mantidos pelo pSrc objeto é transferida para o objeto CComVariant.

CComVariant::CComVariant

Cada construtor manipula a inicialização segura do objeto CComVariant chamando a função Win32 VariantInit ou definindo o valor e o tipo do objeto de acordo com os parâmetros passados.

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] O CComVariant ou o VARIANT usado para inicializar o objeto CComVariant. O conteúdo da variante de origem é copiado para o destino sem conversão.

lpszSrc
[in] A cadeia de caracteres usada para inicializar o objeto CComVariant. Você pode passar uma cadeia de caracteres ampla (Unicode) terminada em zero para a versão LPCOLESTR do constructor ou uma cadeia de caracteres ANSI para a versão LPCSTR. Em ambos os casos, a cadeia de caracteres é convertida em um BSTR Unicode alocado usando SysAllocString. O tipo do objeto CComVariant é VT_BSTR.

bSrc
[in] O bool usado para inicializar o objeto CComVariant. O argumento bool é convertido em um VARIANT_BOOL antes de ser armazenado. O tipo do objeto CComVariant é VT_BOOL.

nSrc
[in] O int, BYTE, short, long, LONGLONG, ULONGLONG, unsigned short, unsigned long ou unsigned int usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8, VT_UI8, VT_UI2, VT_UI4 ou VT_UI4, respectivamente.

vtSrc
[in] O tipo da variante. Quando o primeiro parâmetro é int, os tipos válidos são VT_I4 e VT_INT. Quando o primeiro parâmetro é long, os tipos válidos são VT_I4 e VT_ERROR. Quando o primeiro parâmetro é double, os tipos válidos são VT_R8 e VT_DATE. Quando o primeiro parâmetro é unsigned int, os tipos válidos são VT_UI4 e VT_UINT.

fltSrc
[in] O float usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_R4.

dblSrc
[in] O double usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_R8.

cySrc
[in] O CY usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_CY.

pSrc
[in] O ponteiro IDispatch ou IUnknown usado para inicializar o objeto CComVariant. AddRef é chamado no ponteiro da interface. O tipo do objeto CComVariant é VT_DISPATCH ou VT_UNKNOWN, respectivamente.

Ou o ponteiro SAFERRAY usado para inicializar o objeto CComVariant. Uma cópia do SAFEARRAY objeto é armazenada no objeto CComVariant. O tipo do objeto CComVariant é uma combinação do tipo original do SAFEARRAY e VT_ARRAY.

cSrc
[in] O char usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_I1.

bstrSrc
[in] O BSTR usado para inicializar o objeto CComVariant. O tipo do objeto CComVariant é VT_BSTR.

Comentários

O destruidor gerencia a limpeza chamando CComVariant::Clear.

CComVariant::~CComVariant

O destruidor.

~CComVariant() throw();

Comentários

Esse método gerencia a limpeza chamando CComVariant::Clear.

CComVariant::ChangeType

Converte o objeto CComVariant em um novo tipo.

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

Parâmetros

vtNew
[in] O novo tipo para o objeto CComVariant.

pSrc
[in] Um ponteiro para o VARIANT cujo valor é convertido no novo tipo. O valor padrão é NULL, o que significa que o CComVariant objeto é convertido no local.

Valor retornado

Um valor HRESULT padrão.

Comentários

Se você passar um valor para pSrc, ChangeType usará isso VARIANT como a origem da conversão. Caso contrário, o CComVariant objeto é a origem.

CComVariant::Clear

Limpa o objeto CComVariant ao chamar a função Win32 VariantClear.

HRESULT Clear();

Valor retornado

Um valor HRESULT padrão.

Comentários

O destruidor chama Clear automaticamente .

CComVariant::Copy

Libera o CComVariant objeto e, em seguida, atribui-lhe uma cópia do especificado VARIANT.

HRESULT Copy(const VARIANT* pSrc);

Parâmetros

pSrc
[in] Um ponteiro a VARIANT ser copiado.

Valor retornado

Um valor HRESULT padrão.

CComVariant::CopyTo

Copia o conteúdo do objeto CComVariant.

HRESULT CopyTo(BSTR* pstrDest);

Parâmetros

pstrDest
Aponta para um BSTR que receberá uma cópia do conteúdo do objeto CComVariant.

Valor retornado

Um valor HRESULT padrão.

Comentários

O objeto CComVariant deve ser do tipo VT_BSTR.

CComVariant::Detach

Desanexa o subjacente VARIANT do objeto CComVariant e define o tipo do objeto como VT_EMPTY.

HRESULT Detach(VARIANT* pDest);

Parâmetros

pDest
[out] Retorna o valor subjacente VARIANT do objeto.

Valor retornado

Um valor HRESULT padrão.

Comentários

O conteúdo do VARIANT referenciado por pDest é desmarcado automaticamente antes de receber o valor e o tipo do objeto de chamada CComVariant.

CComVariant::GetSize

Para tamanhos VARIANTsimples fixos, esse método retorna o sizeof valor para o tipo de dados subjacente mais sizeof(VARTYPE).

ULONG GetSize() const;

Valor retornado

O tamanho em bytes do conteúdo atual do objeto CComVariant.

Comentários

Se VARIANT contiver um ponteiro de interface, GetSize consulta para IPersistStream ou IPersistStreamInit. Se tiver êxito, o valor retornado será os 32 bits de ordem baixa do valor retornado por GetSizeMax mais sizeof(CLSID) e sizeof(VARTYPE). Se o ponteiro da interface for NULL, GetSize retornará sizeof(CLSID) mais sizeof(VARTYPE). Se o tamanho total for maior que ULONG_MAX, GetSize retornará sizeof(VARTYPE), o que indicará um erro.

Em todos os outros casos, um tipo temporário VARIANTVT_BSTR é coagido do atual VARIANT. O comprimento disso BSTR é calculado como o tamanho do comprimento da cadeia de caracteres mais o comprimento da cadeia de caracteres em si mais o tamanho do caractere NULL mais sizeof(VARTYPE). Se o VARIANT não puder ser forçado a um VARIANT do tipo VT_BSTR, GetSize retornará sizeof(VARTYPE).

O tamanho retornado por esse método corresponde ao número de bytes usados em CComVariant::WriteToStream condições bem-sucedidas.

CComVariant::operator =

Atribui um valor e um tipo correspondente ao CComVariant objeto.

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] O CComVariant ou o VARIANT a ser atribuído ao objeto CComVariant. O conteúdo da variante de origem é copiado para o destino sem conversão.

bstrSrc
[in] O BSTR a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_BSTR.

lpszSrc
[in] A cadeia de caracteres a ser atribuída ao objeto CComVariant. Você pode passar uma cadeia de caracteres ampla (Unicode) terminada em zero para a versão LPCOLESTR do operador ou uma cadeia de caracteres ANSI para a versão LPCSTR. Em ambos os casos, a cadeia de caracteres é convertida em um BSTR Unicode alocado usando SysAllocString. O tipo do objeto CComVariant é VT_BSTR.

bSrc
[in] O bool a ser atribuído ao objeto CComVariant. O argumento bool é convertido em um VARIANT_BOOL antes de ser armazenado. O tipo do objeto CComVariant é VT_BOOL.

nSrc
[in] O int, BYTE, short, long, LONGLONG, ULONGLONG, unsigned short, unsigned long ou unsigned int a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8, VT_UI8, VT_UI2, VT_UI4 ou VT_UI4, respectivamente.

fltSrc
[in] O float a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_R4.

dblSrc
[in] O double a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_R8.

cySrc
[in] O CY a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_CY.

pSrc
[in] O ponteiro IDispatch ou o IUnknown a ser atribuído ao objeto CComVariant. AddRef é chamado no ponteiro da interface. O tipo do objeto CComVariant é VT_DISPATCH ou VT_UNKNOWN, respectivamente.

Ou um ponteiro SAFEARRAY a ser atribuído ao objeto CComVariant. Uma cópia do SAFEARRAY objeto é armazenada no objeto CComVariant. O tipo do objeto CComVariant é uma combinação do tipo original do SAFEARRAY e VT_ARRAY.

cSrc
[in] O char a ser atribuído ao objeto CComVariant. O tipo do objeto CComVariant é VT_I1.

CComVariant::operator ==

Indica se o objeto CComVariant é igual ao VARIANT.

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

Comentários

Retorna TRUE se o valor e o tipo de varSrc forem iguais ao valor e ao tipo, respectivamente, do objeto CComVariant. Caso contrário, FALSE. O operador usa a localidade padrão do usuário para executar a comparação.

O operador compara somente o valor dos tipos de variante. Ele compara cadeias de caracteres, inteiros e pontos flutuantes, mas não matrizes ou registros.

CComVariant::operator !=

Indica se o objeto CComVariant não é igual ao VARIANT.

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

Comentários

Retorna TRUE se o valor e o tipo de varSrc não forem iguais ao valor e ao tipo, respectivamente, do objeto CComVariant. Caso contrário, FALSE. O operador usa a localidade padrão do usuário para executar a comparação.

O operador compara somente o valor dos tipos de variante. Ele compara cadeias de caracteres, inteiros e pontos flutuantes, mas não matrizes ou registros.

CComVariant::operator <

Indica se o objeto CComVariant é menor que o VARIANT especificado.

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

Comentários

Retorna TRUE se o valor do objeto CComVariant for menor que o valor de varSrc. Caso contrário, FALSE. O operador usa a localidade padrão do usuário para executar a comparação.

CComVariant::operator >

Indica se o objeto CComVariant é maior que o VARIANT especificado.

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

Comentários

Retorna TRUE se o valor do objeto CComVariant for maior que o valor de varSrc. Caso contrário, FALSE. O operador usa a localidade padrão do usuário para executar a comparação.

CComVariant::ReadFromStream

Define o subjacente VARIANT como o VARIANT contido no fluxo especificado.

HRESULT ReadFromStream(IStream* pStream);

Parâmetros

pStream
[in] Um ponteiro para a interface IStream no fluxo que contém os dados.

Valor retornado

Um valor HRESULT padrão.

Comentários

ReadToStream requer uma chamada anterior para WriteToStream.

CComVariant::SetByRef

Inicializa o objeto CComVariant e define o membro vt como VT_BYREF.

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

Parâmetros

T
O tipo de VARIANT, por exemplo, BSTRou int char.

pT
O ponteiro usado para inicializar o objeto CComVariant.

Comentários

SetByRef é um modelo de função que inicializa o CComVariant objeto para o ponteiro pT e define o vt membro como VT_BYREF. Por exemplo:

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

CComVariant::WriteToStream

Salva o VARIANT subjacente em um fluxo.

HRESULT WriteToStream(IStream* pStream);

Parâmetros

pStream
[in] Um ponteiro para a IStream interface em um fluxo.

Valor retornado

Um valor HRESULT padrão.

Confira também

Visão geral de classe