CPropExchange

CPropExchange 没 有 基 类 。

建 立 一 个 属 性 交 换 的 环 境 和 方 向 。

CPropExchange 类 支 持 应 用 程 序 的 OLE 控 件 的 永 久 性 实 现 。 永 久 性 是 控 件 的 状态 信 息 在 控 件 本 身 与 某 种 媒 介 之 间 的 交 换 , 通 常 这 些 状 态 信 息 由 控 件 的 属 性 来表 现 。

当 框 架 获 知 要 从 存 储 器 载 入 一 个 OLE 控 件 的 属 性 , 或 是 要 将 这 些 属 性 存 入 永久 存 储 器 时 , 它 就 构 造 一 个 从 CPropExchange 派 生 的 对 象 。

框 架 将 一 个 指 向 这 个 CPropExchange 对 象 的 指 针 传 递 给 你 的 控 件 的

DoPropExchange 函 数 。 如 果 你 使 用 ClassWizard 来 为 你 的 控 件 创 建 开 始 文 件 , 则 控 件 的 DoPropExchange 函 数 调 用 COleControl::DoPropExchange。 这 个 基 类版 本 交 换 控 件 的 固 有 属 性 ; 你 可 以 修 改 你 的 派 生 类 版 本 来 交 换 那 些 你 给 控 件 添加 的 属 性 。

在 载 入 或 创 建 一 个 控 件 的 时 候 , 可 以 使 用 CPropExchange 来 使 控 件 的 属 性 连 续 , 或 初 始 化 控 件 的 属 性 。 CPropExchange 的 成 员 函 数 ExchangeProp 和ExchangeFontProp 可 以 用 来 将 控 件 的 属 性 存 入 不 同 的 介 质 , 并 从 不 同 的 介 质 载入 属 性 。

#include <afxctl.h>

请 参 阅 COleControl:: DoPropExchange

CPropExchange 类 成 员

Operations

ExchangeFontProp 交 换 一 个 字 体 属 性

ExchangeProp 交 换 任 何 内 建 的 类 型 属 性ExchangBlobProp 交 换 一 个 二 进 制 的 大 对 象 ( BLOB ) 属 性ExchangePersistertProp 在 一 个 控 件 和 一 个 文 件 之 间 交 换 一 个 属 性ExchangeVersion 交 换 一 个 OLE 控 件 的 版 本 号

IsLoading 表 明 属 性 是 被 载 入 一 个 控 件 还 是 从 控 件 被 保 存

GetVersion 获 取 一 个 OLE 控 件 的 版 本 号

成 员 函 数

CPropExchange::Exch a ngeBlobProp

virtual BOOL ExchangeBlobProp( LPCTSTR pszPropNam e, void** ppvBlob , const void* pvBlobDefault = NULL ) = 0;

如 果 交 换 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pszPropName

要 交 换 的 属 性 的 名 字 。

ppvBlob

指 向 一 个 变 量 的 指 针 , 该 变 量 指 向 属 性 所 保 存 的 地 方 ( 变 量 通 常 是 你 的 类的 成 员 ) 。

pvBlobDefault

属 性 的 缺 省 值 。

此 函 数 用 来 使 一 个 保 存 二 进 制 大 对 象 ( BLO B ) 数 据 的 属 性 连 续 。

属 性 的 值 从 由 ppvBlob 引 用 的 变 量 中 读 出 , 或 在 适 当 的 时 候 将 属 性 值 写 入 这 个变 量 。 如 果 指 定 了 pvBlobDefault , 它 将 被 用 来 作 为 属 性 的 缺 省 值 。 如 果 由 于 某种 原 因 , 控 件 的 连 续 失 败 了 , 则 使 用 这 个 值 。

函 数 CArchivePropExchange::ExchangeBlobProp , CRes e tPropExchange::ExchangeBlobProp 和CPropsetPropExchange::ExchangeBlobProp 加 载 这 个 纯 虚 函 数 。

请 参 阅 COleControl::DoPropExchange, CPropExchange::ExchangeFontProp ,

CPropExchange::ExchangePersistentProp ,

CPropExchange::ExchangeProp

CPropExchange::ExchangeFontProp

virtual BOOL ExchangeFontProp( LPCTSTR pszPropNam e, CFontHolder& fon t, const FONTDESC FAR* pFontDesc ,LPFONTDISP pFontDispAmbient ) = 0;

返 回 值

如 果 交 换 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pszPropName

要 交 换 的 属 性 的 名 字 。

font

一个 CFontHolder 对 象 的 引 用 , 该 对 象 包 含 了 字 体 属 性 。

pFontDesc

指 向 一 个 FONTDESC 结 构 的 指 针 , 当 pFontDispAmbient 是 NULL 时 ,

该 结 构 包 含 了 用 来 初 始 化 字 体 属 性 的 缺 省 状 态 的 值 。

pFontDispAmbient

一 个 指 向 字 体 的 IFontDisp 接 口 的 指 针 , 用 来 初 始 化 字 体 属 性 的 缺 省 状 态 。

说 明

此 函 数 用 来 在 某 种 存 储 介 质 和 控 件 之 间 交 换 字 体 属 性 。

如 果 字 体 属 性 正 在 从 介 质 载 入 控 件 , 则 从 介 质 中 获 取 字 体 的 特 征 , 并 用 来 初 始化 由 font 引 用 的 CFontHolder 对 象 。 如 果 正 在 保 存 字 体 属 性 , 则 字 体 对 象 的 特征 被 写 入 介 质 。

函 数 CArchivePropExchange::ExchangeFontProp , CRestPropExchange::ExchangeFontProp 和CPropsetPropExchange::ExchangeFontProp 加 载 这 个 纯 虚 函 数 。

请 参 阅 COleControl::DoPropExchange, CPropExchange::ExchangeBlobProp ,

CPropExchange::ExchangePersistentProp ,

CPropExchange::ExchangeProp

C PropExchange::ExchangePersistentProp

virtual BOOL ExchangePersistentProp( LPCTSTR pszPropNam e,

LPUNKNOWN FAR* ppUnk , REFIID iid , LPUNKNOWN pUnkDefault ) = 0;

返 回 值

如 果 交 换 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pszPropName

要 交 换 的 属 性 的 名 字 。

ppUnk

指 向 一 个 变 量 的 指 针 , 该 变 量 包 含 了 一 个 指 向 属 性 的 IUnknown 接 口 的指 针 ( 此 变 量 通 常 是 你 的 类 的 成 员 ) 。

iid

控 件 要 使 用 的 有 关 这 个 属 性 的 接 口 的 接 口 指 针 。

pUnkDefault

这 个 属 性 的 缺 省 值 。

说 明

此 函 数 用 来 在 控 件 和 一 个 文 件 之 间 交 换 属 性 。

如 果 属 性 正 被 从 文 件 载 入 到 控 件 , 则 属 性 被 从 文 件 创 建 并 初 始 化 。 如 果 正 保 存属 性 , 则 属 性 的 值 被 写 入 文 件 。

函 数 CArchivePropExchange::ExchangePersistentProp ,

CRes e tPropExchange::ExchangePersis t- entProp 和

CPropsetPropExchange::ExchangePersiste n tProp 加 载 这 个 纯 虚 函 数 。

请 参 阅 COleControl::DoPropExchange, CPropExchange::ExchangeBlobProp , CPropExchange::ExchangeFontProp, CPropExchange::ExchangeProp

CPropExchange::ExchangeProp

virtual BOOL ExchangeProp( LPCTSTR pszPropName , VARTYPE vtProp , void*

pvProp ,

const void* pvDefault = NULL ) = 0;

返 回 值

如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

pszPropName

要 交 换 的 属 性 的 名 字 。

vtProp

一 个 符 号 , 用 来 指 定 要 交 换 的 属 性 的 类 型 。 可 能 的 取 值 如 下 :

Symbol PropertyType

VT_I2 短 型 ( short )

VT_I4 长 型 ( long)

VT_BOOL 布 尔 型 ( BOO L )

VT_BSTR CString

VT_CY CY

VT_R4 浮 点 型 ( floa t)

VT_R8 双 精 度 型 ( double )

pvProp

一 个 指 向 属 性 值 的 指 针 。

pvDefault

指 向 属 性 的 一 个 缺 省 值 的 指 针 。

此 函 数 用 来 在 某 个 存 储 介 质 和 控 件 之 间 交 换 属 性 。

如 果 属 性 正 被 从 介 质 载 入 控 件 , 则 从 介 质 中 获 取 属 性 的 值 , 并 将 这 个 值 存 入 由pvProp 指 向 的 控 件 中 。 如 果 正 将 属 性 存 入 介 质 , 则 由 pvProp 所 指 向 的 控 件 的值 被 写 入 介 质 中 。

函 数 CArchivePropExchange::ExchangeProp , CRe se tPropExchange::ExchangeProp

和 CPropsetPropExchange::ExchangeProp 加 载 这 个 纯 虚 函 数 。

请 参 阅 COleControl::DoPropExchange, CPropExchange::ExchangeBlobProp , CPropExchange::ExchangeFontProp ,

CPropExchange::ExchangePersisentProp

CPropExchange::ExchangeVersion

BOOL ExchangeVersion ( DWORD& dwVersionLoaded ,DWORD

dwVersionDefault , BOOL bConvert );

返 回 值

如 果 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwVersion Loaded

指 向 一 个 变 量 的 引 用 , 该 变 量 用 来 保 存 被 载 入 的 永 久 数 据 的 版 本 号 。

dwVersionDefault

控 件 的 当 前 版 本 号 。

bConvert

用 来 表 明 是 将 永 久 数 据 转 换 为 当 前 的 版 本 号 , 还 是 保 持 它 载 入 时 的 版 本

号 。

说 明

框 架 调 用 此 函 数 来 处 理 一 个 版 本 号 的 持 续 性 。

请 参 阅 COleControl::ExchangeVersion

CPropExchange::GetVersion

DWORD GetVersion();

返 回 值

返 回 控 件 的 版 本 号 。

说 明

此 函 数 用 来 获 取 控 件 的 版 本 号 。

CPropExchange::IsLoading

BOOL IsLoading();

返 回 值

如 果 属 性 被 载 入 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

此 函 数 用 来 确 定 属 性 是 被 载 入 控 件 , 还 是 被 从 控 件 保 存 。

请 参 阅 COleControl::DoPropExchange