Partilhar via


CComVariant classe

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe envolve o VARIANT tipo, fornecendo um membro que indica o tipo de dados armazenados.

Sintaxe

class CComVariant : public tagVARIANT

Membros

Construtores públicos

Nome Description
CComVariant::CComVariant O construtor.
CComVariant::~CComVariant O destruidor.

Métodos públicos

Nome Description
CComVariant::Attach Fixa um a VARIANT no CComVariant objeto.
CComVariant::ChangeType Converte o CComVariant objeto para um novo tipo.
CComVariant::Clear Limpa o CComVariant objeto.
CComVariant::Copy Copia a VARIANT do CComVariant objeto.
CComVariant::CopyTo Copia o conteúdo do CComVariant objeto.
CComVariant::Detach Desliga o subjacente VARIANT do CComVariant objeto.
CComVariant::GetSize Devolve o tamanho em número de bytes do conteúdo do CComVariant objeto.
CComVariant::ReadFromStream Carrega a VARIANT partir de um riacho.
CComVariant::SetByRef Inicializa o CComVariant objeto e define o vt membro para VT_BYREF.
CComVariant::WriteToStream Guarda o subjacente VARIANT num fluxo.

Operadores públicos

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

Observações

CComVariant envolve o VARIANT tipo e VARIANTARG , que consiste numa união e um membro indicando o tipo de dados armazenados na união. VARIANTs são tipicamente usados em Automação.

CComVariant deriva do VARIANT tipo, pelo que pode ser usado onde quer que a VARIANT possa ser utilizado. Podes, por exemplo, usar a V_VT macro para extrair o tipo de a CComVariant ou podes aceder diretamente ao vt membro, tal como podes com um VARIANT.

Hierarquia de herança

tagVARIANT
 └ CComVariant

Requerimentos

Cabeçalho:atlcomcli.h

CComVariant::Attach

Limpa com segurança o conteúdo atual do CComVariant objeto, copia o conteúdo de pSrc para este objeto, depois define o tipo variante de pSrc para VT_EMPTY.

HRESULT Attach(VARIANT* pSrc);

Parâmetros

pSrc
[dentro] Aponta para o VARIANT a ser ligado ao objeto.

Valor de retorno

Um valor padrão HRESULT .

Observações

A propriedade dos dados detidos por pSrc é transferida para o CComVariant objeto.

CComVariant::CComVariant

Cada construtor trata da inicialização segura do CComVariant objeto chamando a VariantInit função Win32 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
[dentro] O CComVariant ou VARIANT usado para inicializar o CComVariant objeto. O conteúdo da variante de origem é copiado para o destino sem conversão.

lpszSrc
[dentro] A cadeia de caracteres usada para inicializar o CComVariant objeto. Pode passar uma cadeia de caracteres com terminação zero (Unicode) para a LPCOLESTR versão do construtor ou uma cadeia ANSI para a LPCSTR versão. Em qualquer dos casos, a cadeia é convertida para um Unicode BSTR alocado usando SysAllocString. O tipo do CComVariant objeto é VT_BSTR.

bSrc
[dentro] Eles bool são usados para inicializar o CComVariant objeto. O bool argumento é convertido em a VARIANT_BOOL antes de ser armazenado. O tipo do CComVariant objeto é VT_BOOL.

nSrc
[dentro] O , , , , , , , , unsigned long, , ou unsigned int usado para inicializar o CComVariant objeto. unsigned shortULONGLONGLONGLONGlongshortBYTEint O tipo do CComVariant objeto é VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8VT_UI8, VT_UI2, VT_UI4, , ou VT_UI4, respetivamente.

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

fltSrc
[dentro] Eles float são usados para inicializar o CComVariant objeto. O tipo do CComVariant objeto é VT_R4.

dblSrc
[dentro] Eles double são usados para inicializar o CComVariant objeto. O tipo do CComVariant objeto é VT_R8.

cySrc
[dentro] Eles CY são usados para inicializar o CComVariant objeto. O tipo do CComVariant objeto é VT_CY.

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

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

cSrc
[dentro] Eles char são usados para inicializar o CComVariant objeto. O tipo do CComVariant objeto é VT_I1.

bstrSrc
[dentro] Eles BSTR são usados para inicializar o CComVariant objeto. O tipo do CComVariant objeto é VT_BSTR.

Observações

O destruidor gere a limpeza chamando CComVariant::Clear.

CComVariant::~CComVariant

O destruidor.

~CComVariant() throw();

Observações

Este método gere a limpeza chamando CComVariant::Clear.

CComVariant::ChangeType

Converte o CComVariant objeto para um novo tipo.

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

Parâmetros

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

pSrc
[dentro] Um apontador para o VARIANT cujo valor é convertido para o novo tipo. O valor padrão é NULL, ou seja, o CComVariant objeto é convertido no local.

Valor de retorno

Um valor padrão HRESULT .

Observações

Se passar um valor para pSrc, ChangeType usará este VARIANT valor como fonte para a conversão. Caso contrário, o CComVariant objeto é a fonte.

CComVariant::Clear

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

HRESULT Clear();

Valor de retorno

Um valor padrão HRESULT .

Observações

O destruidor chama Clearautomaticamente .

CComVariant::Copy

liberta o CComVariant objeto e depois atribui-lhe uma cópia do especificado VARIANT.

HRESULT Copy(const VARIANT* pSrc);

Parâmetros

pSrc
[dentro] Um indicador para o VARIANT a ser copiado.

Valor de retorno

Um valor padrão HRESULT .

CComVariant::CopyTo

Copia o conteúdo do CComVariant objeto.

HRESULT CopyTo(BSTR* pstrDest);

Parâmetros

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

Valor de retorno

Um valor padrão HRESULT .

Observações

O CComVariant objeto deve ser do tipo VT_BSTR.

CComVariant::Detach

Desliga o subjacente VARIANT do CComVariant objeto e define o tipo do objeto para VT_EMPTY.

HRESULT Detach(VARIANT* pDest);

Parâmetros

pDest
[fora] Devolve o valor subjacente VARIANT do objeto.

Valor de retorno

Um valor padrão HRESULT .

Observações

O conteúdo do VARIANT referenciado por pDest é automaticamente apagado antes de ser atribuído ao valor e tipo do objeto que chama CComVariant .

CComVariant::GetSize

Para tamanho VARIANTsimples fixo s, este método devolve o sizeof valor do tipo de dado subjacente mais sizeof(VARTYPE).

ULONG GetSize() const;

Valor de retorno

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

Observações

Se o VARIANT contiver um ponteiro de interface, GetSize consulta para IPersistStream ou IPersistStreamInit. Se for bem-sucedido, o valor de retorno é a ordem baixa de 32 bits do valor devolvido por GetSizeMax mais sizeof(CLSID) e sizeof(VARTYPE). Se o ponteiro da interface for NULL, GetSize retorna sizeof(CLSID) mais sizeof(VARTYPE). Se o tamanho total for maior que ULONG_MAX, GetSize devolve sizeof(VARTYPE), o que indica um erro.

Em todos os outros casos, um temporário VARIANT do tipo VT_BSTR é coagido pela corrente VARIANT. O comprimento disto BSTR é calculado como o tamanho do comprimento da cadeia mais o comprimento da própria cadeia mais o tamanho do NULL carácter mais sizeof(VARTYPE). Se o VARIANT não pode ser coagido a VARIANT um de tipo VT_BSTR, GetSize retorna sizeof(VARTYPE).

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

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

lpszSrc
[dentro] A cadeia de caracteres a ser atribuída ao CComVariant objeto. Pode passar uma cadeia de caracteres com terminação zero (Unicode) para a LPCOLESTR versão do operador ou uma cadeia ANSI para a LPCSTR versão. Em qualquer dos casos, a cadeia é convertida para um Unicode BSTR alocado usando SysAllocString. O tipo do CComVariant objeto é VT_BSTR.

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

nSrc
[dentro] O , , , , , , , , unsigned long, ou unsigned int a ser atribuído ao CComVariant objeto. unsigned shortULONGLONGLONGLONGlongshortBYTEint O tipo do CComVariant objeto é VT_I4, VT_UI1, VT_I2, VT_I4, VT_I8VT_UI8, VT_UI2, VT_UI4, , ou VT_UI4, respetivamente.

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

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

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

pSrc
[dentro] O IDispatch ponteiro ou IUnknown a ser atribuído ao CComVariant objeto. AddRef é chamado no ponteiro de interface. O tipo do CComVariant objeto é VT_DISPATCH ou VT_UNKNOWN, respetivamente.

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

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

CComVariant::operator ==

Indica se o CComVariant objeto é igual ao especificado VARIANT.

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

Observações

Retorna TRUE se o valor e o tipo de varSrc forem iguais ao valor e tipo, respetivamente, do CComVariant objeto. Caso contrário, FALSE. O operador utiliza a localização padrão do utilizador para realizar a comparação.

O operador compara apenas o valor dos tipos variantes. Compara cadeias, inteiros e vírgulas flutuantes, mas não arrays ou registos.

CComVariant::operator !=

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

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

Observações

Retorna TRUE se o valor ou tipo de varSrc não for igual ao valor ou tipo, respetivamente, do CComVariant objeto. Caso contrário, FALSE. O operador utiliza a localização padrão do utilizador para realizar a comparação.

O operador compara apenas o valor dos tipos variantes. Compara cadeias, inteiros e vírgulas flutuantes, mas não arrays ou registos.

CComVariant::operator <

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

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

Observações

Retorna TRUE se o valor do CComVariant objeto for menor que o valor de varSrc. Caso contrário, FALSE. O operador utiliza a localização padrão do utilizador para realizar a comparação.

CComVariant::operator >

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

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

Observações

Retorna TRUE se o valor do CComVariant objeto for maior do que o valor de varSrc. Caso contrário, FALSE. O operador utiliza a localização padrão do utilizador para realizar a comparação.

CComVariant::ReadFromStream

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

HRESULT ReadFromStream(IStream* pStream);

Parâmetros

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

Valor de retorno

Um valor padrão HRESULT .

Observações

ReadToStream requer uma chamada prévia para WriteToStream.

CComVariant::SetByRef

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

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

Parâmetros

T
O tipo de VARIANT, por exemplo, BSTR, int, ou char.

pT
O ponteiro usado para inicializar o CComVariant objeto.

Observações

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

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

CComVariant::WriteToStream

Guarda o subjacente VARIANT num fluxo.

HRESULT WriteToStream(IStream* pStream);

Parâmetros

pStream
[dentro] Um ponteiro para a IStream interface num fluxo.

Valor de retorno

Um valor padrão HRESULT .

Consulte também

Visão geral da classe