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. VARIANT
s 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
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 VARIANT
simples 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 VARIANT
VT_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, BSTR
ou 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.