C O leVariant
COleVariant 没 有 基 类 。
- 个 COleVariant 对 象 封 装 了 VARIANT 数 据 类 型 。 这 个 数 据 类
型 用 于 OLE 自动 化 。 特 别 的 , DISPPARAMS 结 构 包 含 了 一 个 指 向 VARIANT 结 构 数 组 的 指针 。 一 个 DISPPARAMS 结 构 被 用 来 将 参 数 传 递 给 IDispatch::Invoke 。
注 意 这 个 类 是 从 VARIANT 结 构 派 生 而 来 的 。 这 意 味 着 你 可 以 在 调 用 需要 一 个 VARIANT 参 数 时 将 一 个 COleVariant 传 递 给 它 , 并 且 VARIA N T 结构 的 数 据 成 员 也 是 在 COleVariant 中 可 以 访 问 的 数 据 成 员 。
两 个 相 关 联 的 MFC 类 COleCurrency 和 COleDateTime 封 装 了 不 同 的 数 据 类 型
用 在 DAO 类 中 ; 参 考 这 些 类 可 以 获 得 有 关 COleVariant 类 的 典 型 用 法 , 比 如 说
CDaoQueryDef 和 CDaoRecordse t 。#include <afxdisp.h>
C O leVariant 类 成 员
Construction
ColeVariant 构 造 一 个 COleVariant 对 象
Operations
Attach 将 一 个 VARIANT 附 着 在 一 个 ColeVariant 上
ChangeType 改 变 此 COleVariant 对 象 的 可 变 类 型
Clear 清 除 这 个 COleVariant 对 象
Detach 将 一 个 VARIANT 从 一 个 COleVariant 上 分 离 , 并返 回 该 VARIANT
SetString 将 一 个 字 符 串 设 置 为 某 种 特 定 类 型 , 比 如 说 ANSI
Operators
Opetator LPCVARIANT 将 一 个 COleVariant 值 转 换 为 一 个 LPCVARIANT
O perator s Opetator LPVARIANT 将 一 个 COleVariant 值 转 换 为 一 个 LPVARIANT Opetator = 拷 贝 一 个 COleVariant 值
Opetator == 比 较 两 个 COleVariant 值
Archive/Dump
opetator<< 输 出 一 个 COleVariant 值 到 CArchive 或
CDumpContext
Opetator>> 从 CArchive 输 入 一 个 COleVariant 对 象
成 员 函 数
CO leVariant:: Attach
void Attach( VARIANT& varSrc );
参 数
varSrc
一 个 已 存 在 的 VARIANT 对 象 , 它 将 被 附 着 到 当 前 的 COleVariant 对 象 上 。
说 明
此 函 数 用 来 将 给 定 的 VARIANT 对 象 附 着 到 当 前 的 COleVariant 对 象 上 。 此 函数 将 varSrc 的 VARTYPE 设 置 为 VT_EMPTY 。
要 获 取 更 多 的 信 息 , 请 参 见 “ W in32 SDK OLE 程 序 员 参 考 ” 中 的 VARIANT
和 VARTYPE 项 。
请 参 阅 COleVariant::operator LPCVARIANT , COleVariant::operator LPVARIANT
CO leVariant:: 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& dateSrc ); COleVariant(const CByteArray& arrSrc ); COleVariant(const CLongBinary& lbSrc );
参 数
varSrc
- 个 已 存 在 的 COleVariant 或 VARIANT 对 象 , 将 要 被 拷 贝 到 新
的
COleVariant 对 象 中 。
pSrc
- 个 指 向 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 的 VAR IA N T
对 象 的 指 针 。
lpszSrc
- 个 以 空 字 符 结 尾 的 , 将 要 被 拷 贝 到 新 的 COleVariant 对 象
中 的 字 符 串 。
vtSrc
新的 COleVariant 对 象 的 VARTYPE 。
strSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 CString 对 象
。
nSrc, lSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 数 字 值 。
vtSrc
新的 COleVariant 对 象 的 VARTYPE 。
curSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 COleCurrency
对 象 。
fltSrc, dblSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 数 字 值 。
dateSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 COleDataTime
对 象 。
arrSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 CByteArray 对
象 。
lbSrc
- 个 将 要 被 拷 贝 到 新 的 COleVariant 对 象 中 去 的 CLongBinary 对
象 。
说 明
所 有 的 这 些 构 造 函 数 都 创 建 新 的 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_BOO L 。
-
COleVariant( lSrc , vtSrc ) 将 一 个 32 位 整 数 (或 SCODE 值
) 拷 贝 到 新 对 象中 。 参 数 vtSrc 必 须 是 VT_I4 , VT_ERROR 或 VT_BOO L。
-
COleVariant( curSrc ) 将 一 个 COleCurrency 值 拷 贝 到 新 对 象
中 , VT_CY 。
-
COleVariant( fltSrc ) 将 一 个 32 位 的 浮 点 数 拷 贝 到 新 对 象
中 , VT_R4 。
-
COleVariant( dblSrc ) 将 一 个 64 位 的 浮 点 数 拷 贝 到 新 对 象
中 , VT_R8 。
-
COleVariant( dateSrc ) 将 一 个 COleDataTime 值 拷 贝 到 新 对 象
中 ,
VT_DATE 。
- COleVariant( arrSrc ) 将 一 个 CByteArray 对 象 拷 贝 到 新 对 象
中 ,
VT_EMPTY 。
- COleVariant( lbSrc ) 将 一 个 CLongBinary 对 象 拷 贝 到 新 对 象
中 ,
VT_EMPTY 。
如 果 要 获 取 更 多 的 信 息 , 请 参 见“ Platform SDK ”中的 VARIANT 和 VARTYPE
项 。
要 获 取 更 多 关 于 SCODE 的 信 息 , 参 见 “ Platform SDK ” 中 的 “ COM 错 误 代 码结 构 ” 。
请 参 阅 COleVariant::operator = , CString, COleCurrency , COleDateTime
CO leVariant::ChangeType
void ChangeType( VARTYPE vartype , LPV A RIANT pSrc = NULL );
参 数
vartype
此 COleVariant 对 象 的 VARTYPE 。
pSrc
- 个 指 向 要 被 转 换 的 VARIANT 对 象 的 指 针 。 如 果 这 个 值 是
NULL , 则此 COleVariant 对 象 是 用 来 作 为 转 换 源 的 。
说 明
此 函 数 用 来 转 换 这 个 COleVariant 对 象 中 的 可 变 值 的 类 型 。
要 获 取 更 多 的 信 息 , 请 参 见 “ W in32 SDK OLE 程 序 员 参 考 ” 中 的 VARIANT , VARTYPE 和 VariantChangeType 项 。
请 参 阅 COleVariant::operator =
CO leVariant::Clear
void Clear ();
此 函 数 用 来 清 除 VARIAN T 。 函 数 为 此 对 象 将 VARTYPE 设 置 为 VT_EMPTY 。COleVariant 的 析 构 函 数 调 用 这 个 函 数 。
如 果 要 获 取 更 多 的 信 息 , 请 参 见 “ W in32 SDK OLE 程 序 员 参 考 ” 中 的
VARIANT , VARTYPE 和 VariantClear 项 。
CO leVariant::Detach VARIANT Detach(); 返 回 值
返 回 这 个 COleVariant 对 象 的 基 础 VARIANT 值 。
此 函 数 用 来 将 基 础 VARIAINT 对 象 从 COleVariant 对 象 上 分 离 。 函 数 为 此
COleVariant 对 象 将 VARTYPE 设 置 为 VT_EMPTY 。
注 意 在 调 用 Detach 后 , 由 调 用 者 负 责 基 于 结 果 中 的 VARIANT 结 构 来 调用 VariantClear 。
如 果 要 获 取 更 多 的 信 息 , 请 参 见 “ W in32 SDK OLE 程 序 员 参 考 ” 中 的
VARIANT , VARTYPE , 和 VariantClear 项。
请 参 阅 COleVariant::operator LPCVARIANT , COleVariant::operator LPVARIANT
CO leVariant::SetString
void SetString( LPCTSTR lpszSrc , VARTYPE vtSrc );
lpszSrc
一 个 以 null 结 尾 的 字 符 串 , 将 被 拷 贝 到 新 的 COleVariant 对 象 中 。
vtSrc
新的 COleVariant 对 象 的 VARTYPE 。
说 明
此 函 数 用 来 将 字 符 串 设 置 为 特 别 的 类 型 。 参 数 vtSrc 必 须 是 VT_BSTR
( UNICODE ) 或 VT_BSTRT ( ANS I) 。 SetString 通 常 被 用 来 将 字 符 串 设 置 为ANS I, 这 是 因 为 COleVariant:: COleVariant 构 造 函 数 有 一 个 字 符 串 或 字 符 串 指针 参 数 , 并 且 没 有 VARTYPE 是 U N ICODE 。
在 一 个 非 UNICODE 构 造 中 , 一 个 DAO 记 录 集 希 望 字 符 串 是 ANS I。 因 此 , 对于 使 用 COleVariant 对 象 的 DAO 函 数 , 如 果 你 不 是 在 创 建 一 个 UNICODE 记 录
集 , 你 就 必 须 使 用 COleVariant:: COleVariant( lpszSrc , vtSrc ) 形 式 的 构 造 函 数 , 并 且 将 vtSrc 设 置 为 VT_BSTRT ( ANS I) ; 或 使 用 SetString 并 且 将 vtSrc 设置为 VT_BSTRT 来 产 生 一 个 ANSI 字 符 串 。 例 如 , CDaoRecordset 函 数CDaoRecordset::Seek 和 CDaoRecordset::SetFieldValue 使 用 COleVariant 对 象 作为 参 数 。 如 果 这 些 DAO 记 录 集 不 是 UNICODE 的 , 则 这 些 对 象 必 须 是 ANSI 。
请 参 阅 COleVariant:: COleVariant , CDaoRecordset::Seek ,
CDaoRecordset::SetFieldValue
操 作 符
CO leVariant::operator =
const COleVariant& operator = ( const VARIANT& varSrc ); const COleVariant& operator = ( LPCVARIANT pSrc );
const COleVariant& operator = ( const COleVariant& Src ); const COleVariant& operator = (const LPCTSTR lpszSrc ); const COleVariant& operator = (const CString& strSrc ); const COleVariant& operator = (const BYTE nSrc );
const COleVariant& operator = (const short nSrc ); const COleVariant& operator = (const long lSrc );
const COleVariant& operator = (const COleCurrency& curSrc ); const COleVariant& operator = (const float fltSrc );
const COleVariant& operator = (const double dblSrc );
const COleVariant& operator = (const COleDateTime& dateSrc ); const COleVariant& operator = (const CByteArray& arrSrc ); const COleVariant& operator = (const CLongBinary& lbSrc );
说 明
这 些 重 载 的 赋 值 操 作 符 都 将 源 数 据 拷 贝 到 COleVariant 对 象 中 。 对 于 每 一 个 操作 符 的 简 短 描 述 如 下 所 示 :
-
operator = (varSrc ) 将 一 个 已 存 在 的 VARIANT 或 COleVariant
对 象 拷 贝 到此 对 象 中 。
-
operator = ( pSrc ) 将 由 pSrc 访 问 的 VARIANT 对 象 拷 贝 到 此
对 象 中 。
-
operator = (lpszSrc ) 将 一 个 以 空 字 符 结 尾 的 字 符 串 拷 贝
到 此 对 象 中 , 并 将
VARTYPE 设 置 为 VT_BSTR 。
- operator = (strSrc ) 将 一 个 CStrin 对 象 拷 贝 到 此 对 象 中 ,
并 将 VARTYPE
设 置 为 VT_BSTR 。
-
operator = ( nSrc ) 将 一 个 8 位 或 16 位 的 整 数 值 拷 贝 到 此
对 象 中 。 如 果 nSrc 是 一 个 8 位 的 值 , 则 将 VARTYPE 设 置 为 VT_UI1 。 如 果 nSrc 是 一 个 16 位的 值 并 且 VARTYPE 的 值 是 VT_BOOL , 则 保 持 它 ; 否 则 , 将 其 设 置 为VT_I2 。
-
operator = (lSrc ) 将 一 个 32 位 的 整 数 值 拷 贝 到 此 对 象 中
。 如 果 VARTYPE
是 VT_ERROR , 则 保 持 它 ; 否 则 , 将 其 设 置 为 VT_I4 。
- operator = (curSrc ) 将 一 个 COleCurrency 对 象 拷 贝 到 此 对 象
中 , 并 将
VARTYPE 设 置 为 VT_CY 。
- operator = ( fltSrc ) 将 一 个 32 位 的 浮 点 值 拷 贝 到 此 对 象
中 , 并 将 VARTYPE
设 置 为 VT_R4 。
- operator = ( dblSrc ) 将 一 个 64 位 的 浮 点 值 拷 贝 到 此 对 象
中 ,并将 VARTYPE
设 置 为 VT_R8 。
- operator = ( dateSrc ) 将 一 个 COleDateTime 对 象 拷 贝 到 此 对
象 中 , 并 将
VARTYPE 设 置 为 VT_DATE 。
-
operator = ( arrSrc ) 将 一 个 CByteArray 对 象 拷 贝 到 此 对 象
中 。
-
operator = ( lbSrc ) 将 一 个 CLongBinary 对 象 拷 贝 到 此 对 象
中 。
如 果 要 获 取 更 多 的 信 息 ,请 参 见“ W in32 SDK OLE 程 序 员 参 考 ”中 的 VARIANT
和 VARTYPE 项 。
请 参 阅 COleVariant::COleVariant , COleCurrenc y, COleDateTime
CO leVariant::operator ==
BOOL operator == ( const VARIANT& varSrc ) const; BOOL operator == (LPCVARIANT pSrc ) const;
说 明
此 操 作 符 比 较 两 个 不 同 的 值 , 如 果 它 们 相 等 则 返 回 非 零 值 ; 否 则 返 回 0 。
请 参 阅 COleVariant::operator =
CO leVariant::operator LPCVARIANT
operator LPCVARIANT() const;
说 明
此 操 作 符 返 回 一 个 VARIANT 结 构 , 该 结 构 的 值 是 从 此 COleVariant 对 象 中 拷贝 获 得 的 。
如 果 要 获 取 更 多 的 信 息 ,请 参 见“ W in32 SDK OLE 程 序 员 参 考 ”中 的 VARIANT
项 。
请 参 阅 COleVariant::operator LPVARIANT
CO leVariant::operator LPVARIANT
operator LPVARIANT();
说 明
此 操 作 符 用 来 访 问 COleVariant 对 象 中 的 基 础 VARIANT 结 构 。
警 告 改 变 由 这 个 函 数 返 回 的 指 针 所 指 的 VARIANT 结 构 中 的 值 , 就 会 导致 改 变 此 COleVariant 对 象 中 的 值 。
如 果 要 获 取 更 多 的 信 息 ,请 参 见“ W in32 SDK OLE 程 序 员 参 考 ”中 的 VARIANT
项 。
请 参 阅 COleVariant::operator LPCVARIANT
CO leVariant::operator <<,>>
friend CDumpContext& AFXAPE operator<<( CDumpContext& dc , OleVariant
varSrc );
friend CArchive& AFXAPI operator << ( CArchive& ar , COleVariant varSrc ); friend CArchive& AFXAPI operator >> ( CArchive& ar , COleVariant& varSrc );
说 明
COleVariant 的 插 入 操 作 符 ( << ) 支 持 诊 断 转 储 并 可 以 保 存 到 一 个 文 件 。 提 取操 作 符 ( >> ) 支 持 从 一 个 文 件 中 提 取 内 容 。
请 参 阅 CDumpContext , Carchive