COleVariant 类
封装 VARIANT 数据类型。
语法
class COleVariant : public tagVARIANT
成员
公共构造函数
名称 | 描述 |
---|---|
COleVariant::COleVariant | 构造 COleVariant 对象。 |
公共方法
名称 | 描述 |
---|---|
COleVariant::Attach | 将 VARIANT 附加到 COleVariant 。 |
COleVariant::ChangeType | 更改此 COleVariant 对象的变体类型。 |
COleVariant::Clear | 清除此 COleVariant 对象。 |
COleVariant::Detach | 从 COleVariant 分离 VARIANT 并返回该 VARIANT。 |
COleVariant::GetByteArrayFromVariantArray | 从现有变体数组中检索字节数组。 |
COleVariant::SetString | 将字符串设置为特定的类型(通常为 ANSI)。 |
公共运算符
“属性” | 描述 |
---|---|
COleVariant::operator LPCVARIANT | 将 COleVariant 值转换为 LPCVARIANT 。 |
COleVariant::operator LPVARIANT | 将 COleVariant 对象转换为 LPVARIANT 。 |
COleVariant::operator = | 复制 COleVariant 值。 |
COleVariant::operator == | 比较两个 COleVariant 值。 |
COleVariant::operator << , COleVariant::operator >> |
将 COleVariant 值输出到 CArchive 或 CDumpContext ,并从 CArchive 输入 COleVariant 对象。 |
注解
此数据类型在 OLE 自动化中使用。 具体而言,DISPPARAMS 结构包含一个指向 VARIANT 结构数组的指针。 DISPPARAMS
结构用于将参数传递给 IDispatch::Invoke。
注意
此类派生自 VARIANT
结构。 这意味着可以在参数中传入 COleVariant
,该参数调用 VARIANT
,并且 VARIANT
结构的数据成员是 COleVariant
的可访问的数据成员。
两个相关的 MFC 类 COleCurrency 和 COleDateTime 封装变体数据类型 CURRENCY (VT_CY
) 和 DATE (VT_DATE
)。 COleVariant
类在 DAO 类中广泛使用;有关此类的典型用法,请参阅 CDaoQueryDef 和 CDaoRecordset 类的示例。
有关详细信息,请参阅 Windows SDK 中的 VARIANT、CURRENCY、DISPPARAMS 和 IDispatch::Invoke 条目。
有关 COleVariant
类及其在 OLE 自动化中的用法的详细信息,请参阅自动化一文中的“在 OLE 自动化中传递参数”。
继承层次结构
tagVARIANT
COleVariant
要求
标头:afxdisp.h
COleVariant::Attach
调用此函数可将给定的 VARIANT 对象附加到当前的 COleVariant
对象。
void Attach(VARIANT& varSrc);
参数
varSrc
要附加到当前 COleVariant
对象的现有 VARIANT
对象。
备注
此函数将 varSrc 的 VARTYPE 设置为 VT_EMPTY。
有关详细信息,请参阅 Windows SDK 中的 VARIANT 和 VARENUM 条目。
COleVariant::COleVariant
构造 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);
参数
varSrc
要复制到新 COleVariant
对象中的现有 COleVariant
或 VARIANT
对象。
pSrc
指示要复制到新 COleVariant
对象中的 VARIANT
对象的指针。
lpszSrc
要复制到新 COleVariant
对象中的以 null 结尾的字符串。
vtSrc
新 COleVariant
对象的 VARTYPE
。
strSrc
要复制到新的 COleVariant
对象中的 CString 对象。
nSrc、lSrc:要复制到新 COleVariant
对象中的数值。
vtSrc
新 COleVariant
对象的 VARTYPE
。
curSrc
要复制到新 COleVariant
对象中的 COleCurrency 对象。
fltSrc、dblSrc
要复制到新的 COleVariant
对象中的数值。
timeSrc
要复制到新 COleVariant
对象中的 COleDateTime 对象。
arrSrc
要复制到新 COleVariant
对象中的 CByteArray 对象。
lbSrc
要复制到新 COleVariant
对象中的 CLongBinary 对象。
pidl
指向要复制到新 COleVariant
对象中的 ITEMIDLIST 结构的指针。
注解
所有这些构造函数将创建初始化为指定值的新 COleVariant
对象。 下面是其中每个构造函数的简要说明。
COleVariant() 创建空的
COleVariant
对象 VT_EMPTY。COleVariant(varSrc) 复制现有
VARIANT
或COleVariant
对象。 变体类型将保留。COleVariant(pSrc) 复制现有
VARIANT
或COleVariant
对象。 变体类型将保留。COleVariant(lpszSrc) 将字符串复制到新对象中,VT_BSTR(UNICODE)。
COleVariant(lpszSrc,vtSrc) 将字符串复制到新对象中。 参数 vtSrc 必须是 VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)。
COleVariant(strSrc) 将字符串复制到新对象中,VT_BSTR (UNICODE)。
COleVariant(nSrc) 将 8 位整数复制到新对象中,VT_UI1。
COleVariant(nSrc,vtSrc ) 将 16 位整数(或布尔值)复制到新对象中。 参数 vtSrc 必须是 VT_I2 或 VT_BOOL。
COleVariant(lSrc,vtSrc ) 将 32 位整数(或 SCODE 值)复制到新对象中。 参数 vtSrc 必须是 VT_I4、VT_ERROR 或 VT_BOOL。
COleVariant(curSrc) 将值
COleCurrency
复制到新对象中,VT_CY。COleVariant(fltSrc) 将 32 位浮点值复制到新对象中,VT_R4。
COleVariant(dblSrc) 将 64 位浮点值复制到新对象中,VT_R8。
COleVariant(timeSrc) 将值
COleDateTime
复制到新对象中,VT_DATE。COleVariant(arrSrc) 将对象
CByteArray
复制到新对象中,VT_EMPTY。COleVariant(lbSrc) 将对象
CLongBinary
复制到新对象中,VT_EMPTY。
有关 SCODE 的详细信息,请参阅 Windows SDK 中的 COM 错误代码结构。
COleVariant::ChangeType
转换此 COleVariant
对象中变体值的类型。
void ChangeType(VARTYPE vartype, LPVARIANT pSrc = NULL);
参数
vartype
此 COleVariant
对象的 VARTYPE。
pSrc
指向要转换的 VARIANT 对象的指针。 如果此值为 NULL,则此 COleVariant
对象将用作转换源。
注解
有关详细信息,请参阅 Windows SDK 中的 VARIANT、VARENUM 和 VariantChangeType 条目。
COleVariant::Clear
清除 VARIANT
。
void Clear();
备注
此函数将此对象的 VARTYPE 设置为 VT_EMPTY。 COleVariant
析构函数调用此函数。
有关详细信息,请参阅 Windows SDK 中的 VARIANT
、VARTYPE 和 VariantClear
条目。
COleVariant::Detach
从此 COleVariant
对象分离基础 VARIANT 对象。
VARIANT Detach();
备注
此函数将此 COleVariant
对象的 VARTYPE 设置为 VT_EMPTY。
注意
调用 Detach
后,调用方需负责针对生成的 VARIANT
结构调用 VariantClear
。
有关详细信息,请参阅 Windows SDK 中的 VARIANT、VARENUM 和 VariantClear 条目。
COleVariant::GetByteArrayFromVariantArray
从现有变体数组中检索字节数组
void GetByteArrayFromVariantArray(CByteArray& bytes);
参数
bytes
对现有 CByteArray 对象的引用。
COleVariant::operator LPCVARIANT
此强制转换运算符返回一个 VARIANT
结构,其值是从此 COleVariant
对象复制的。
operator LPCVARIANT() const;
注解
COleVariant::operator LPVARIANT
调用此强制转换运算符可访问此 COleVariant
对象的基础 VARIANT
结构。
operator LPVARIANT();
注解
注意
更改此函数返回的指针所访问的 VARIANT
结构中的值会更改此 COleVariant
对象的值。
COleVariant::operator =
这些重载的赋值运算符将源值复制到此 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);
备注
每个运算符的简要说明如下:
运算符 =(varSrc) 将现有 VARIANT 或
COleVariant
对象复制到此对象中。运算符 =(pSrc) 将 pSrc 访问的 VARIANT 对象复制到此对象中。
运算符 =(lpszSrc) 将 null 终止的字符串复制到此对象中,并将 VARTYPE 设置为VT_BSTR。
运算符 =(strSrc) 将 CString 对象复制到此对象中,并将 VARTYPE 设置为VT_BSTR。
运算符 =(nSrc) 将 8 位或 16 位整数值复制到此对象中。 如果 nSrc 是 8 位值,则此运算符的 VARTYPE 将设置为 VT_UI1。 如果 nSrc 是 16 位值,并且此运算符的 VARTYPE 为 VT_BOOL,则保留此设置;否则将其设置为 VT_I2。
运算符 =( lSrc) 将 32 位整数值复制到此对象中。 如果此运算符的 VARTYPE 为 VT_ERROR,则保留此设置;否则将其设置为 VT_I4。
运算符 =(curSrc) 将 COleCurrency 对象复制到此对象中,并将 VARTYPE 设置为VT_CY。
运算符 =(fltSrc) 将 32 位浮点值复制到此对象中,并将 VARTYPE 设置为VT_R4。
运算符 =(dblSrc) 将 64 位浮点值复制到此对象中,并将 VARTYPE 设置为VT_R8。
运算符 =(dateSrc) 将 COleDateTime 对象复制到此对象中,并将 VARTYPE 设置为VT_DATE。
运算符 =(arrSrc) 将 CByteArray 对象复制到此
COleVariant
对象中。运算符 =(lbSrc) 将 CLongBinary 对象复制到此
COleVariant
对象中。
有关详细信息,请参阅 Windows SDK 中的 VARIANT 和 VARENUM 条目。
COleVariant::operator ==
此运算符比较两个变体值,如果它们相等,则返回非零值;否则返回 0。
BOOL operator==(const VARIANT& varSrc) const;
BOOL operator==(LPCVARIANT pSrc) const;
COleVariant::operator <<
, COleVariant::operator >>
将 COleVariant
值输出到 CArchive
或 CdumpContext
,并从 CArchive
输入 COleVariant
对象。
friend CDumpContext& AFXAPI operator<<(
CDumpContext& dc,
OleVariant varSrc);
friend CArchive& AFXAPI operator<<(
CArchive& ar,
COleVariant varSrc);
friend CArchive& AFXAPI operator>>(
CArchive& ar,
COleVariant& varSrc);
备注
COleVariant
插入 (<<) 运算符支持诊断转储和存储到存档。 提取 (>>) 运算符支持从存档加载。
COleVariant::SetString
将字符串设置为特定类型。
void SetString(LPCTSTR lpszSrc, VARTYPE vtSrc);
参数
lpszSrc
要复制到新 COleVariant
对象中的以 null 结尾的字符串。
VtSrc
新 COleVariant
对象的 VARTYPE。
注解
参数 vtSrc 必须是 VT_BSTR (UNICODE) 或 VT_BSTRT (ANSI)。 SetString
通常用于将字符串设置为 ANSI,因为使用字符串或字符串指针参数但不使用 VARTYPE 的 COleVariant::COleVariant 构造函数的默认值为 UNICODE。
非 UNICODE 版本中的 DAO 记录集要求字符串为 ANSI。 因此,对于使用COleVariant
对象的 DAO 函数,如果不创建 UNICODE 记录集,则必须使用 COleVariant::COleVariant(lpszSrc,vtSrc)形式的构造函数,将 vtSrc 设置为VT_BSTRT(ANSI)或使用 SetString
vtSrc 设置为VT_BSTRT来生成 ANSI 字符串。 例如,CDaoRecordset
函数 CDaoRecordset::Seek 和 CDaoRecordset::SetFieldValue 使用 COleVariant
对象作为参数。 如果 DAO 记录集不是 UNICODE,则这些对象必须是 ANSI。