Classe COleVariant
Encapsula o tipo de dados VARIANT.
Sintaxe
class COleVariant : public tagVARIANT
Membros
Construtores públicos
Nome | Descrição |
---|---|
COleVariant::COleVariant | Constrói um objeto COleVariant . |
Métodos públicos
Nome | Descrição |
---|---|
COleVariant::Attach | Anexa um VARIANT a um COleVariant . |
COleVariant::ChangeType | Altera o tipo variante desse objeto COleVariant . |
COleVariant::Clear | Limpa esse objeto COleVariant . |
COleVariant::Detach | Desanexa um VARIANT de um COleVariant e retorna o VARIANT. |
COleVariant::GetByteArrayFromVariantArray | Recupera uma matriz de bytes de uma matriz variante existente. |
COleVariant::SetString | Define a cadeia de caracteres como um tipo específico, normalmente ANSI. |
Operadores públicos
Nome | Descrição |
---|---|
COleVariant::operator LPCVARIANT | Converte um valor COleVariant em um LPCVARIANT . |
COleVariant::operator LPVARIANT | Converte um objeto COleVariant em um LPVARIANT . |
COleVariant::operator = | Copia um valor COleVariant . |
COleVariant::operator == | Compara dois valores COleVariant . |
COleVariant::operator << , COleVariant::operator >> |
Gera um valor COleVariant para CArchive ou CDumpContext e insere um objeto COleVariant de CArchive . |
Comentários
Esse tipo de dados é usado na automação OLE. Especificamente, a estrutura DISPPARAMS contém um ponteiro para uma matriz de estruturas VARIANT. Uma estrutura DISPPARAMS
é usada para passar parâmetros para IDispatch::Invoke.
Observação
Essa classe é derivada da estrutura VARIANT
. Isso significa que você pode passar um COleVariant
em um parâmetro que exige um VARIANT
e que os membros de dados da estrutura VARIANT
são membros de dados acessíveis de COleVariant
.
As duas classes de MFC relacionadas, COleCurrency e COleDateTime, encapsulam os tipos de dados variantes CURRENCY ( VT_CY
) e DATE ( VT_DATE
). A classe COleVariant
é usada extensivamente nas classes DAO. Consulte essas classes para uso típico dessa classe, por exemplo, CDaoQueryDef e CDaoRecordset.
Para obter mais informações, confira as entradas VARIANT, CURRENCY, DISPPARAMS e IDispatch::Invoke no SDK do Windows.
Para obter mais informações sobre a classe COleVariant
e seu uso na automação OLE, confira "Passar parâmetros na Automação OLE" no artigo Automação.
Hierarquia de herança
tagVARIANT
COleVariant
Requisitos
Cabeçalho afxdisp.h
COleVariant::Attach
Chame essa função para anexar o objeto VARIANT fornecido ao objeto COleVariant
atual.
void Attach(VARIANT& varSrc);
Parâmetros
varSrc
Um objeto VARIANT
existente a ser anexado ao objeto COleVariant
atual.
Comentários
Essa função define o VARTYPE de varSrc como VT_EMPTY.
Para obter mais informações, confira as entradas VARIANT e VARENUM no SDK do Windows.
COleVariant::COleVariant
Constrói um objeto COleVariant
.
COleVariant();
COleVariant(const VARIANT& varSrc);
COleVariant(const COleVariant& varSrc);
COleVariant(LPCVARIANT pSrc);
COleVariant(LPCTSTR lpszSrc);
COleVariant(LPCTSTR lpszSrc, VARTYPE vtSrc);
COleVariant(CString& strSrc);
COleVariant(BYTE nSrc);
COleVariant(short nSrc, VARTYPE vtSrc = VT_I2);
COleVariant(long lSrc,VARTYPE vtSrc = VT_I4);
COleVariant(const COleCurrency& curSrc);
COleVariant(float fltSrc);
COleVariant(double dblSrc);
COleVariant(const COleDateTime& timeSrc);
COleVariant(const CByteArray& arrSrc);
COleVariant(const CLongBinary& lbSrc);
COleVariant(LPCITEMIDLIST pidl);
Parâmetros
varSrc
Um objeto COleVariant
ou VARIANT
existente a ser copiado no novo objeto COleVariant
.
pSrc
Um ponteiro para um objeto VARIANT
que será copiado no novo objeto COleVariant
.
lpszSrc
Uma cadeia de caracteres terminada em nulo a ser copiada para o novo objeto COleVariant
.
vtSrc
O VARTYPE
para o novo objeto COleVariant
.
strSrc
Um objeto CString a ser copiado no novo objeto COleVariant
.
nSrc, lSrc Um valor numérico a ser copiado no novo objeto COleVariant
.
vtSrc
O VARTYPE
para o novo objeto COleVariant
.
curSrc
Um objeto COleCurrency a ser copiado no novo objeto COleVariant
.
fltSrc, dblSrc
Um valor numérico a ser copiado no novo objeto COleVariant
.
timeSrc
Um objeto COleDateTime a ser copiado no novo objeto COleVariant
.
arrSrc
Um objeto CByteArray a ser copiado no novo objeto COleVariant
.
lbSrc
Um objeto CLongBinary a ser copiado no novo objeto COleVariant
.
pidl
Um ponteiro para uma estrutura ITEMIDLIST a ser copiada para o novo COleVariant
objeto.
Comentários
Todos esses construtores criam objetos COleVariant
inicializados para o valor especificado. Uma breve descrição de cada um desses construtores é mostrada abaixo.
COleVariant( ) Cria um objeto
COleVariant
vazio, VT_EMPTY.COleVariant( varSrc ) Copia um objeto ou
COleVariant
existenteVARIANT
. O tipo de variante é mantido.COleVariant( pSrc ) Copia um objeto ou
COleVariant
existenteVARIANT
. O tipo de variante é mantido.COleVariant( lpszSrc ) Copia uma cadeia de caracteres para o novo objeto, VT_BSTR (UNICODE).
COleVariant( lpszSrc , vtSrc ) Copia uma cadeia de caracteres para o novo objeto. O parâmetro vtSrc deve ser VT_BSTR (UNICODE) ou VT_BSTRT (ANSI).
COleVariant( strSrc ) Copia uma cadeia de caracteres para o novo objeto, VT_BSTR (UNICODE).
COleVariant( nSrc ) Copia um inteiro de 8 bits para o novo objeto, VT_UI1.
COleVariant( nSrc , vtSrc ) Copia um inteiro de 16 bits (ou valor booleano) para o novo objeto. O parâmetro vtSrc deve ser VT_I2 ou VT_BOOL.
COleVariant( lSrc , vtSrc ) Copia um inteiro de 32 bits (ou valor SCODE) para o novo objeto. O parâmetro vtSrc deve ser VT_I4, VT_ERROR ou VT_BOOL.
COleVariant( curSrc ) Copia um
COleCurrency
valor para o novo objeto, VT_CY.COleVariant( fltSrc ) Copia um valor de ponto flutuante de 32 bits para o novo objeto, VT_R4.
COleVariant( dblSrc ) Copia um valor de ponto flutuante de 64 bits para o novo objeto, VT_R8.
COleVariant( timeSrc ) Copia um
COleDateTime
valor para o novo objeto, VT_DATE.COleVariant( arrSrc ) Copia um
CByteArray
objeto para o novo objeto, VT_EMPTY.COleVariant( lbSrc ) Copia um
CLongBinary
objeto para o novo objeto, VT_EMPTY.
Para obter mais informações sobre o SCODE, confira Estrutura de códigos de erro COM no SDK do Windows.
COleVariant::ChangeType
Converte o tipo de valor variante neste objeto COleVariant
.
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
Parâmetros
vartype
O VARTYPE desse objeto COleVariant
.
pSrc
Um ponteiro para o objeto VARIANT a ser convertido. Se esse valor for NULL, esse objeto COleVariant
será usado como a origem da conversão.
Comentários
Para obter mais informações, confira as entradas VARIANT, VARENUM e VariantChangeType no SDK do Windows.
COleVariant::Clear
Limpa o VARIANT
.
void Clear();
Comentários
Isso define o VARTYPE para esse objeto como VT_EMPTY. O destruidor COleVariant
chama essa função.
Para obter mais informações, confira as entradas VARIANT
, VARTYPE e VariantClear
no SDK do Windows.
COleVariant::Detach
Desanexa o objeto VARIANT subjacente deste objeto COleVariant
.
VARIANT Detach();
Comentários
Essa função define o VARTYPE para esse COleVariant
objeto como VT_EMPTY.
Observação
Depois de chamar Detach
, é responsabilidade do chamador chamar VariantClear
na estrutura VARIANT
resultante.
Para obter mais informações, confira as entradas VARIANT, VARENUM e VariantClear no SDK do Windows.
COleVariant::GetByteArrayFromVariantArray
Recupera uma matriz de bytes de uma matriz variante existente
void GetByteArrayFromVariantArray(CByteArray& bytes);
Parâmetros
bytes
Uma referência a um objeto CByteArray existente.
COleVariant::operator LPCVARIANT
Esse operador de conversão retorna uma estrutura VARIANT
cujo valor é copiado desse objeto COleVariant
.
operator LPCVARIANT() const;
Comentários
COleVariant::operator LPVARIANT
Chame esse operador de conversão para acessar a estrutura VARIANT
subjacente desse objeto COleVariant
.
operator LPVARIANT();
Comentários
Cuidado
Alterar o valor na estrutura VARIANT
acessada pelo ponteiro retornado por essa função alterará o valor desse objeto COleVariant
.
COleVariant::operator =
Esses operadores de atribuição sobrecarregados copiam o valor de origem nesse objeto COleVariant
.
const COleVariant& operator=(const VARIANT& varSrc);
const COleVariant& operator=(LPCVARIANT pSrc);
const COleVariant& operator=(const COleVariant& varSrc);
const COleVariant& operator=(const LPCTSTR lpszSrc);
const COleVariant& operator=(const CString& strSrc);
const COleVariant& operator=(BYTE nSrc);
const COleVariant& operator=(short nSrc);
const COleVariant& operator=(long lSrc);
const COleVariant& operator=(const COleCurrency& curSrc);
const COleVariant& operator=(float fltSrc);
const COleVariant& operator=(double dblSrc);
const COleVariant& operator=(const COleDateTime& dateSrc);
const COleVariant& operator=(const CByteArray& arrSrc);
const COleVariant& operator=(const CLongBinary& lbSrc);
Comentários
Uma breve descrição de cada operador é mostrada abaixo:
operator =( varSrc ) Copia um VARIANT ou
COleVariant
objeto existente para este objeto.operator =( pSrc ) Copia o objeto VARIANT acessado por pSrc para este objeto.
operator =( lpszSrc ) Copia uma cadeia de caracteres terminada em nulo para esse objeto e define o VARTYPE como VT_BSTR.
operator =( strSrc ) Copia um objeto CString para esse objeto e define o VARTYPE como VT_BSTR.
operator =( nSrc ) Copia um valor inteiro de 8 ou 16 bits para este objeto. Se nSrc for um valor de 8 bits, o VARTYPE dele será definido como VT_UI1. Se nSrc for um valor de 16 bits e o VARTYPE dele for VT_BOOL, ele será mantido. Caso contrário, ele será definido como VT_I2.
operator =( lSrc ) Copia um valor inteiro de 32 bits para este objeto. Se o VARTYPE dele for VT_ERROR, ele será mantido. Caso contrário, ele será definido como VT_I4.
operator =( curSrc ) Copia um objeto COleCurrency para esse objeto e define o VARTYPE como VT_CY.
operator =( fltSrc ) Copia um valor de ponto flutuante de 32 bits para esse objeto e define o VARTYPE como VT_R4.
operator =( dblSrc ) Copia um valor de ponto flutuante de 64 bits para esse objeto e define o VARTYPE como VT_R8.
operator =( dateSrc ) Copia um objeto COleDateTime para esse objeto e define o VARTYPE como VT_DATE.
operator =( arrSrc ) Copia um objeto CByteArray para este
COleVariant
objeto.operator =( lbSrc ) Copia um objeto CLongBinary para este
COleVariant
objeto.
Para obter mais informações, confira as entradas VARIANT e VARENUM no SDK do Windows.
COleVariant::operator ==
Esse operador compara dois valores variantes e retorna diferente de zero se iguais. Caso contrário, retorna 0.
BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;
COleVariant::operator <<
, COleVariant::operator >>
Gera um valor COleVariant
para CArchive
ou CdumpContext
e insere um objeto COleVariant
de CArchive
.
friend CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
OleVariant varSrc);
friend CArchive& AFXAPI operator<<(
CArchive& ar,
COleVariant varSrc);
friend CArchive& AFXAPI operator>>(
CArchive& ar,
COleVariant& varSrc);
Comentários
O operador de inserção COleVariant
(<<) dá suporte ao despejo de diagnóstico e ao armazenamento em um arquivo. O operador de extração (>>) dá suporte ao carregamento de um arquivo.
COleVariant::SetString
Define a cadeia de caracteres como um tipo específico.
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);
Parâmetros
lpszSrc
Uma cadeia de caracteres terminada em nulo a ser copiada para o novo objeto COleVariant
.
VtSrc
O VARTYPE para o novo objeto COleVariant
.
Comentários
O parâmetro vtSrc deve ser VT_BSTR (UNICODE) ou VT_BSTRT (ANSI). SetString
normalmente é usado para definir cadeias de caracteres como ANSI, já que o padrão para o construtor COleVariant::COleVariant com um parâmetro de ponteiro de cadeia de caracteres ou cadeia de caracteres e nenhum VARTYPE é UNICODE.
Um conjunto de registros DAO em um build não UNICODE espera que as cadeias de caracteres sejam ANSI. Portanto, para funções DAO que usam COleVariant
objetos, se você não estiver criando um conjunto de registros UNICODE, deverá usar a forma COleVariant::COleVariant( lpszSrc , vtSrc ) do construtor com vtSrc definido como VT_BSTRT (ANSI) ou usar SetString
com vtSrc definido como VT_BSTRT para criar cadeias de caracteres ANSI. Por exemplo, as funções CDaoRecordset
CDaoRecordset::Seek e CDaoRecordset::SetFieldValue usam objetos COleVariant
como parâmetros. Esses objetos deverão ser ANSI se o conjunto de registros DAO não for UNICODE.