第 三 章 A c tiv e X 框 架

第 三 章 A c tiv e X 框 架 - 图1第 三 章 A c tiv e X 框 架 - 图2第 三 章 A c tiv e X 框 架 - 图3第 三 章 A c tiv e X 框 架 - 图4第 三 章 A c tiv e X 框 架 - 图5第 三 章 A c tiv e X 框 架 - 图6第 三 章 A c tiv e X 框 架 - 图7第 三 章 A c tiv e X 框 架 - 图8Bo r la n d ® 公 司 在 面 向 对 象 领 域 一 直 处 于 世 界 领 先 地 位 A c tiv e X 框 架 就 是 他的 又 一 杰 作 A c tiv e X 框 架 中 封 装 了 许 多 CO M 和 A c tiv e X 的 接 口 和 函 数 使开 发 基 于 CO M 和 A c tiv e X 的 应 用 变 得 非 常 简 单 不 仅 如 此 A c tiv e X 框 架 还允 许 过 去 基 于 T W in C on tro l的 控 件 转 换 成 为 A c tiv e X 控 件 从 而 使 大 量 的 基 于VC L 的 控 件 可 以 应 用 到 其 它 开 发 环 境 如 M ic ros oft的 V isu a l B a sic 4 . 0 和 5 .0

第 三 章 A c tiv e X 框 架 - 图9第 三 章 A c tiv e X 框 架 - 图10第 三 章 A c tiv e X 框 架 - 图11V is u a l C + + 4 . x In te rn e t E xp lore r 3 .0 和 4 .0 A c tiv e X C o n tro l P a d F ron tP a ge 98

第 三 章 A c tiv e X 框 架 - 图12第 三 章 A c tiv e X 框 架 - 图13第 三 章 A c tiv e X 框 架 - 图14以 及 Bo r la n d 的 D e lphi 3 In traB u i ld er P a ra dox 8 等

1 什 么 是 Ac ti ve X 框 架

第 三 章 A c tiv e X 框 架 - 图15第 三 章 A c tiv e X 框 架 - 图16第 三 章 A c tiv e X 框 架 - 图17第 三 章 A c tiv e X 框 架 - 图18第 三 章 A c tiv e X 框 架 - 图19第 三 章 A c tiv e X 框 架 - 图20第 三 章 A c tiv e X 框 架 - 图21A c tiv e X 框 架 实 际 上 是 一 组 有 继 承 关 系 的 类 的 统 称 这 些 类 分 别 用 于 实 现 简单 的 CO M 对 象 带 类 型 信 息 描 述 的 CO M 对 象 OL E 自 动 化 服 务 器 A c tiv e X 控 件 A c tiv e F o rm 以 及 特 性 页 等 这 些 类 及 其 继 承 关 系 如 下

TC o m O b je c t // 简 单 的 CO M 对 象

T T y p ed C o m O b ject // 带 类 型 信 息 描 述 的 CO M 对 象

T A u toO b je c t // O L E 自 动 化 服 务 器 的 基 类

T A ctiv eX C o n tro l // 任 何 一 个 A c tiv e X 控 件 的 直 接 上 级

T C o m S e rv er O b ject // T C o m S erv e r的 虚 拟 基 类

T C o m S e rv e r //C O M 服 务 器 的 基 类

第 三 章 A c tiv e X 框 架 - 图22T C u s to m F o rm //T F o rm T A c tiv e F o rm 的 共 同 基 类

T A ctiv eF o rm // 复 合 的 A c tiv e X 控 件

T C us to m F orm // 特 性 页 实 际 上 也 是 Fo rm T P rope r ty P a g e // 特 性 页 的 基 类

T C o m O b je c t F acto r y // 用 于 注 册 简 单 的 CO M 对 象

T A ctiv eX P ro p e r tyP ag eF acto r y //用 于 注 册 A c tiv e X 控 件 的 特 性 页

T T y p ed C o m O b jectF a c to r y // 用 于 注 册 带 类 型 信 息 描 述 的 CO M 对 象

T A u toO b jc e t F a c tor y // 用 于 注 册 OL E 自 动 化 服 务 器

T A ctiv eX C o n tro l F acto ry // 用 于 注 册 A c tiv e X 控 件

T a c t iv eF o rm F ac to r y // 用 于 注 册 A c tiv e F o rm

  1. 2 TI nt er fac ed Ob je ct

第 三 章 A c tiv e X 框 架 - 图23T In te r fa c e dO b je c t是 这 样 声 明 的

cla s s D E L P H IC L A S S T In terfaced O b je c t : T O b je c t

{

priv a te :

vo id * IU n k n ow n; in t F R e f C oun t;

pro te c te d:

v ir tu a l H R e su lt _s td c a l l Q u e ry In te r fa c e ( c ons t G U ID & I ID , vo id * O bj); v ir tu a l in t _s td c a l l _A dd R e f ( v o id);

v ir tu a l in t _ s td c a ll _ R e le a se ( v o id ) ; pub l ic :

_p rop e r ty in t R e f C oun t;

};

第 三 章 A c tiv e X 框 架 - 图24第 三 章 A c tiv e X 框 架 - 图25第 三 章 A c tiv e X 框 架 - 图26第 三 章 A c tiv e X 框 架 - 图27第 三 章 A c tiv e X 框 架 - 图28第 三 章 A c tiv e X 框 架 - 图29第 三 章 A c tiv e X 框 架 - 图30可 以 看 出 T In te r faced O b ject 是 直 接 从 T O b ject 继 承 下 来 的 用 于 实 现IU nknow n 接 口 我 们 知 道 IU nkno w n 接 口 是 C+ + Bu ild e r 3 中 所 有 接 口 的 默认 祖 先 接 口 因 此 T In te r faced O b ject往 往 用 于 作 为 接 口 对 象 的 基 类

第 三 章 A c tiv e X 框 架 - 图31第 三 章 A c tiv e X 框 架 - 图32第 三 章 A c tiv e X 框 架 - 图33T In te r fa c e dO b je c t没 有 也 不 需 要 类 工 厂 因 此 那 些 从 T In te r faced O b ject继 承下 来 的 接 口 对 象 应 当 调 用 自 己 的 构 造 函 数 来 创 建 接 口 对 象 的 实 例

第 三 章 A c tiv e X 框 架 - 图34第 三 章 A c tiv e X 框 架 - 图35第 三 章 A c tiv e X 框 架 - 图36根 据 类 型 相 容 的 规 则 从 T In te r faced O b ject继 承 下 来 的 派 生 类 的 实 例 可 以 赋值 给 T In te r fa c e dO b je c t的 变 量 但 赋 值 并 不 总 是 成 功 的

  1. 3 TC om Ob jec t

第 三 章 A c tiv e X 框 架 - 图37TC o m O b je c t是 C+ + Bu ild e r 3 中 非 常 重 要 的 一 个 类 通 常 用 于 作 为 简 单 的 CO M

第 三 章 A c tiv e X 框 架 - 图38第 三 章 A c tiv e X 框 架 - 图39对 象 的 基 类 T C o m O b ject同 时 支 持 IU nknow n 接 口 和 IS upport E r ror In fo 接 口

第 三 章 A c tiv e X 框 架 - 图40TC o m O b je c t在 Co m O b j单 元 中 是 这 样 声 明 的

c la s s P A S C A L IM P L E M EN TA T IO N TC o m O b je c t : p u b l ic S y s te m : : TO b je c t

{

ty p e d e f S y s te m ::T O b je c t in h e rite d ; priv a te :

v o id *_ IU nk n o w n ;

v o id * _ IS u p p o rt E r ro rIn fo ; pub l ic :

_ fa s tc a ll T C o m O b je c t( v o id ) ;

_ fa s tc a ll T C o m O b je c t( c o n s t _ d i_ IU n k n o w n C o n tro lle r ) ;

_fa s tc a l l T C om O b je c t( T C o m O b je c t F a c tory * F a c to ry , c ons t _d i_IU n k now n C o n tro l le r ) ;

_ fa s tc a ll v ir tu a l ~ T C o m O b je c t( v o id ) ; v ir tu a l v o id _ fa s tc a ll In itia liz e ( v o id ) ; v ir tu a l in t _ s td c a ll O b j A d d R e f ( v o id ) ;

v ir tu a l H R E S U L T _ s td call O b j Q u e ry In te r face( co ns t G U ID & I ID , v o id * O bj); v ir tu a l in t _ s td c a ll O b j R e le a se ( v o id ) ;

v ir tu a l H R E S U L T _ fa s tc a l l S a fe C a llE x c e p tio n ( S y s te m ::T O b je c t* E x c e p tO b je c t, v o id * E x c e p t A d d r);

_p rop e r ty _d i_ IU n k now n C on tro l le r ;

_p rop e r ty T C om O b je c t F a c tory * F a c tory ;

_p rop e r ty in t R e f C ount = { re a d = F R e f C o un t, n o d e fa u lt} ;

};

第 三 章 A c tiv e X 框 架 - 图41第 三 章 A c tiv e X 框 架 - 图42第 三 章 A c tiv e X 框 架 - 图43第 三 章 A c tiv e X 框 架 - 图44TC o m O b je c t有 三 个 构 造 函 数 这 意 味 着 它 可 以 有 三 种 创 建 方 式

  • 没 有 参 数 的 构 造 函 数

用 于 把 它 实 例 化 成 一 个 简 单 的 CO M 对 象

  • 带 1 个 参 数 的 构 造 函 数

用 于 把 它 实 例 化 成 聚 合 的 一 部 分

  • 带 2 个 参 数 的 构 造 函 数

用 于 把 它 实 例 化 成 一 个 简 单 的 CO M 对 象

第 三 章 A c tiv e X 框 架 - 图45第 三 章 A c tiv e X 框 架 - 图46第 三 章 A c tiv e X 框 架 - 图47第 三 章 A c tiv e X 框 架 - 图48第 三 章 A c tiv e X 框 架 - 图49建 实 例 的 同 时 还 对 实 例 进 行 初 始 化

第 三 章 A c tiv e X 框 架 - 图50第 三 章 A c tiv e X 框 架 - 图51第 三 章 A c tiv e X 框 架 - 图52第 三 章 A c tiv e X 框 架 - 图53第 三 章 A c tiv e X 框 架 - 图54第 三 章 A c tiv e X 框 架 - 图55TC o m O b je c t同 时 支 持 IU nknow n 接 口 和 IS upport E r ro r Info 接 口 这 就 是 所 谓 的接 口 聚 合 这 样 一 个 OL E 自 动 化 客 户 程 序 就 可 以 查 询 到 错 误 信 息

第 三 章 A c tiv e X 框 架 - 图56第 三 章 A c tiv e X 框 架 - 图57第 三 章 A c tiv e X 框 架 - 图58第 三 章 A c tiv e X 框 架 - 图59并 且 保 证 错 误 信 息 能 沿 着 调 用 链 逐 级 传 播 通 过 实 现 IS upport E r ror In fo 接 口中 的 In te r faceS upports E r ro r In fo 方 法 TC o m O b je c t 支 持 IE rro r In fo 策 略 因 而也 支 持 OL E 异 常 处 理 和 Sa fe C a ll调 用 约 定

C o n tro lle r 特 性

第 三 章 A c tiv e X 框 架 - 图60声 明 _prope r ty _d i_ IU nknow n C on tro lle r ;

第 三 章 A c tiv e X 框 架 - 图61第 三 章 A c tiv e X 框 架 - 图62这 个 特 性 用 于 在 一 个 聚 合 的 对 象 内 返 回 IU nkno w n 接 口 如 果 返 回 NUL L 表示 对 象 不 是 聚 合 的 一 部 分

Fa c to r y 特 性

第 三 章 A c tiv e X 框 架 - 图63声 明 _prope r ty T C o m O b je c t F a c tor y * F a c tor y ;

第 三 章 A c tiv e X 框 架 - 图64第 三 章 A c tiv e X 框 架 - 图65这 个 特 性 返 回 CO M 对 象 的 类 工 厂 类 工 厂 用 于 创 建 T C o m O b ject的 实 例

R e f C o unt

第 三 章 A c tiv e X 框 架 - 图66声 明 _prope r ty in t R e f C oun t;

第 三 章 A c tiv e X 框 架 - 图67这 个 特 性 返 回 CO M 对 象 的 引 用 计 数 它 是 由 IU nknow n 接 口 的 A d d R e f 和

第 三 章 A c tiv e X 框 架 - 图68R e le a s e 自 动 维 护 的

I n itia liz e 函 数

第 三 章 A c tiv e X 框 架 - 图69声 明 v ir tua l vo id _fa s tc a ll In itia liz e ( vo id);

第 三 章 A c tiv e X 框 架 - 图70第 三 章 A c tiv e X 框 架 - 图71第 三 章 A c tiv e X 框 架 - 图72第 三 章 A c tiv e X 框 架 - 图73第 三 章 A c tiv e X 框 架 - 图74第 三 章 A c tiv e X 框 架 - 图75CO M 对 象 可 以 重 载 这 个 虚 拟 方 法 对 实 例 进 行 初 始 化 注 意 调 用 构 造 函数 时 已 经 对 实 例 进 行 了 默 认 的 初 始 化 因 此 In itia liz e 不 要 重 复 这 些 初 始 化的 内 容

O b j A dd R e f 函 数

第 三 章 A c tiv e X 框 架 - 图76声 明 v ir tua l in t _s td c a l l O b j A ddR e f ( vo id);

第 三 章 A c tiv e X 框 架 - 图77这 个 函 数 是 从 IU nkno w n 接 口 中 的 _A ddR e f 映 射 过 来 的 用 于 重 新 实 现

第 三 章 A c tiv e X 框 架 - 图78_A ddR e f

O b j R e le a s e 函 数

第 三 章 A c tiv e X 框 架 - 图79声 明 v ir tua l in t _s td c a l l O b j R e le a s e ( vo id);

第 三 章 A c tiv e X 框 架 - 图80这 个 函 数 是 从 IU nkno w n 接 口 中 的 _R e le a s e 映 射 过 来 的 用 于 重 新 实 现

第 三 章 A c tiv e X 框 架 - 图81_R e le a s e

O b j Q u e r y I n ter fa c e 函 数

第 三 章 A c tiv e X 框 架 - 图82声 明 v ir tua l H R E S U L T _s td c a l l O b j Q ue ry In te r fa c e ( c ons t G U ID & I ID , vo id

*O b j) ;

第 三 章 A c tiv e X 框 架 - 图83第 三 章 A c tiv e X 框 架 - 图84第 三 章 A c tiv e X 框 架 - 图85第 三 章 A c tiv e X 框 架 - 图86第 三 章 A c tiv e X 框 架 - 图87这 个 函 数 是 从 IU nkno w n 接 口 中 的 Q u ery In terfa c e 映 射 过 来 的 用 于 重 新 实 现Q u eryIn terface Q u eryIn terface 函 数 用 于 判 断 CO M 对 象 是 否 支 持 IID 参 数 指 定的 接 口 如 果 CO M 对 象 不 是 聚 合 的 一 部 分 就 用 O b j Q u e ry In te r fa c e 来 实 现IU nknow n 的 Q u ery In te r - face

3 . 4 TT yp ed Com Ob je ct

第 三 章 A c tiv e X 框 架 - 图88第 三 章 A c tiv e X 框 架 - 图89第 三 章 A c tiv e X 框 架 - 图90第 三 章 A c tiv e X 框 架 - 图91T T y p ed C o m O b ject是 从 TC o m O b je c t继 承 下 来 的 支 持 IP rov ide C la s s Info 接 口在 Co m O b j单 元 中 T T yp ed C o m O b jec t是 这 样 声 明 的

c la s s P A S C A L IM P L E M E N T A T IO N T T y p e d C o m O b je c t : p u b lic C o m o b j::T C o m O b je c t

{

ty p e d e f C o m o b j::T C o m O b je c t in h e rite d ; priv a te :

v o id *_ IP ro v id e C la s s In fo; pub l ic :

ope ra to r IP ro v ide C la s s In fo * ( v o id)

{ re tu rn ( IP rov id e C la s s In fo * )& _IP rov ide C la ss In fo; } pub l ic :

_fa s tc a l l T T y pe dC o m O b je c t( vo id) : C o m o b j : : T C o m O b je c t( ) { }

_ fa s tc a ll T T y p e d C o m O b je c t( c o n s t _ d i_ IU n k n o w n C o n tro lle r ) : C o m o b j :: T C o m O b je c t( C o n tro l le r ) { }

_fa s tc a l l T T y pe dC o m O b je c t( T C o m O b je c t F a c tory * F a c tory , c ons t _d i_IU n k n ow n C o n tro lle r ) : C o m o b j::T C o m O b je c t( F a c to ry , C o n tro lle r ) { }

_fa s tc a l l v ir tua l ~ T T y pe d C om O b je c t( v o id) { }

};

第 三 章 A c tiv e X 框 架 - 图92第 三 章 A c tiv e X 框 架 - 图93第 三 章 A c tiv e X 框 架 - 图94第 三 章 A c tiv e X 框 架 - 图95第 三 章 A c tiv e X 框 架 - 图96T T y p ed C o m O b ject 最 大 的 特 点 是 支 持 IP rov ide C la s s Info 接 口 可 以 直 接 读 取类 型 信 息 而 不 需 要 事 先 调 入 类 型 库 正 是 由 于 这 个 特 点 凡 是 以T T y p ed C o m O b ject为 基 类 的 CO M 对 象 必 须 在 类 型 库 中 提 供 类 型 信 息 描 述

3 . 5 TA ut oO bje ct

第 三 章 A c tiv e X 框 架 - 图97第 三 章 A c tiv e X 框 架 - 图98第 三 章 A c tiv e X 框 架 - 图99第 三 章 A c tiv e X 框 架 - 图100第 三 章 A c tiv e X 框 架 - 图101T A u toO b je c t用 于 作 为 OL E 自 动 化 服 务 器 的 基 类 同 时 由 于 A c tiv e X 本 质 上也 是 基 于 OL E 自 动 化 因 此 T A u toO b je c t也 是 T A ctiv eX C o n tro l的 祖 先 类

第 三 章 A c tiv e X 框 架 - 图102第 三 章 A c tiv e X 框 架 - 图103在 Co m O b j单 元 中 T A u toO b je c t是 这 样 声 明 的

c la s s P A S C A L IM P L E M EN TA T IO N TA u to O b je c t : p u b l ic C o m o b j : : TTy p e d C o m O b je c t

{

ty pe de f C o m o b j : : T T y pe d C om O b je c t in h e r i te d; priv a te :

vo id * _ ID ispa tc h;

pub l ic :

_fa s tc a l l T A u toO b je c t( v o id) : C o m o b j : : T T y pe dC o m O b je c t( ) { }

_ fa s tc a ll T A u to O b je c t( c o n s t _ d i_ IU n k n o w n C o n tro lle r ) : C o m o b j:: T T y p e d C o m O b je c t( C o n tro lle r ) { }

_fa s tc a l l T A u toO b je c t( T C o m O b je c t F a c tory * F a c tory , c ons t _ d i_ IU n k n o w n C o n tro l le r ) : C o m o b j : : T T y pe dC om O b je c t( F a c tory , C o n tro l le r ) { }

_ fa s tc a ll v ir tu a l ~ T A u to O b je c t( v o id ) { }

};

第 三 章 A c tiv e X 框 架 - 图104第 三 章 A c tiv e X 框 架 - 图105第 三 章 A c tiv e X 框 架 - 图106第 三 章 A c tiv e X 框 架 - 图107第 三 章 A c tiv e X 框 架 - 图108第 三 章 A c tiv e X 框 架 - 图109第 三 章 A c tiv e X 框 架 - 图110第 三 章 A c tiv e X 框 架 - 图111第 三 章 A c tiv e X 框 架 - 图112可 以 看 出 T A u toO b je c t 是 从 T T y p ed C o m O b ject 继 承 下 来 的 支 持 ID is p a tc h 接 口 T A u toO b je c t 还 提 供 了 自 动 的 M a rs ha ling 功 能 凡 是 用 T A u toO b je c t 作为 基 类 所 建 立 的 CO M 对 象 可 以 跨 进 程 边 界 传 递 函 数 调 用 如 果 不 用T A u toO b je c t作 基 类 的 话 CO M 对 象 就 要 自 己 实 现 M a rs h a lin g 功 能 先 要 打包 到 达 目 的 地 后 再 解 包

第 三 章 A c tiv e X 框 架 - 图113第 三 章 A c tiv e X 框 架 - 图114第 三 章 A c tiv e X 框 架 - 图115第 三 章 A c tiv e X 框 架 - 图116第 三 章 A c tiv e X 框 架 - 图117第 三 章 A c tiv e X 框 架 - 图118第 三 章 A c tiv e X 框 架 - 图119第 三 章 A c tiv e X 框 架 - 图120第 三 章 A c tiv e X 框 架 - 图121T A u toO b je c t 的 对 象 需 要 建 立 类 型 库 因 为 它 支 持 双 重 接 口 同 时 由 于T A u toO b je c t间 接 地 继 承 了 IP rov ide C la s s Info 接 口 也 需 要 类 型 库 T A u toO b je c t 有 相 应 的 类 工 厂 T A u to O b jectF acto r y 如 果 要 创 建 的 OL E 自 动 化 对 象 是 内 部使 用 的 就 不 需 要 类 工 厂 此 时 应 当 选 T A u toIn tf O b je c t为 基 类

3 . 6 TA ut oI ntf Ob je ct

第 三 章 A c tiv e X 框 架 - 图122有 的 OL E 自 动 化 对 象 仅 仅 是 内 部 使 用 的 这 种 自 动 化 对 象 不 在 W ind ow s 的 注

第 三 章 A c tiv e X 框 架 - 图123第 三 章 A c tiv e X 框 架 - 图124第 三 章 A c tiv e X 框 架 - 图125第 三 章 A c tiv e X 框 架 - 图126册 表 中 注 册 也 就 是 说 它 不 需 要 类 工 厂 这 时 候 自 动 化 对 象 应 当 以

第 三 章 A c tiv e X 框 架 - 图127T A u toIn tf O b je c t为 基 类

第 三 章 A c tiv e X 框 架 - 图128T A u toIn tf O b je c t 是 从 T In te r faced O b ject 继 承 下 来 的 支 持 ID is p a tc h 接 口 和

第 三 章 A c tiv e X 框 架 - 图129第 三 章 A c tiv e X 框 架 - 图130第 三 章 A c tiv e X 框 架 - 图131Is upport E rr-o rIn fo 接 口 在 Co m O b j单 元 中 T A u toIn tf O b je c t是 这 样 声 明 的

clas s P A S C A L IM P L E M E N T A T IO N T A u to In tf O b ject : p u b l ic S y s te m : : T In te r fac ed O b je ct

{

ty p e d e f S y s te m ::T In te r fa c e d O b je c t in h e rite d ; priv a te :

vo id * _ ID ispa tc h;

v o id * _ IS u p p o rt E r ro rIn fo ; pub l ic :

_fa s tc a l l T A u toIn tf O b je c t( c o n s t _d i_ IT y p e L ib T y pe L ib , c ons t G U ID & D is pIn tf ) ;

v ir tu a l H R E S U L T _ fa s tc a l l S a fe C a llE x c e p tio n ( S y s te m ::T O b je c t* E x c e p tO b je c t, v o id * E x c e p t A d d r);

_ p ro p e r ty S y s te m : : P In te r faceE n try D is p In tf E n try ;

_p rop e r ty _d i_ IT y pe In fo D isp T y pe In fo ;

_ p ro p e r ty GU ID D is p I ID ; pub l ic :

_ fa s tc a ll v ir tu a l ~ T A u to In tf O b je c t(v o id ) { }

};

第 三 章 A c tiv e X 框 架 - 图132第 三 章 A c tiv e X 框 架 - 图133第 三 章 A c tiv e X 框 架 - 图134第 三 章 A c tiv e X 框 架 - 图135可 以 看 出 T A u toIn tf O b je c t 与 T A u toO b je c t 具 有 相 似 性 它 们 都 直 接 或 间 接地 支 持 ID is p a tc h 接 口 和 IS upport E r ro r In fo 接 口 因 而 都 支 持 OL E 异 常 处 理

第 三 章 A c tiv e X 框 架 - 图136第 三 章 A c tiv e X 框 架 - 图137第 三 章 A c tiv e X 框 架 - 图138第 三 章 A c tiv e X 框 架 - 图139不 同 的 是 T A u toIn tf O b je c t没 有 类 工 厂 要 创 建 T A u toIn tf O b je c t的 实 例 必须 调 用 它 的 构 造 函 数

3 . 7 TA ct iv eXC on tr ol

第 三 章 A c tiv e X 框 架 - 图140第 三 章 A c tiv e X 框 架 - 图141第 三 章 A c tiv e X 框 架 - 图142第 三 章 A c tiv e X 框 架 - 图143第 三 章 A c tiv e X 框 架 - 图144第 三 章 A c tiv e X 框 架 - 图145第 三 章 A c tiv e X 框 架 - 图146第 三 章 A c tiv e X 框 架 - 图147第 三 章 A c tiv e X 框 架 - 图148第 三 章 A c tiv e X 框 架 - 图149T A ctiv eX C o n tro l作 为 A c tiv e X 控 件 的 抽 象 基 类 它 是 从 T A u toO b je c t继 承 下 来的 而 T A u toO b je c t 又 是 从 T C o m O b ject 继 承 下 来 的 因 此 A c tiv e X 控 件 本质 上 也 是 CO M 对 象 支 持 OL E 自 动 化 操 作 具 有 访 问 类 型 信 息 的 能 力 所有 的 A c tiv e X 控 件 必 须 建 立 类 型 库 此 外 T A ctiv eX C o n tro l还 提 供 了 把 基 于VC L 的 控 件 转 换 为 A c tiv e X 控 件 的 能 力

第 三 章 A c tiv e X 框 架 - 图150第 三 章 A c tiv e X 框 架 - 图151在 A x C tr ls 单 元 中 T A ctiv eX C o n tro l是 这 样 声 明 的

c la s s P A S C A L IM P L E M E N T A T IO N T A c tiv e X C o n tro l : p u b lic C o m o b j::T A u to O b je c t

{

ty p e d e f C o m o b j::T A u to O b je c t in h e rite d ; priv a te :

vo id * _ IP e rs is t P ro p e r ty B a g; v o id * _ IP ers is t S tream In i t ;

vo id * _ IP e rs is t S tora g e ; v o id *_ IO b je c t Sa fe ty ; v o id *_ IO le O b je c t ;

vo id * _ IO le C on tro l ;

v o id *_ IO le In P la c e O b je c t ;

v o id * _ IO le In P la c e A c tiv e O b je c t ; v o id *_ IV ie w O b je c t ;

vo id * _ IV ie w O b je c t 2;

vo id * _ IP e r P ro p e r ty B row s ing; vo id * _ IS p e c ify P rope r ty P a g e s ; vo id * _ IS im p le F ra m e S i te ;

pub l ic :

_ fa s tc a ll v ir tu a l ~ T A c tiv e X C o n tro l( v o id ) ; v ir tu a l v o id _ fa s tc a ll In itia liz e ( v o id ) ;

v ir tu a l H R E S U L T _ s td call O b j Q u e ry In te r face( co ns t G U ID & I ID , v o id * O bj); b o o l _ fa s tc a ll P ro p R e q u e s t E d it( c o n s t S y s te m ::W id e S trin g P ro p e rty N a m e ) ;

vo id _ fa s tc a l l P ropC h a n g e d ( c o n s t S y s tem : : W ide S tr ing P rope r ty N a m e ) ;

_p rop e r ty C on tro ls : : T W inC on tro l* C o n tro l ; pub l ic :

_fa s tc a l l T A c t iv e X C o n tro l( vo id) : C o m o b j :: T A u toO b je c t( ) { }

_ fa s tc a ll T A c tiv e X C o n tro l(c o n s t _ d i_ IU n k n o w n C o n tro lle r ) : C o m o b j:: T A u toO b je c t( C o n tro lle r ) { }

_ fa s tc a ll T A c tiv e X C o n tro l( C o m o b j::T C o m O b je c t F a c to ry * F a c to ry , c o n s t

_ d i_ IU n k n o w n C o n tro lle r ) : C o m o b j::T A u to O b je c t( F a c to ry , C o n tro lle r ) { }

};

第 三 章 A c tiv e X 框 架 - 图152T A ctiv eX C o n tro l 定 义 了 A c tiv e X 控 件 的 核 心 行 为 和 需 要 的 各 种 接 口 用

第 三 章 A c tiv e X 框 架 - 图153T A ctiv eX C o n tro l为 基 类 的 A c tiv e X 控 件 可 以 嵌 入 到 任 何 一 种 A c tiv e X 容 器 中

第 三 章 A c tiv e X 框 架 - 图154第 三 章 A c tiv e X 框 架 - 图155第 三 章 A c tiv e X 框 架 - 图156第 三 章 A c tiv e X 框 架 - 图157第 三 章 A c tiv e X 框 架 - 图158包 括 In te rn e t E xp lore r V isu a l B a sic Po w e r B u ild e r P a ra dox Bo r la n d C+ +

第 三 章 A c tiv e X 框 架 - 图159In tra B u ild e r以 及 C+ + Bu ild e r 3 自 身

第 三 章 A c tiv e X 框 架 - 图160第 三 章 A c tiv e X 框 架 - 图161第 三 章 A c tiv e X 框 架 - 图162第 三 章 A c tiv e X 框 架 - 图163第 三 章 A c tiv e X 框 架 - 图164在 C+ + Bu ild e r 3 中 要 创 建 一 个 A c tiv e X 控 件 很 简 单 对 象 库 中 提 供 了 创 建A c tiv e X 控 件 的 向 导 您 只 要 指 定 一 个 已 有 的 VC L 控 件 向 导 就 会 把 它 转 换为 A c tiv e X 控 件

第 三 章 A c tiv e X 框 架 - 图165第 三 章 A c tiv e X 框 架 - 图166第 三 章 A c tiv e X 框 架 - 图167第 三 章 A c tiv e X 框 架 - 图168第 三 章 A c tiv e X 框 架 - 图169第 三 章 A c tiv e X 框 架 - 图170第 三 章 A c tiv e X 框 架 - 图171要 注 意 的 是 T A ctiv eX C o n tro l 本 身 是 个 抽 象 类 不 能 直 接 创 建 它 的 实 例您 只 能 以 T A ctiv eX C o n tro l 为 基 类 派 生 出 一 个 类 然 后 再 创 建 该 派 生 类 的 实例 即 A c tiv e X 控 件 不 过 真 正 创 建 A c tiv e X 控 件 的 实 际 上 是 类 工 厂

C o n tro l 特 性

第 三 章 A c tiv e X 框 架 - 图172声 明 _prope r ty C on tro ls :: T W inC on tro l* C o n tro l;

第 三 章 A c tiv e X 框 架 - 图173这 个 只 读 的 特 性 表 明 A c tiv e X 控 件 是 从 哪 个 VC L 控 件 转 换 而 来 的

D e fin e P ro p e r ty Pa g e s 函 数

第 三 章 A c tiv e X 框 架 - 图174声 明 v ir tua l vo id _fa s tc a ll D e f in e P rope r ty P a g e s ( T D e f in e P rope r ty P a g e & D e f in e P rope r ty - P a ge ) ;

第 三 章 A c tiv e X 框 架 - 图175第 三 章 A c tiv e X 框 架 - 图176当 A c tiv e X 的 特 性 页 将 要 显 示 之 前 会 调 用 这 个 函 数 因 此 如 果 要 使 A c tiv e X

第 三 章 A c tiv e X 框 架 - 图177第 三 章 A c tiv e X 框 架 - 图178第 三 章 A c tiv e X 框 架 - 图179第 三 章 A c tiv e X 框 架 - 图180第 三 章 A c tiv e X 框 架 - 图181第 三 章 A c tiv e X 框 架 - 图182第 三 章 A c tiv e X 框 架 - 图183控 件 能 显 示 特 性 页 您 必 须 重 载 这 个 函 数 这 个 函 数 的 名 称 取 得 不 太 好它 唯 一 的 参 数 是 D e f ine P rope r ty P a g e 与 函 数 名 仅 差 一 个 字 母D e f ine P rope r ty P a g e 参 数 本 身 是 个 回 调 函 数 这 个 回 调 函 数 也 只 有 一 个 参 数

第 三 章 A c tiv e X 框 架 - 图184第 三 章 A c tiv e X 框 架 - 图185第 三 章 A c tiv e X 框 架 - 图186第 三 章 A c tiv e X 框 架 - 图187第 三 章 A c tiv e X 框 架 - 图188就 是 要 显 示 的 特 性 页 对 象 的 类 标 识 符 如 果 A c tiv e X 控 件 的 特 性 比 较 多 特性 页 通 常 做 成 多 页 的 对 话 框 您 应 当 事 先 把 特 性 归 类 放 在 不 同 的 页 上

G e t P ro p e r ty S trin g 函 数

第 三 章 A c tiv e X 框 架 - 图189声 明 v ir tua l boo l _fa s tc a ll G e t P rope r ty S tr ing( in t D is p ID , S y s te m :: A ns i S tr in g & S ) ;

当 O b ject In s p ec to r试 图 用 一 个 字 符 串 来 表 达 某 个 特 性 当 前 的 值 时 会 调 用 这 个

第 三 章 A c tiv e X 框 架 - 图190第 三 章 A c tiv e X 框 架 - 图191第 三 章 A c tiv e X 框 架 - 图192函 数 如 果 A c tiv e X 控 件 有 多 个 特 性 就 会 调 用 此 函 数 多 次

第 三 章 A c tiv e X 框 架 - 图193第 三 章 A c tiv e X 框 架 - 图194第 三 章 A c tiv e X 框 架 - 图195第 三 章 A c tiv e X 框 架 - 图196第 三 章 A c tiv e X 框 架 - 图197第 三 章 A c tiv e X 框 架 - 图198第 三 章 A c tiv e X 框 架 - 图199第 三 章 A c tiv e X 框 架 - 图200D is p ID 参 数 是 特 性 的 识 别 号 如 果 需 要 让 O b je c t In s p ecto r以 一 个 特 殊 的 字 符串 显 示 特 性 的 值 就 让 S 参 数 返 回 这 个 字 符 串 并 让 函 数 本 身 返 回 T ru e 如果 不 需 要 O b ject In s p e c to r 以 一 个 特 殊 的 字 符 串 显 示 特 性 的 值 就 无 须 对 S 参数 赋 值 并 返 回 Fa ls e 此 时 O b je c t In s p e c to r将 以 标 准 的 方 式 显 示 特 性 的 值

G e t P ro p e r ty S trin g s 函 数

第 三 章 A c tiv e X 框 架 - 图201声 明 v ir tua l boo l _fa s tc a ll G e t P rope r ty S t r ings ( in t D is p ID , C la s s e s :: T S tr ings * S trin g s );

当 用 户 在 O b je c t In s p ecto r 中 试 图 打 开 一 个 特 性 的 值 的 列 表 时 会 调 用 这 个 函

第 三 章 A c tiv e X 框 架 - 图202

第 三 章 A c tiv e X 框 架 - 图203第 三 章 A c tiv e X 框 架 - 图204第 三 章 A c tiv e X 框 架 - 图205第 三 章 A c tiv e X 框 架 - 图206第 三 章 A c tiv e X 框 架 - 图207第 三 章 A c tiv e X 框 架 - 图208第 三 章 A c tiv e X 框 架 - 图209第 三 章 A c tiv e X 框 架 - 图210第 三 章 A c tiv e X 框 架 - 图211D is p ID 参 数 是 特 性 的 识 别 号 如 果 需 要 显 示 一 个 下 拉 列 表 就 对 S tr ings 参 数赋 值 并 让 函 数 返 回 T ru e 要 注 意 的 是 列 表 中 的 每 一 个 值 应 当 是 唯 一 的如 果 不 需 要 显 示 下 拉 列 表 就 不 必 对 S tr ings 参 数 赋 值 并 让 函 数 返 回 Fa ls e

G e t P ro p erty Va lu e 函 数

第 三 章 A c tiv e X 框 架 - 图212声 明 v ir tua l vo id _fa s tc a ll G e t P rope r ty V a lue ( int D is p ID , in t C ook ie , O le V a r ia n t & V a lu e ) ;

第 三 章 A c tiv e X 框 架 - 图213第 三 章 A c tiv e X 框 架 - 图214第 三 章 A c tiv e X 框 架 - 图215第 三 章 A c tiv e X 框 架 - 图216第 三 章 A c tiv e X 框 架 - 图217第 三 章 A c tiv e X 框 架 - 图218第 三 章 A c tiv e X 框 架 - 图219如 果 您 重 载 了 G e t P rope r ty S tr ings 函 数 就 要 配 套 重 载 G e t P rope r ty V a lu e 当用 户 从 下 拉 列 表 中 选 择 了 一 个 字 符 串 要 把 用 户 选 择 的 字 符 串 转 换 为 数 值并 通 过 V a lu e 参 数 返 回 D is p ID 参 数 是 特 性 的 识 别 号 C ook ie 参 数 是 所 选 的项 在 列 表 中 的 序 号

I n itia liz e C o n tro l 函 数

第 三 章 A c tiv e X 框 架 - 图220声 明 v ir tua l vo id _fa s tc a ll In itia liz e C on tro l( vo id);

第 三 章 A c tiv e X 框 架 - 图221第 三 章 A c tiv e X 框 架 - 图222第 三 章 A c tiv e X 框 架 - 图223第 三 章 A c tiv e X 框 架 - 图224当 A c tiv e X 控 件 刚 刚 创 建 好 后 就 会 调 用 此 函 数 这 样 您 就 有 机 会 对 A c tiv e X 控件 初 始 化 一 般 是 把 事 件 句 柄 赋 给 A c tiv e X 控 件 的 事 件 特 性 程 序 示 例 如 下

v o id In itia liz e C o n tro l( )

{

m _ V c lC tl-> O n C lic k = C lic k E v e n t ;

}

L o a d F ro m S tre a m 函 数

第 三 章 A c tiv e X 框 架 - 图225声 明 v ir tua l vo id _fa s tc a ll L o a d F ro m S tre a m ( c ons t _d i_IS tr e a m S tr e a m ) ;

第 三 章 A c tiv e X 框 架 - 图226第 三 章 A c tiv e X 框 架 - 图227第 三 章 A c tiv e X 框 架 - 图228第 三 章 A c tiv e X 框 架 - 图229第 三 章 A c tiv e X 框 架 - 图230第 三 章 A c tiv e X 框 架 - 图231第 三 章 A c tiv e X 框 架 - 图232第 三 章 A c tiv e X 框 架 - 图233第 三 章 A c tiv e X 框 架 - 图234C+

  • Bu ild e r 3 已 默 认 实 现 了 这 个 方 法 用 于 从 流 中 读 取 A c tiv e X 控 件 的 状 态您 可 以 重 载 这 个 方 法 读 取 任 何 通 过 Sa v e T o S tre a m 函 数 保 存 在 流 中 的 数 据S tre a m 参 数 是 要 读 写 的 流 要 从 流 中 读 取 数 据 调 用 S tre a m -> R e a d ( ) 注 意您 读 取 的 数 据 必 须 与 用 Sa v e T o S tre a m 写 入 的 数 据 匹 配

S ave To S tre a m 函 数

第 三 章 A c tiv e X 框 架 - 图235声 明 v ir tua l vo id _fa s tc a ll S a v e T o S tre a m ( c ons t _d i_IS tr e a m S tr e a m ) ;

第 三 章 A c tiv e X 框 架 - 图236第 三 章 A c tiv e X 框 架 - 图237第 三 章 A c tiv e X 框 架 - 图238第 三 章 A c tiv e X 框 架 - 图239C+

  • Bu ild e r 3 已 默 认 实 现 了 这 个 方 法 用 于 把 A c tiv e X 控 件 的 状 态 写 到 流 中您 可 以 重 载 这 个 方 法 把 其 它 任 何 要 保 存 的 数 据 保 存 到 流 中

第 三 章 A c tiv e X 框 架 - 图240第 三 章 A c tiv e X 框 架 - 图241第 三 章 A c tiv e X 框 架 - 图242S tre a m 参 数 是 要 读 写 的 流 要 把 数 据 保 存 到 流 中 调 用 S tre a m -> W r i te ( )

P e r fo r m Ver b 函 数

第 三 章 A c tiv e X 框 架 - 图243声 明 v irtu a l v o id _ fa s tc a ll P e rfo rm V e rb ( in t V e rb );

第 三 章 A c tiv e X 框 架 - 图244第 三 章 A c tiv e X 框 架 - 图245第 三 章 A c tiv e X 框 架 - 图246第 三 章 A c tiv e X 框 架 - 图247第 三 章 A c tiv e X 框 架 - 图248第 三 章 A c tiv e X 框 架 - 图249第 三 章 A c tiv e X 框 架 - 图250如 果 您 调 用 了 T A c tiv e X C o n tro lF a c to r y 的 A ddV e rb 函 数 给 A c tiv e X 控 件 增 加 了一 个 动 作 您 应 当 重 载 这 个 方 法 具 体 实 现 这 个 动 作 当 用 户 在 A c tiv e X 控 件上 单 击 鼠 标 右 键 在 弹 出 的 菜 单 中 选 择 该 动 作 项 时 就 会 调 用 这 个 方 法 其 中 V e rb 参 数 是 动 作 项 的 编 号

I n itia liz e 函 数

第 三 章 A c tiv e X 框 架 - 图251声 明 v ir tua l vo id _fa s tc a ll In itia liz e ( vo id);

第 三 章 A c tiv e X 框 架 - 图252第 三 章 A c tiv e X 框 架 - 图253这 个 函 数 有 点 类 似 于 构 造 函 数 用 于 创 建 类 工 厂 对 象 并 且 把 此 对 象 与

第 三 章 A c tiv e X 框 架 - 图254第 三 章 A c tiv e X 框 架 - 图255T A ctiv eX C o n tro l联 系 起 来 以 便 操 纵 A c tiv e X 控 件

O b j Q u e r y I n ter fa c e 函 数

第 三 章 A c tiv e X 框 架 - 图256声 明 v ir tua l H R E S U L T _s td c a l l O b j Q ue ry In te r fa c e ( c ons t G U ID & I ID , vo id

*O b j) ;

第 三 章 A c tiv e X 框 架 - 图257这 个 函 数 实 际 上 是 映 射 了 IU nkno w n 接 口 中 的 Q u ery In terfa c e 函 数 用 于 返 回

第 三 章 A c tiv e X 框 架 - 图258IID 参 数 指 定 的 接 口

P rop C h an ge d 函 数

第 三 章 A c tiv e X 框 架 - 图259声 明 vo id _fa s tc a ll P ropC ha nge d( c ons t S y s te m : : W ide S tr ing P rope r ty N a m e ) ;

第 三 章 A c tiv e X 框 架 - 图260第 三 章 A c tiv e X 框 架 - 图261调 用 此 函 数 将 触 发 O n C h a nge d 事 件 表 示 P rope r ty N a m e 参 数 指 定 的 特 性 的 值已 改 变

P ro p R e que s t E d it 函 数

第 三 章 A c tiv e X 框 架 - 图262第 三 章 A c tiv e X 框 架 - 图263第 三 章 A c tiv e X 框 架 - 图264声 明 bool _fa s tc a ll P ropR e que s t E d it( c ons t S y s te m : : W id e S tr ing P rope r ty N a m e ) ; 这 个 函 数 返 回 P rope r ty N a m e 参 数 指 定 的 特 性 是 否 可 以 编 辑 返 回 T ru e 表 示 可以 编 辑

  1. 8 TC om Se rve rO bj ec t

第 三 章 A c tiv e X 框 架 - 图265第 三 章 A c tiv e X 框 架 - 图266第 三 章 A c tiv e X 框 架 - 图267第 三 章 A c tiv e X 框 架 - 图268T C o m S e rv er O b ject是 从 T O b ject 直 接 继 承 下 来 的 作 为 TC o m Se rv e r 的 基 类在 Co m O b j单 元 中 TC o m S e rv e r O b je c t是 这 样 声 明 的

c la s s PA SC A L IM PL E M E N T A T IO N T C o m Se rv e r O b je c t : p u b l ic Sy s te m : : T O b je c t

{

pub l ic :

_ p ro p e rty S y s te m ::A n s iS trin g H e lp F ile N a m e ;

_ p ro p e rty S y s te m ::A n s iS trin g S e rv e r F ile N a m e ;

_ p ro p e rty S y s te m ::A n s iS trin g S e rv e r K e y ;

_ p ro p e rty S y s te m ::A n s iS trin g S e rv e r N a m e ;

_p rop e r ty _d i_ IT y pe L ib T y p e L ib;

_ fas tc all T C o m S e rv er O b je ct( v o id ) : S y s tem : : T O b ject( ) { }

_ fa s tc a ll v ir tu a l ~ T C o m S e rv e r O b je c t( v o id ) { }

};

第 三 章 A c tiv e X 框 架 - 图269第 三 章 A c tiv e X 框 架 - 图270第 三 章 A c tiv e X 框 架 - 图271第 三 章 A c tiv e X 框 架 - 图272第 三 章 A c tiv e X 框 架 - 图273第 三 章 A c tiv e X 框 架 - 图274可 以 看 出 T C o m S e rv er O b ject所 有 的 方 法 都 是 虚 拟 的 和 抽 象 的 这 意 味 着您 不 能 直 接 创 建 它 的 实 例 TC o m S e rv e r O b je c t的 5 个 公 共 的 特 性 都 是 只 读 的真 正 的 含 义 取 决 于 TC o m S e rv e r怎 样 实 现 上 述 几 个 虚 拟 和 抽 象 的 方 法

  1. 9 TC om Se rve r

第 三 章 A c tiv e X 框 架 - 图275第 三 章 A c tiv e X 框 架 - 图276第 三 章 A c tiv e X 框 架 - 图277第 三 章 A c tiv e X 框 架 - 图278第 三 章 A c tiv e X 框 架 - 图279TC o m S e rv e r 是 CO M 服 务 器 的 基 类 CO M 服 务 器 可 以 理 解 为 组 件 对 象 的 容器 从 形 式 上 讲 CO M 服 务 器 可 以 是 In -P ro c e s s 型 即 DL L 也 可 以 是 Lo c a l型即 EX E

第 三 章 A c tiv e X 框 架 - 图280第 三 章 A c tiv e X 框 架 - 图281第 三 章 A c tiv e X 框 架 - 图282第 三 章 A c tiv e X 框 架 - 图283Co m S e rv 单 元 中 声 明 了 一 个 Co m S e rv e r 变 量 并 自 动 创 建 了 TC o m Se rv e r 的 实例 就 象 Fo rm s 单 元 中 的 A p p lic a tio n 变 量 一 样 您 用 不 着 再 专 门 创 建TC o m S e rv e r的 实 例

第 三 章 A c tiv e X 框 架 - 图284第 三 章 A c tiv e X 框 架 - 图285在 Co m S e rv 单 元 中 TC o m S e rv e r是 这 样 声 明 的 ( 按 O b ject P a s c a l的 语 法 ) T C o m S e rv er = C las s ( T C o m S e rv e r O b je ct)

P riv a te

{ 私有的成 员此处省略 } P ro tected

{ 重载 T C o m S e rv er O b jec t中的虚拟 方法 }

F u n c tio n C o u n tO b je c t( C re a te d : B o o le a n ) : In te g e r ; o v e r r id e ; F unc t io n C o u n t F a c tory ( C re a te d : B o o le a n): In te g e r ; o v e r r ide ; F unc t io n G e t H e lpF i le N a m e : s tr ing; ov e r r id e ;

F u n c tio n G e tS e rv e r F ile N a m e : s tr in g ; o v e r r id e ; F unc t io n G e t S e rv e r K e y : s tr ing; ove r r id e ;

F u n c tio n G e tS e rv e r N a m e : s tr in g ; o v e r r id e ; F u n c tio n G e tT y p e L ib : IT y p e L ib ; o v e r r id e ;

P u b lic

C o n s tru c to r C re a te ;

D e s tru c tor D e s tro y ; ove r r id e ; P ro c e d u re In itia liz e ;

P ro ced u re L o ad T y p e L ib ;

P ro ced u re S e t S erv e r N am e( co n s t N a m e : s tr in g ) ; P ro ced u re U p d a te R e g is try ( R eg is te r : B o o lea n ) ;

P ro p erty Is In p ro c S e rv er: B o o lea n re a d F I s In p ro cS erv e r w r i te F I s In p ro cS erv e r ; P ro p e rty O b je c t C o u n t: In te g e r re a d F O b je c t C o u n t;

P ro p e rty S ta r t M o d e : T S ta r t M o d e re a d F S ta rtM o d e ;

P ro p erty O n L a s t R e leas e: T L a s t R e lease E v e n t re a d F O n L as t R ele a s e w r i te F O n L as t R elea s e ;

En d ;

第 三 章 A c tiv e X 框 架 - 图286第 三 章 A c tiv e X 框 架 - 图287第 三 章 A c tiv e X 框 架 - 图288第 三 章 A c tiv e X 框 架 - 图289第 三 章 A c tiv e X 框 架 - 图290第 三 章 A c tiv e X 框 架 - 图291第 三 章 A c tiv e X 框 架 - 图292第 三 章 A c tiv e X 框 架 - 图293第 三 章 A c tiv e X 框 架 - 图294另 外 Co m S e rv 单 元 中 还 声 明 了 几 个 全 局 例 程 用 于 自 动 管 理 CO M 服 务 器的 注 册 撤 消 注 册 以 及 卸 载 如 果 CO M 服 务 器 是 In -P ro c e s s 型 必 须 输 出 这几 个 例 程 D llG e t C la s s O b je c t D llC a n U n lo a d N o w D llR e g is te r S e rv e r

第 三 章 A c tiv e X 框 架 - 图295D llU n re g is te r S e rv e r

第 三 章 A c tiv e X 框 架 - 图296第 三 章 A c tiv e X 框 架 - 图297第 三 章 A c tiv e X 框 架 - 图298Co m S e rv e r 变 量 用 T C o m C las s M an ag er 管 理 类 工 厂 T C o m C la s s M an ag er 是 在Co m O b j 单 元 中 声 明 的 这 个 单 元 已 经 自 动 声 明 了 T C o m C las s M an ag er 的 实例 C o m C la s s M an ag er变 量

H e lp F ile N a m e 特 性

第 三 章 A c tiv e X 框 架 - 图299声 明 _prope r ty S y s te m : : A n s i S tr ing H e lp F ile N a m e ;

第 三 章 A c tiv e X 框 架 - 图300这 个 特 性 用 于 返 回 与 CO M 服 务 器 模 块 关 联 的 帮 助 文 件 名

IsIn p ro c S e r v e r 特 性

第 三 章 A c tiv e X 框 架 - 图301声 明 _prope r ty bool Is Inproc S e rv e r ;

第 三 章 A c tiv e X 框 架 - 图302第 三 章 A c tiv e X 框 架 - 图303如 果 CO M 服 务 器 是 In - P ro ces s 型 的 服 务 器 这 个 特 性 就 返 回 T ru e In -P ro c e s s

第 三 章 A c tiv e X 框 架 - 图304第 三 章 A c tiv e X 框 架 - 图305型 的 CO M 服 务 器 一 般 是 DL L 而 Lo c a l型 的 服 务 器 一 般 是 EX E

O b je c t C o u n t 特 性

第 三 章 A c tiv e X 框 架 - 图306声 明 _prope r ty in t O b je c t C o un t;

第 三 章 A c tiv e X 框 架 - 图307第 三 章 A c tiv e X 框 架 - 图308第 三 章 A c tiv e X 框 架 - 图309第 三 章 A c tiv e X 框 架 - 图310第 三 章 A c tiv e X 框 架 - 图311第 三 章 A c tiv e X 框 架 - 图312第 三 章 A c tiv e X 框 架 - 图313第 三 章 A c tiv e X 框 架 - 图314第 三 章 A c tiv e X 框 架 - 图315这 个 特 性 返 回 有 多 少 个 对 象 当 前 依 赖 于 此 CO M 服 务 器 如 果 这 个 特 性 返 回零 表 示 当 前 没 有 哪 个 对 象 在 使 用 CO M 服 务 器 此 时 CO M 服 务 器 就 可 以卸 载 了 当 CO M 服 务 器 卸 载 时 将 触 发 O n L a s t R e leas e 事 件 可 见 O b je c t C ount 类 似 于 引 用 计 数

S erv e r F ile N a m e 特 性

第 三 章 A c tiv e X 框 架 - 图316声 明 _prope r ty S y s te m : : A n s i S tr ing S e rv e r F ile N a m e ;

第 三 章 A c tiv e X 框 架 - 图317第 三 章 A c tiv e X 框 架 - 图318这 个 特 性 返 回 CO M 服 务 器 模 块 的 文 件 名 包 括 完 整 的 路 径

S erv e r K e y 特 性

第 三 章 A c tiv e X 框 架 - 图319声 明 _prope r ty S y s te m : : A n s i S tr ing S e rv e r K e y ;

第 三 章 A c tiv e X 框 架 - 图320第 三 章 A c tiv e X 框 架 - 图321第 三 章 A c tiv e X 框 架 - 图322第 三 章 A c tiv e X 框 架 - 图323第 三 章 A c tiv e X 框 架 - 图324第 三 章 A c tiv e X 框 架 - 图325第 三 章 A c tiv e X 框 架 - 图326第 三 章 A c tiv e X 框 架 - 图327如 果 这 个 特 性 返 回 Inproc S e rv e r 32 表 示 CO M 服 务 器 是 In -P ro c e s s 型 服 务器 如 果 这 个 特 性 返 回 L o ca l S erv e r 3 2 表 示 CO M 服 务 器 是 Lo c a l型 服 务器

S ta r t M o d e 特 性

第 三 章 A c tiv e X 框 架 - 图328声 明 _prope r ty T S ta r t M ode S ta r t M ode ;

第 三 章 A c tiv e X 框 架 - 图329第 三 章 A c tiv e X 框 架 - 图330这 个 特 性 用 于 返 回 CO M 服 务 器 被 启 动 的 原 因 可 以 是 以 下 值 ( 含 命 令 行 开关 )

返 回 值

命 令

行 开关

含 义

sm A u to m a t io n

em b e dd ing

W

ind ow s 响

而 启 动

CO M

续 表

sm R e g S erv e r

sm S ta n d a lone

sm U n re

gS e rve r

re g s e r ve r

---

unre g s erv e r

用立仅

户的仅

把程是

为 了 注 册

CO M 服

序 启 动为 了 撤 消

而务

启器

动作

为启

独动

S erv e r N a m e 特 性

第 三 章 A c tiv e X 框 架 - 图331声 明 _prope r ty S y s te m : : A n s i S tr ing S e rv e r N a m e ;

第 三 章 A c tiv e X 框 架 - 图332这 个 特 性 返 回 CO M 服 务 器 的 名 称

Ty p e L ib 特 性

第 三 章 A c tiv e X 框 架 - 图333声 明 _prope r ty IT y p e L ib T y pe L ib;

第 三 章 A c tiv e X 框 架 - 图334这 个 特 性 返 回 CO M 服 务 器 的 类 型 库

L oad Ty p e L ib 函 数

第 三 章 A c tiv e X 框 架 - 图335声 明 vo id _fa s tc a ll L o a d T y pe L ib( vo id);

第 三 章 A c tiv e X 框 架 - 图336第 三 章 A c tiv e X 框 架 - 图337第 三 章 A c tiv e X 框 架 - 图338第 三 章 A c tiv e X 框 架 - 图339第 三 章 A c tiv e X 框 架 - 图340第 三 章 A c tiv e X 框 架 - 图341第 三 章 A c tiv e X 框 架 - 图342这 个 函 数 把 CO M 服 务 器 的 类 型 库 调 入 如 果 类 型 库 还 没 有 准 备 好 就 注 册类 型 库 如 果 Lo a d T y p e L ib 调 用 失 败 将 触 发 EO le S y s E r ro r 异 常 此 时 您可 以 访 问 有 关 错 误 码

E _ OUT OF M E M O R Y E _ INVA L IDAR G

T Y P E _ E _ IO E RRO R

TY P E _ E _ IN V A L ID S T A T E T Y P E _ E _ INV DAT AR E A D T Y P E _E _U N S U P F O R M A T T Y P E _ E _ U N KNOW N L C ID

T Y P E _E _C A N T L O A D L IB R A R Y

S e t S erv e r N a m e 函 数

内存 不够

部分 参数 是非 法的无法 写文 件

类型 库还 没有 打开无法 读文 件

类型 库的 格式 是老的

在 OL E 支持 D L L s 中没 有找 到 LC ID

类型 库或 DL L 无法 调入

第 三 章 A c tiv e X 框 架 - 图343声 明 v ir tua l vo id _fa s tc a ll S e t S e rve r N a m e ( c ons t S y s te m : : A n s i S tr ing N a m e ) ;

第 三 章 A c tiv e X 框 架 - 图344第 三 章 A c tiv e X 框 架 - 图345第 三 章 A c tiv e X 框 架 - 图346第 三 章 A c tiv e X 框 架 - 图347第 三 章 A c tiv e X 框 架 - 图348这 个 函 数 用 于 设 置 CO M 服 务 器 的 名 称 不 过 如 果 CO M 服 务 器 有 类 型 库 的话 这 个 函 数 就 什 么 也 不 干 因 为 服 务 器 的 名 称 与 类 型 库 的 名 称 应 当 一 致

U pda te R e g is tr y 函 数

第 三 章 A c tiv e X 框 架 - 图349声 明 v ir tua l vo id _fa s tc a ll U pda te R e g is try ( boo l R e g is te r ) ;

第 三 章 A c tiv e X 框 架 - 图350这 个 函 数 用 CO M 服 务 器 最 新 的 状 态 更 新 注 册 表 如 果 R e g is te r 参 数 设 为 T ru e

第 三 章 A c tiv e X 框 架 - 图351第 三 章 A c tiv e X 框 架 - 图352第 三 章 A c tiv e X 框 架 - 图353表 示 注 册 如 果 R e g is te r参 数 设 为 Fa ls e 表 示 撤 消 注 册

O n L a s t R e le a s e 事 件

第 三 章 A c tiv e X 框 架 - 图354声 明 _ p ro p e r ty T L as t R ele a s e E v en t O n L a s t R e leas e;

第 三 章 A c tiv e X 框 架 - 图355第 三 章 A c tiv e X 框 架 - 图356其 中 T L a s t R e leas eE v e n t是 这 样 声 明 的

ty p e d e f vo id _fa s tc a ll (_ c los ure * T L a s t R e le a s e E ve n t) ( T O b je c t* S e nde r , bool & S hu tdow n);

第 三 章 A c tiv e X 框 架 - 图357当 使 用 CO M 服 务 器 的 最 后 一 个 对 象 被 删 除 后 也 就 是 O b je c t C ount特 性 减 到

第 三 章 A c tiv e X 框 架 - 图358第 三 章 A c tiv e X 框 架 - 图359第 三 章 A c tiv e X 框 架 - 图360第 三 章 A c tiv e X 框 架 - 图361第 三 章 A c tiv e X 框 架 - 图362第 三 章 A c tiv e X 框 架 - 图363第 三 章 A c tiv e X 框 架 - 图364第 三 章 A c tiv e X 框 架 - 图365零 后 CO M 服 务 器 就 可 以 卸 载 了 此 时 将 触 发 O n L a s t R e leas e 事 件 在 处 理此 事 件 的 句 柄 中 如 果 把 S h u t D o wn 参 数 设 为 T ru e 表 示 真 的 要 卸 载 CO M 服务 器 如 果 把 S hu tdow n 参 数 设 为 Fa ls e 表 示 不 卸 载 CO M 服 务 器

  1. 1 0 TA ct iv eFo rm

第 三 章 A c tiv e X 框 架 - 图366第 三 章 A c tiv e X 框 架 - 图367第 三 章 A c tiv e X 框 架 - 图368第 三 章 A c tiv e X 框 架 - 图369第 三 章 A c tiv e X 框 架 - 图370第 三 章 A c tiv e X 框 架 - 图371第 三 章 A c tiv e X 框 架 - 图372第 三 章 A c tiv e X 框 架 - 图373第 三 章 A c tiv e X 框 架 - 图374第 三 章 A c tiv e X 框 架 - 图375T A ctiv eF o rm 用 于 作 为 A c tiv e F o rm 的 基 类 关 于 A c t iv e F o rm 的 概 念 后 面 详 细阐 述 这 里 您 可 以 简 单 地 把 它 看 作 做 是 一 个 复 合 的 A c tiv e X 控 件 可 以 嵌 入到 W e b 页 面 中 传 递 从 本 质 上 讲 A c tiv e F o rm 也 是 Fo rm 只 不 过 A c tiv e F o rm 上 的 控 件 都 是 内 部 使 用 的 对 于 客 户 程 序 来 说 A c tiv e F o rm 是 一 个 整 体

第 三 章 A c tiv e X 框 架 - 图376第 三 章 A c tiv e X 框 架 - 图377第 三 章 A c tiv e X 框 架 - 图378第 三 章 A c tiv e X 框 架 - 图379第 三 章 A c tiv e X 框 架 - 图380第 三 章 A c tiv e X 框 架 - 图381第 三 章 A c tiv e X 框 架 - 图382C+

  • Bu i ld e r 3 在 对 象 库 中 提 供 了 创 建 A c tiv e F o rm 的 向 导 创 建 好 后 您 可 以使 用 P ro ject 菜 单 上 的 W e b D e p lo y 命 令 发 布 A c tiv e F o rm

第 三 章 A c tiv e X 框 架 - 图383第 三 章 A c tiv e X 框 架 - 图384在 A x C tr ls 单 元 中 T A ctiv eF o rm 是 这 样 声 明 的 ( 按 O b ject P a s c a l的 语 法 声 明 )

T A c t iv e F o rm = C la s s ( T C u s to m F o rm ) P riv a te

F A x B o rd e r S ty le : T A c tiv e F o rm B o rd e r S ty le ;

P ro c e d u re S e tA x B o rd e r S ty le ( V a lu e : T A c tiv e F o rm B o rd e r S ty le ) ; P ro tected

P ro cedu re D e fin e P ro p e rty P ag es(D efin eP ro p e rty P ag e:T D efin eP ro p e rty P ag e);v irtu a l; P ro ced u re C re a te P a ra m s ( v a r P a ra m s : T C re a teP aram s ) ; o v errid e ;

P roc e d ure E v e n tS in kC ha n g e d ( c o n s t E v e n t S in k: IU n k n o w n ) ; v ir tu a l ; P ro c e d u re In itia liz e ; v ir tu a l;

P u b lic

C ons tru c to r C re a te ( A O w n e r : T C om p o n e n t) ; ov e r r id e ;

F unc tio n W a n tC h ildK e y(C h ild :T C on tro l;v a r M e ssag e :T M e ssage ):B oo lea n ;o v e rride ; P ub lis he d

P ro p e rty A x B o rd e r S ty le : T A c tiv e F o rm B o rd e r S ty le re a d F A x B o rd e r S ty le

{ 以 下 特 性 和 事 件 都 是 从 T C us to m F orm 继 承 的 }

… E nd;

第 三 章 A c tiv e X 框 架 - 图385第 三 章 A c tiv e X 框 架 - 图386第 三 章 A c tiv e X 框 架 - 图387第 三 章 A c tiv e X 框 架 - 图388第 三 章 A c tiv e X 框 架 - 图389第 三 章 A c tiv e X 框 架 - 图390第 三 章 A c tiv e X 框 架 - 图391第 三 章 A c tiv e X 框 架 - 图392除 了 从 T C us to m F orm 继 承 下 来 的 特 性 和 事 件 外 T A ctiv eF o rm 中 唯 一 公 开 的特 性 是 A x B o rd e r S ty le 用 于 设 置 A c tiv e F o rm 的 边 框 样 式 可 以 设 为 以 下 值 a fbN one ( 没 有 边 框 ) a fbS ing le ( 普 通 的 单 细 线 边 框 ) a fbS unke n( 凹 进 的 3D 边框 ) a fbR a is e d( 突 起 的 3D 边 框 )

第 三 章 A c tiv e X 框 架 - 图393第 三 章 A c tiv e X 框 架 - 图394第 三 章 A c tiv e X 框 架 - 图395第 三 章 A c tiv e X 框 架 - 图396第 三 章 A c tiv e X 框 架 - 图397第 三 章 A c tiv e X 框 架 - 图398第 三 章 A c tiv e X 框 架 - 图399T C us to m F orm 中 有 几 个 可 重 载 的 方 法 其 中 D efine P roperty P a g e s E v e n t S inkC ha ng e d 和 In itia liz e 前面已经讲 过 C reateP a ra m s 一 般 不 需 要 重 载T C us to m F orm 中 有 一 个 W an tC h ild K e y函数 它 是 这 样 声 明 的

v ir tua l boo l _fa s tc a ll W a n t C h i ldK ey ( T C on tro l C h i ld, T M e s s a ge & M e s s a ge )

第 三 章 A c tiv e X 框 架 - 图400当 Fo rm 上 的 控 件 接 收 到 键 盘 输 入 时 会 调 用 这 个 函 数 如 果 让 这 个 函 数 返 回

第 三 章 A c tiv e X 框 架 - 图401第 三 章 A c tiv e X 框 架 - 图402第 三 章 A c tiv e X 框 架 - 图403T ru e 该 控 件 不 对 消 息 进 行 任 何 处 理 只 是 把 消 息 传 递 给 Fo rm

  1. 11 TP ro pe rty Pa ge

第 三 章 A c tiv e X 框 架 - 图404第 三 章 A c tiv e X 框 架 - 图405第 三 章 A c tiv e X 框 架 - 图406第 三 章 A c tiv e X 框 架 - 图407第 三 章 A c tiv e X 框 架 - 图408第 三 章 A c tiv e X 框 架 - 图409第 三 章 A c tiv e X 框 架 - 图410第 三 章 A c tiv e X 框 架 - 图411T P rope r ty P a g e 用 于 作 为 A c tiv e X 控 件 和 A c tiv e F o rm 的 特 性 页 TP ro p e r ty P a g e 也 是 从 T C us to m F orm 继 承 下 来 的 因 此 特 性 页 本 质 上 也 是 Fo rm 与 普 通的 Fo rm 不 同 的 是 特 性 页 通 常 是 模 式 Fo rm 而 且 能 够 读 取 A c t iv e X 控 件 或A c tiv e F o rm 的 特 性 值 到 特 性 页 上 或 者 把 用 户 在 特 性 页 上 的 修 改 写 回 到A c tiv e X 控 件 或 A c tiv e F o rm 中

第 三 章 A c tiv e X 框 架 - 图412第 三 章 A c tiv e X 框 架 - 图413第 三 章 A c tiv e X 框 架 - 图414第 三 章 A c tiv e X 框 架 - 图415第 三 章 A c tiv e X 框 架 - 图416T P rope r ty P a g e 是 个 虚 拟 基 类 您 不 能 直 接 创 建 它 的 实 例 您 只 能 以T P rope r ty P a g e 为 基 类 在 派 生 类 中 重 载 一 些 方 法 然 后 再 创 建 派 生 类 的 实例

第 三 章 A c tiv e X 框 架 - 图417第 三 章 A c tiv e X 框 架 - 图418在 A x C tr ls 单 元 中 T P rope r ty P a g e 是 这 样 声 明 的

c la s s P A S C A L IM P L E M EN TA T IO N TP ro p e r ty P a g e : p u b l ic F o rm s : : T C u s to m F o rm

{

ty p e d e f F o rm s ::T C u s to m F o rm in h e rite d ; priv a te :

T P ro p e r ty P ag eIm p l* F A ctiv eX P ro p erty P a g e ; S y s tem : : O leV aria n t F O le O b ject;

C la s s e s ::T In te r fa c e L is t* F O le O b je c ts ;

H IDE S B AS E M E S S AGE v o id _ fa s tc a l l C M C h a n g e d ( T C M C h a n g e d & M s g ) ; pub l ic :

_ fas tc all v ir tu a l T P ro p e r tyP ag e( C las se s : : T C o m p on en t* A O w n er);

_ fa s tc a ll v ir tu a l ~ T P ro p e r ty P a g e ( v o id ) ; vo id _ fa s tc a l l M od if ie d ( v o id);

v ir tu a l v o id _ fa s tc a ll U p d a te O b je c t( v o id ) ;

v ir tu a l v o id _ fa s tc a ll U p d a te P ro p e r ty P a g e ( v o id ) ;

_ p ro p e rty S y s te m ::O le V a r ia n t O le O b je c t = { re a d = F O le O b je c t} ;

_ p ro p e rty C la s s e s ::T In te r fa c e L is t* O le O b je c ts ;

vo id _ fa s tc a l l E num C t l P rops ( c o n s t G U ID & P ropT y p e , T S tr in g s * P ropN a m e s ) ;

_pu b lis h e d:

_ p ro p e rty A c tiv e C o n tro l ;

// 以下特性 和事件都是从 TC u s to m F o rm 继承的

… pub l ic :

_ fa s tc a ll T P ro p e r ty P a g e ( C la s s e s ::T C o m p o n e n t* A O w n e r , in t D u m m y ) : F o r m s : : T C u s to mF o rm ( AO w n e r , D u m m y ) { }

_fa s tc a l l T P rope r ty P a g e ( H W N D P a re n t W indow ) : F o rm s : : T C us to m F o rm ( P a re n t W indow ) { }

};

第 三 章 A c tiv e X 框 架 - 图419第 三 章 A c tiv e X 框 架 - 图420创 建 特 性 页 需 要 重 载 U pda te O b je c t和 U pda te P rope r ty P a g e 两 个 函 数 前 者 用 于把 用 户 在 特 性 页 中 的 修 改 写 回 到 A c tiv e X 控 件 或 A c tiv e F o rm 中 后 者 用 于 读

第 三 章 A c tiv e X 框 架 - 图421取 A c tiv e X 控 件 或 A c tiv e F o rm 的 特 性 值 到 特 性 页 上

O le O b je c t 特 性

第 三 章 A c tiv e X 框 架 - 图422声 明 _prope r ty S y s te m : : O le V a r ia n t O le O b je c t;

第 三 章 A c tiv e X 框 架 - 图423第 三 章 A c tiv e X 框 架 - 图424第 三 章 A c tiv e X 框 架 - 图425这 个 只 读 的 特 性 返 回 特 性 页 正 在 编 辑 的 A c tiv e X 控 件 或 A c tiv e F o rm 这 样您 就 可 以 访 问 A c tiv e X 控 件 或 A c tiv e F o rm 的 特 性 或 方 法

  1. 1 2 TC om Ob jec tF ac to ry

第 三 章 A c tiv e X 框 架 - 图426第 三 章 A c tiv e X 框 架 - 图427在 Co m O b j单 元 中 T C om O b je c t F a c tor y 是 这 样 声 明 的

clas s P A S C A L IM P L E M E N T A T IO N T C o m O b je ct F acto ry : p u b l ic S y s tem : : T O b ject

{

ty p e d e f S y s te m ::T O b je c t in h e rite d ; priv a te :

v o id *_ IU nk n o w n ;

vo id * _ IC la ss F a c tory ; vo id * _ IC la ss F a c tory 2 ;

pub l ic :

_ fas tc all T C o m O b ject F acto ry ( T C o m S e rv er O b je c t* C o m S e rver, S y s tem : : T M e ta C la s s * C o m C la s s , c o n s t G U ID & C la s s ID , c o n s t S y s te m ::A n s iS trin g

C la s s N a m e , c o n s t S y s te m ::A n s iS trin g D e s c r ip tio n , T C la s s In s ta n c in g In s ta n c in g ) ;

_fa s tc a l l v ir tua l ~ T C o m O b je c tF a c tory ( vo id ) ;

T C o m O b je c t* _ fa s tc a l l C re a te C o m O b je c t( c o n s t _ d i_ IU n k n o w n C o n tro lle r ) ; vo id _ fa s tc a l l R e g is te r C la ss O b je c t( v o id ) ;

v ir tu a l v o id _ fa s tc a ll U p d a te R e g is try ( b o o l R e g is te r ) ;

_ p ro p e r ty GU ID C la s s ID ;

_ p ro p e rty S y s te m ::A n s iS trin g C la s s N a m e ;

_ p ro p e rty S y s te m ::T M e ta C la s s * C o m C la s s ;

_p rop e r ty T C om S e rv e r O b je c t* C o m S e rv e r ;

_ p ro p e rty S y s te m ::A n s iS trin g D e s c r ip tio n ;

_ p ro p e r ty G U ID E rro r IID ;

_p rop e r ty S y s tem : : W ide S tr ing L ic S tr ing ;

_p rop e r ty S y s tem : : A ns i S tr ing P rogID ;

_ p ro p e r ty T C la s s In s tan c in g In s ta n cin g ;

_p rop e r ty boo l S how E r ro rs ;

_p rop e r ty boo l S u p ports L ic e n s ing ;

};

第 三 章 A c tiv e X 框 架 - 图428第 三 章 A c tiv e X 框 架 - 图429T C o m O b je c t F acto r y 就 是 前 面 一 再 提 到 的 类 工 厂 从 上 述 声 明 可 以 看 出

第 三 章 A c tiv e X 框 架 - 图430第 三 章 A c tiv e X 框 架 - 图431第 三 章 A c tiv e X 框 架 - 图432第 三 章 A c tiv e X 框 架 - 图433第 三 章 A c tiv e X 框 架 - 图434第 三 章 A c tiv e X 框 架 - 图435第 三 章 A c tiv e X 框 架 - 图436第 三 章 A c tiv e X 框 架 - 图437第 三 章 A c tiv e X 框 架 - 图438T c o m O b je ct- F acto r y 同 时 支 持 IU know n IC la s s F a c to ry 和 IC la ssF a c to r y 2 接 口类 工 厂 的 作 用 是 创 建 和 输 出 CO M 对 象 的 实 例 并 在 W ind ow s 的 注 册 表 中 注册 CO M 对 象 类 工 厂 本 身 的 实 例 一 般 应 当 在 项 目 文 件 中 建 立 也 可 以 由W ind ow s 的 Co C re a te C la s s O b je c t函 数 建 立 那 么 到 底 该 怎 样 选 择 呢 用 构 造函 数 适 合 于 只 建 立 类 工 厂 的 一 个 实 例 而 Co C re a te C la s s O b je c t函 数 适 合 于 建立 多 个 实 例

第 三 章 A c tiv e X 框 架 - 图439第 三 章 A c tiv e X 框 架 - 图440CO M 服 务 器 所 拥 有 的 类 工 厂 由 T C o m C las s M an a g er 来 管 理 在 Co m O b j 单 元中 已 自 动 创 建 了 T C o m C las s M an a g er的 实 例 叫 C o m C la s s M an ag er

C la ssI D 特 性

第 三 章 A c tiv e X 框 架 - 图441声 明 _prope r ty G U ID C la s s ID ;

第 三 章 A c tiv e X 框 架 - 图442这 个 只 读 的 特 性 返 回 类 工 厂 所 要 创 建 实 例 的 CO M 对 象 的 类 标 识 符 CL S ID

第 三 章 A c tiv e X 框 架 - 图443在 调 用 T C o m O b je c t F acto ry 的 构 造 函 数 时 必 须 指 定 CO M 对 象 的 类 标 识 符

第 三 章 A c tiv e X 框 架 - 图444( C la ssID 参 数 )

C la ss N a m e 特 性

第 三 章 A c tiv e X 框 架 - 图445声 明 _prope r ty S y s te m : : A n s i S tr ing C la s s N a m e ;

第 三 章 A c tiv e X 框 架 - 图446第 三 章 A c tiv e X 框 架 - 图447第 三 章 A c tiv e X 框 架 - 图448这 个 只 读 的 特 性 返 回 类 工 厂 所 要 创 建 实 例 的 CO M 对 象 的 类 名 在 调 用T C o m O b je c t F acto r y 的 构 造 函 数 时 必 须 指 定 CO M 对 象 的 类 名 ( C la ssN a m e 参数 )

C o m C la s s 特 性

第 三 章 A c tiv e X 框 架 - 图449声 明 _ p ro p e r ty S y ste m : : T M e ta C la ss* C o m C la ss;

第 三 章 A c tiv e X 框 架 - 图450这 个 只 读 的 特 性 返 回 类 工 厂 所 要 创 建 实 例 的 CO M 对 象 的 类 型

第 三 章 A c tiv e X 框 架 - 图451第 三 章 A c tiv e X 框 架 - 图452第 三 章 A c tiv e X 框 架 - 图453T C o m C las s M an ag er 的 G e tF a c to r y F ro m C la s s 函 数 要 用 到 CO M 对 象 的 类 型在 调 用 T C o m O b je c t F acto ry 的 构 造 函 数 时 必 须 指 定 CO M 对 象 的 类 型(C o m C la s s 参 数 )

C o m S erv e r 特 性

第 三 章 A c tiv e X 框 架 - 图454声 明 prope r ty C o m S e rve r : T C o m S e rv e r O b je c t ;

第 三 章 A c tiv e X 框 架 - 图455这 个 只 读 的 特 性 返 回 拥 有 这 个 类 工 厂 的 CO M 服 务 器 在 调 用

第 三 章 A c tiv e X 框 架 - 图456第 三 章 A c tiv e X 框 架 - 图457T C o m O b je c t F acto r y 的 构 造 函 数 时 必 须 指 定 CO M 服 务 器 (C o m S e rv e r参 数 )

D e s crip tio n 特 性

第 三 章 A c tiv e X 框 架 - 图458声 明 _prope r ty S y s te m : : A n s i S tr ing D e s c r ip tion;

第 三 章 A c tiv e X 框 架 - 图459第 三 章 A c tiv e X 框 架 - 图460第 三 章 A c tiv e X 框 架 - 图461第 三 章 A c tiv e X 框 架 - 图462第 三 章 A c tiv e X 框 架 - 图463这 个 只 读 的 特 性 从 CO M 对 象 的 类 型 库 中 返 回 关 于 此 对 象 的 描 述 当 类 工 厂在 注 册 表 中 注 册 CO M 对 象 时 需 要 指 定 一 个 字 符 串 来 描 述 要 注 册 的 CO M 对象 在 调 用 T C o m O b je c t F acto ry 的 构 造 函 数 时 必 须 指 定 此 字 符 串 ( D e s c rip tio n 参 数 )

I n sta n c in g 特 性

第 三 章 A c tiv e X 框 架 - 图464声 明 _prope r ty T C la s s Ins ta nc in g In s ta n c ing;

第 三 章 A c tiv e X 框 架 - 图465第 三 章 A c tiv e X 框 架 - 图466第 三 章 A c tiv e X 框 架 - 图467第 三 章 A c tiv e X 框 架 - 图468这 个 只 读 的 特 性 返 回 CO M 对 象 被 创 建 的 方 式 返 回 c i In te rn a l表 示 CO M 对 象是 CO M 服 务 器 内 部 使 用 的 返 回 ciS in g le In s tan c e 表 示 在 同 一 个 时 刻 CO M 对象 只 有 一 个 实 例 返 回 c i M u ltiIn s ta n c e 表 示 在 同 一 个 CO M 对 象 可 以 有 多 个 实例

P rogI D 特 性

第 三 章 A c tiv e X 框 架 - 图469声 明 _prope r ty S y s te m : : A n s i S tr ing P rogID ;

第 三 章 A c tiv e X 框 架 - 图470这 个 只 读 的 特 性 返 回 类 工 厂 的 P rog ID 凡 是 可 以 插 入 到 OL E 容 器 的 对 象 都

第 三 章 A c tiv e X 框 架 - 图471有 其 P rogID

Suppo r ts L ic e n s in g 特 性

第 三 章 A c tiv e X 框 架 - 图472声 明 _prope r ty bool S upports L ic e n s ing;

第 三 章 A c tiv e X 框 架 - 图473第 三 章 A c tiv e X 框 架 - 图474第 三 章 A c tiv e X 框 架 - 图475第 三 章 A c tiv e X 框 架 - 图476如 果 这 个 特 性 设 为 T ru e 类 工 厂 要 创 建 的 CO M 对 象 的 实 例 将 支 持 许 可检 查 功 能

C re a te C o m O b je c t 函 数

第 三 章 A c tiv e X 框 架 - 图477声 明 v ir tua l T C o m O b je c t* _fa s tc a l l C re a te C o m O b je c t( c ons t _d i_ IU nkn ow n C on tro l le r ) ;

第 三 章 A c tiv e X 框 架 - 图478这 个 函 数 用 于 创 建 CO M 对 象 的 实 例 它 实 际 上 是 调 用 T C o m O b ject的 一 个 构

第 三 章 A c tiv e X 框 架 - 图479第 三 章 A c tiv e X 框 架 - 图480造 函 数 并 把 类 工 厂 自 己 传 递 给 C reateF ro m F a c to r y 的 F acto ry 参 数

R e g iste r C la ss O b je c t 函 数

第 三 章 A c tiv e X 框 架 - 图481声 明 vo id _fa s tc a ll R e g is te r C la s s O b je c t( vo id);

第 三 章 A c tiv e X 框 架 - 图482第 三 章 A c tiv e X 框 架 - 图483第 三 章 A c tiv e X 框 架 - 图484第 三 章 A c tiv e X 框 架 - 图485第 三 章 A c tiv e X 框 架 - 图486第 三 章 A c tiv e X 框 架 - 图487第 三 章 A c tiv e X 框 架 - 图488第 三 章 A c tiv e X 框 架 - 图489第 三 章 A c tiv e X 框 架 - 图490第 三 章 A c tiv e X 框 架 - 图491第 三 章 A c tiv e X 框 架 - 图492第 三 章 A c tiv e X 框 架 - 图493这 个 函 数 用 于 注 册 类 工 厂 所 创 建 的 CO M 对 象 如 果 没 有 注 册 成 功 将 触 发E O le S y s E rro r 异 常 可 能 的 错 误 码 有 E _ INVAL IDAR G 表 示 可 能 参 数 是 非法 的 E _ OUT OF M E M O R Y 表 示 内 存 不 够 E _ UNE XP E C T E D 表 示 是 未 预 计到 的 错 误 C O _E _O B J IS R E G 表 示 CO M 对 象 已 经 注 册 只 有 EX E 类 型 的 CO M 服 务 器 应 当 调 用 R e g is ter C las s O b ject 来 注 册 CO M 对 象 如 果 CO M 服 务 器 是DL L 不 要 调 用 R e g is ter C las s O b ject 而 是 在 项 目 文 件 中 实 现 并 输 出D llG e t C la s s O b je c t函 数

U pda te R e g is tr y 函 数

第 三 章 A c tiv e X 框 架 - 图494声 明 v ir tua l vo id _fa s tc a ll U pda te R e g is try ( boo l R e g is te r ) ;

第 三 章 A c tiv e X 框 架 - 图495第 三 章 A c tiv e X 框 架 - 图496第 三 章 A c tiv e X 框 架 - 图497第 三 章 A c tiv e X 框 架 - 图498这 个 函 数 也 是 用 于 注 册 类 工 厂 创 建 的 CO M 对 象 不 同 的 是 如 果 R e g is te r参数 设 为 Fa ls e 就 撤 消 对 CO M 对 象 的 注 册

1 3 TT yp ed Com Ob je ct Fac to ry

第 三 章 A c tiv e X 框 架 - 图499第 三 章 A c tiv e X 框 架 - 图500第 三 章 A c tiv e X 框 架 - 图501第 三 章 A c tiv e X 框 架 - 图502第 三 章 A c tiv e X 框 架 - 图503T T y p ed C o m O b jectF a c to r y 是 从 T C o m O b je c tF ac to r y 直 接 继 承 下 来 的 如 果 说T C o m O b je c t F acto r y 是 对 应 于 TC o m O b je c t 的 类 工 厂 的 话 那 么 T T y p ed C o m O b jectF a c to r y 就 是 对 应 于 T T y pe d C om O b je c t的 类 工 厂

第 三 章 A c tiv e X 框 架 - 图504第 三 章 A c tiv e X 框 架 - 图505在 Co m O b j单 元 中 T T yp ed C o m O b jec t F ac to r y 是 这 样 声 明 的

c la s s PA S C A L IM P LEM EN TAT IO N T T y p e d C o m O b je c t F a c to ry : p u b l ic C o m o bj:: T C o m O bject F a cto ry

{

ty pe de f C o m o b j : : T C o m O b je c t F a c tory inhe r ite d ; pub l ic :

_ fas tc all T T y p e d C o m O b je c t F acto ry ( T C o m S e rv er O b je ct* C o m S erv e r , S y s tem : : T M e ta C la s s * T y pe dC om C la s s , G U ID & C la s s ID , T C la s s Ins ta nc in g In s ta n c ing);

_d i_ IT y pe In fo _fa s tc a l l G e t In te r fa c e T y pe In fo ( int T y pe F la g s ) ; v ir tu a l v o id _ fa s tc a ll U p d a te R e g is try ( b o o l R e g is te r ) ;

_p rop e r ty _d i_ IT y pe In fo C la s s Info ;

pub l ic :

_fa s tc a l l v ir tua l ~ T T y pe d C om O b je c t F a c tory ( vo id) { }

};

第 三 章 A c tiv e X 框 架 - 图506第 三 章 A c tiv e X 框 架 - 图507第 三 章 A c tiv e X 框 架 - 图508第 三 章 A c tiv e X 框 架 - 图509第 三 章 A c tiv e X 框 架 - 图510第 三 章 A c tiv e X 框 架 - 图511根 据 类 的 传 递 规 则 T T yp ed C o m O b jec t F a c to r y 也 支 持 IU nknow n IC la s s F a c to ry 和 IC la s s F a c to r y 2 接 口 与 T C om O b je c t F a c tor y 相 比 T T y p ed C o m O b je c t F ac to r y 的 构 造 函 数 稍 有 不 同 并 增 加 了 C la ssIn fo 特 性 和 G e t In terfaceT yp eIn fo 函 数

C la ssIn fo 特 性

第 三 章 A c tiv e X 框 架 - 图512声 明 _prope r ty _d i_ IT y pe In fo C la s s Info;

第 三 章 A c tiv e X 框 架 - 图513第 三 章 A c tiv e X 框 架 - 图514第 三 章 A c tiv e X 框 架 - 图515T T y p ed C o m O b ject的 特 点 是 无 须 调 入 类 型 库 就 可 以 直 接 读 取 类 型 信 息 这 个特 性 用 于 返 回 类 型 信 息 的 接 口 引 用 IT y p e In fo 接 口 用 于 从 类 型 库 中 提 取 有关 信 息

G e t I n te r fa c e Ty pe I n fo 函 数

第 三 章 A c tiv e X 框 架 - 图516声 明 _d i_IT y pe In fo _fa s tc a ll G e t In te r fa c e T y p e Info( in t T y pe F la g s ) ;

第 三 章 A c tiv e X 框 架 - 图517这 个 函 数 从 由 类 工 厂 创 建 的 T T yp ed C o m O b jec t的 实 例 中 检 索 类 型 信 息

1 4 TA ct iv eXP ro pe rt yPa ge Fa cto ry

第 三 章 A c tiv e X 框 架 - 图518第 三 章 A c tiv e X 框 架 - 图519第 三 章 A c tiv e X 框 架 - 图520T A ctiv eX P ro p e r tyP ag eF acto r y 也 是 直 接 从 TC o m O b je c t F a c to ry 继 承 下 来 的 因此 它 与 T T y p ed C o m O b jec t F a c to r y 是 平 级 的 它 是 A c tiv e X 控 件 和 A c tiv e F o rm

第 三 章 A c tiv e X 框 架 - 图521的 特 性 页 的 类 工 厂

第 三 章 A c tiv e X 框 架 - 图522第 三 章 A c tiv e X 框 架 - 图523在 A x C tr ls 单 元 中 T A ctiv eX P ro p e r tyP ag eF a c to r y 是 这 样 声 明 的 ( 按 O b ject P a s cal的 语 法 声 明 )

T A ctiv eX P ro p erty P a g e F a cto ry = C la s s ( T C o m O b ject F ac to ry) P ro tected

F unc t io n C re a te C om O b je c t( c o n s t C o n tro l le r : IU nk no w n ) : T C om O b je c t ; ove r r ide ; P u b lic

C o n s tru c to r C re a te ( C o m S e rv e r : T C o m S e rv e r O b je c t; P ro p e r ty P a g e C la s s : T P ro p e r ty P ag eC la s s ; co n s t C las s ID : T G U ID ) ;

En d ;

第 三 章 A c tiv e X 框 架 - 图524第 三 章 A c tiv e X 框 架 - 图525特 性 页 也 是 CO M 对 象 (T P ro p e rty P a g e ) 它 也 需 要 用 类 工 厂 来 创 建 实 例

构 造 函 数

第 三 章 A c tiv e X 框 架 - 图526第 三 章 A c tiv e X 框 架 - 图527声 明 c o n s tru c to r C re a te ( C o m S e rv e r : T C o m S e rv e r O b je c t; P ro p e r ty P a g e C la s s T p ro p e r ty P a g e C la s s ; c o n s t C la s s ID: T GU ID );

第 三 章 A c tiv e X 框 架 - 图528第 三 章 A c tiv e X 框 架 - 图529第 三 章 A c tiv e X 框 架 - 图530构 造 函 数 用 于 创 建 类 工 厂 的 实 例 其 中 Co m S e rv e r参 数 指 定 CO M 服 务 器

第 三 章 A c tiv e X 框 架 - 图531通 常 把 Co m S e rv 单 元 中 的 全 局 变 量 Co m S e rv e r 传 递 给 Co m S e rv e r 参 数

第 三 章 A c tiv e X 框 架 - 图532第 三 章 A c tiv e X 框 架 - 图533第 三 章 A c tiv e X 框 架 - 图534第 三 章 A c tiv e X 框 架 - 图535第 三 章 A c tiv e X 框 架 - 图536P ro p e r tyP ag eC la s s 参 数 是 特 性 页 对 象 的 类 名 这 个 类 必 须 是 从 T P rope r ty P a g e 继 承 下 来 的 C la ssID 参 数 用 于 指 定 特 性 页 对 象 的 GU ID 通 常 先 声 明 一 个 常量 然 后 用 这 个 常 量 作 为 C la ssID 参 数

  1. 1 5 TA ut oO bje ct Fa ct ory

第 三 章 A c tiv e X 框 架 - 图537第 三 章 A c tiv e X 框 架 - 图538第 三 章 A c tiv e X 框 架 - 图539第 三 章 A c tiv e X 框 架 - 图540第 三 章 A c tiv e X 框 架 - 图541OL E 自 动 化 服 务 器 也 是 CO M 对 象 因 此 也 需 要 类 工 厂 T A u to O b jectF acto ry 是 T A u toO b je c t 的 类 工 厂 在 Co m O b j 单 元 中 T A u toO b je c t F a c tory 是 这 样 声明 的

clas s PA S C A L IM P L E M E N TAT IO N TA u to O bject F ac to ry : pub l ic C o m o b j : : T T y p e dC om O b je c t F a c tory

{

ty pe de f C o m o b j : : T T y pe d C om O b je c t F a c tory inhe r i te d; pub l ic :

_ fas tc all T A u to O b ject F ac to ry ( T C o m S e rv er O b ject* C o m S erv e r , S y s tem : :

T M etaC la s s * A u to C la s s , c o n s t G U ID & C la s s ID , T C la s s In s tan cing In s tan c in g ) ; v ir tu a l S y s te m : : P In te r faceE n try _ fa s tcall G e t In tf E n try ( c o n s t G U ID & G u id ) ;

_ p ro p e r ty S y s te m : : P In te r faceE n try D is p In tf E n try = {re a d = F D is p In tf E n try } ;

_p rop e r ty _d i_ IT y pe In fo D isp T y pe In fo = { re a d = F D is p T y p e In fo } ; pub l ic :

_ fa s tc a ll v ir tu a l ~ T A u to O b je c t F a c to ry ( v o id ) { }

};

第 三 章 A c tiv e X 框 架 - 图542根 据 类 传 递 的 规 则 T A u to O b jectF acto ry 支 持 IC la ssF a c to r y 和 IC la ssF a c to r y 2

第 三 章 A c tiv e X 框 架 - 图543接 口

D is p I n tf E n tr y 特 性

第 三 章 A c tiv e X 框 架 - 图544声 明 _ p ro p e r ty S y s tem : : P In te r faceE n tr y D is p In tf E n tr y ;

第 三 章 A c tiv e X 框 架 - 图545第 三 章 A c tiv e X 框 架 - 图546其 中 P In terfa ceE n try 是 这 样 声 明 的

s tru ct P A C K A G E T In terfa ce E n try

{

T GU ID I ID;

vo id * V T a b le ; in t IO f fs e t ;

};

ty pe de f T In te rfa c e E n try *P In te r fa c e E n try ;

第 三 章 A c tiv e X 框 架 - 图547第 三 章 A c tiv e X 框 架 - 图548第 三 章 A c tiv e X 框 架 - 图549这 个 只 读 的 特 性 返 回 OL E 自 动 化 对 象 实 现 的 调 度 接 口 的 有 关 信 息 实 际 上是 一 个 记 录 的 指 针 这 个 特 性 在 创 建 类 工 厂 的 实 例 时 被 初 始 化

D is p Ty p e In fo 特 性

第 三 章 A c tiv e X 框 架 - 图550声 明 _prope r ty _d i_ IT y pe In fo D is p T y pe In fo ;

第 三 章 A c tiv e X 框 架 - 图551这 个 只 读 的 特 性 返 回 一 个 IT y p e In fo 接 口 的 引 用 通 过 这 个 接 口 可 以 读 取 OL E

第 三 章 A c tiv e X 框 架 - 图552自 动 化 对 象 的 类 型 信 息

G e t I n tf E n tr y 函 数

第 三 章 A c tiv e X 框 架 - 图553声 明 v ir tu a l S y s te m :: P In te r faceE n tr y _ fa s tc a l l G e t In tf E n tr y ( c o n s t G U ID & G u id);

第 三 章 A c tiv e X 框 架 - 图554第 三 章 A c tiv e X 框 架 - 图555第 三 章 A c tiv e X 框 架 - 图556第 三 章 A c tiv e X 框 架 - 图557第 三 章 A c tiv e X 框 架 - 图558这 个 函 数 返 回 G u id 参 数 指 定 的 接 口 的 有 关 信 息 实 际 上 是 一 个 记 录 的 指 针注 意 这 个 函 数 一 般 只 在 内 部 调 用 程 序 不 要 直 接 调 用 它

1 6 TA ct iv eXC on tr ol Fac to ry

第 三 章 A c tiv e X 框 架 - 图559第 三 章 A c tiv e X 框 架 - 图560第 三 章 A c tiv e X 框 架 - 图561第 三 章 A c tiv e X 框 架 - 图562A c tiv e X 控 件 是 典 型 的 CO M 对 象 因 此 A c tiv e X 控 件 也 需 要 用 类 工 厂 创 建实 例 并 注 册 T A c tiv e X C o n tro lF a c to r y 就 是 A c t iv e X 控 件 的 类 工 厂

第 三 章 A c tiv e X 框 架 - 图563第 三 章 A c tiv e X 框 架 - 图564在 A x C tr ls 单 元 中 T A c tiv e X C o n tro lF a c to r y 是 这 样 声 明 的

clas s PA S C A L IM P L E M E N TAT IO N TA ctiv eX C o n tro l F a c to ry : p u b lic C o m o b j::T A u to O b je c tF a c to ry

{

ty pe de f C o m o b j : : T A u to O b je c t F a c tory inhe r i te d; pub l ic :

_ fa s tc a ll T A c tiv e X C o n tro lF a c to ry ( C o m o b j::T C o m S e rv e r O b je c t* C o m S e rv e r ,

T M e ta C la s s * A c tiv e X C o n tro lC la ss , S y s te m :: T M e ta C la s s * W in C o n tro l C la s s , c o n s t G U ID & C la s s ID , in t T o o lb o x B itm a p ID , c o n s t A n s i S tr in g L ic S tr , in t M is c S ta tu s ) ;

_fa s tc a l l v ir tua l ~ T A c t iv e X C o n tro l F a c tory ( vo id);

vo id _ fa s tc a l l A ddV e rb ( in t V e rb , c ons t S y s te m : : A n s i S tr ing V e rb N a m e ) ; v ir tu a l v o id _ fa s tc a ll U p d a te R e g is try ( b o o l R e g is te r ) ;

_p rop e r ty G U ID E v e n t I ID ;

_p rop e r ty _d i_ IT y pe In fo E v e n t T y p e Info;

_p rop e r ty in t M is c S ta tus ;

_p rop e r ty in t T oo lbo xB i tm a p ID ;

_ p ro p e rty S y s te m ::T M e ta C la s s * W in C o n tro lC la s s ;

};

E v e n t II D 特 性

第 三 章 A c tiv e X 框 架 - 图565声 明 _prope r ty G U ID E v e n t I ID ;

第 三 章 A c tiv e X 框 架 - 图566这 个 只 读 的 特 性 返 回 A c tiv e X 控 件 的 事 件 接 口 的 GU ID

E v en t Ty p eI n fo 特 性

第 三 章 A c tiv e X 框 架 - 图567声 明 _prope r ty _d i_ IT y pe In fo E v e n t T y p e Info;

第 三 章 A c tiv e X 框 架 - 图568这 个 只 读 的 特 性 返 回 A c tiv e X 控 件 的 事 件 接 口 的 类 型 信 息

M is c S ta tu s 特 性

第 三 章 A c tiv e X 框 架 - 图569声 明 _prope r ty in t M is c S ta tus ;

第 三 章 A c tiv e X 框 架 - 图570这 个 只 读 的 特 性 返 回 注 册 表 中 CL S ID 键 值 下 的 条 目

To o lbo x B itm a p I D 特 性

第 三 章 A c tiv e X 框 架 - 图571声 明 _prope r ty in t T oo lboxB i tm a pID ;

第 三 章 A c tiv e X 框 架 - 图572这 个 只 读 的 特 性 返 回 用 于 代 表 A c tiv e X 控 件 的 图 标 的 资 源 ID

W in C on tro lC las s 特 性

第 三 章 A c tiv e X 框 架 - 图573声 明 _prope r ty S y s te m : : T M e ta C la s s * W inC on tro l C la s s ;

第 三 章 A c tiv e X 框 架 - 图574第 三 章 A c tiv e X 框 架 - 图575用 A c tiv e X 框 架 可 以 把 一 个 基 于 VC L 的 控 件 转 换 为 A c tiv e X 控 件 这 个 只 读 的特 性 返 回 对 应 的 VC L 控 件

A dd Ve r b 函 数

第 三 章 A c tiv e X 框 架 - 图576第 三 章 A c tiv e X 框 架 - 图577第 三 章 A c tiv e X 框 架 - 图578第 三 章 A c tiv e X 框 架 - 图579第 三 章 A c tiv e X 框 架 - 图580第 三 章 A c tiv e X 框 架 - 图581第 三 章 A c tiv e X 框 架 - 图582第 三 章 A c tiv e X 框 架 - 图583第 三 章 A c tiv e X 框 架 - 图584声 明 v o id _ fa s tc a ll A d d V e rb ( in t V e rb , c o n s t S y s te m ::A n s iS trin g V e rb N a m e ) ; 用 鼠 标 右 键 单 击 A c tiv e X 控 件 将 弹 出 一 个 快 捷 菜 单 该 菜 单 上 的 命 令 也 称动 作 就 是 通 过 这 个 函 数 事 先 设 置 的 其 中 V e rb 参 数 是 个 整 数 用 于 设 置动 作 的 编 号 自 定 义 的 动 作 通 常 设 为 正 数 C+ + Bu ild e r 3 预 定 义 了 一 些 动 作 ( 负 数 或 零 )

  • OL E IVE R B _ P R IM AR Y

  • O LE IV E R B _ S H O W

  • OL E IVE R B _ OP E N

  • OL E IVE R B _ H IDE

  • OL E IVE R B _ U IAC T IVAT E

  • OL E IVE R B _ IN P L AC E A C T IVAT E

  • OL E IVE R B _ D IS C AR DU ND OS T A T E

  • O LE IV E R B _ P R O P ER T IES

第 三 章 A c tiv e X 框 架 - 图585第 三 章 A c tiv e X 框 架 - 图586第 三 章 A c tiv e X 框 架 - 图587第 三 章 A c tiv e X 框 架 - 图588第 三 章 A c tiv e X 框 架 - 图589V e rb N a m e 参 数 是 个 字 符 串 用 于 设 置 动 作 名 实 际 上 就 是 出 现 在 快 捷 菜 单中 的 命 令 名 字 符 串 中 可 以 出 现 & 符 号 & 符 号 后 面 的 那 个 字 符 将 带 下 划 线显 示

TA c tiv e X C o n tro lF a c to r y 的 构 造 函 数

第 三 章 A c tiv e X 框 架 - 图590声 明 _ fas tc all

T A ctiv eX C o n tro l F acto ry( C o m o b j :: T C o m S erv e r O b je c ∗ Co m S e rv e r , S y s te m : : T M etaC la s s ∗ A c tiv eX C o n tro l C la s s , S y s tem : : T M etaC la s s ∗ W inC on tro l C la s s , c ons t G U ID & C la s s - ID , in t T oo lboxB itm a pID , c ons t S y s te m :: A n s i S tr ingL ic S tr , in t M is c S ta tu s ) ;

第 三 章 A c tiv e X 框 架 - 图591第 三 章 A c tiv e X 框 架 - 图592这 个 构 造 函 数 用 于 创 建 类 工 厂 的 实 例 其 中 Co m S e rv e r参 数 用 于 指 定 CO M

第 三 章 A c tiv e X 框 架 - 图593第 三 章 A c tiv e X 框 架 - 图594服 务 器 通 常 设 为 Co m S e rv 单 元 中 的 全 局 变 量 Co m S e rv e r

第 三 章 A c tiv e X 框 架 - 图595第 三 章 A c tiv e X 框 架 - 图596第 三 章 A c tiv e X 框 架 - 图597第 三 章 A c tiv e X 框 架 - 图598第 三 章 A c tiv e X 框 架 - 图599第 三 章 A c tiv e X 框 架 - 图600第 三 章 A c tiv e X 框 架 - 图601A c tiv e X C o n tro lC la s s 参 数 是 A c tiv e X 控 件 的 类 名 它 是 从 T A ctiv eX C o n tro l 继承 下 来 的 W inC on tro l C la s s 参 数 用 于 指 定 VC L 控 件 的 类 名 它 是 从T W in C on tro l继 承 下 来 的 C la ssID 参 数 用 于 指 定 A c tiv e X 控 件 的 GU ID L ic S tr 参 数 是 A c tiv e X 控 件 的 许 可 字 符 串 如 果 A c tiv e X 控 件 不 需 要 进 行 许 可 检 查

第 三 章 A c tiv e X 框 架 - 图602第 三 章 A c tiv e X 框 架 - 图603L ic S tr参 数 可 以 设 为 空 M is c S ta tu s 参 数 用 于 设 置 存 储 到 注 册 表 中 的 状 态 位

U pda te R e g is tr y 函 数

第 三 章 A c tiv e X 框 架 - 图604声 明 v ir tua l vo id _fa s tc a ll U pda te R e g is try ( boo l R e g is te r ) ;

第 三 章 A c tiv e X 框 架 - 图605第 三 章 A c tiv e X 框 架 - 图606第 三 章 A c tiv e X 框 架 - 图607第 三 章 A c tiv e X 框 架 - 图608第 三 章 A c tiv e X 框 架 - 图609这 个 函 数 用 于 在 注 册 表 中 注 册 A c tiv e X 控 件 或 撤 消 注 册 如 果 R e g is te r参 数 设为 T ru e 表 示 要 进 行 注 册 如 果 R e g is te r参 数 设 为 Fa ls e 表 示 要 撤 消 注 册

第 三 章 A c tiv e X 框 架 - 图610第 三 章 A c tiv e X 框 架 - 图611第 三 章 A c tiv e X 框 架 - 图612第 三 章 A c tiv e X 框 架 - 图613第 三 章 A c tiv e X 框 架 - 图614第 三 章 A c tiv e X 框 架 - 图615一 般 不 需 要 重 载 这 个 函 数 除 非 您 想 在 注 册 表 中 存 储 更 多 的 信 息 如 果 要重 载 这 个 函 数 并 且 R e g is te r参 数 设 为 T ru e 首 先 要 调 用 Inhe r i te d 如 果 R e g is te r 参 数 设 为 Fa ls e 要 在 最 后 调 用 Inhe r i te d

1 7 TA ct iv eFo rm Fa ct ory

第 三 章 A c tiv e X 框 架 - 图616第 三 章 A c tiv e X 框 架 - 图617第 三 章 A c tiv e X 框 架 - 图618A c tiv e F o rm 可 以 理 解 为 复 合 的 A c tiv e X 控 件 也 是 典 型 的 CO M 对 象 因 此

第 三 章 A c tiv e X 框 架 - 图619第 三 章 A c tiv e X 框 架 - 图620第 三 章 A c tiv e X 框 架 - 图621第 三 章 A c tiv e X 框 架 - 图622A c tiv e F o rm 也 需 要 类 工 厂 T A ctiv eF o rm F ac to r y 就 是 T A ctiv eF o rm 的 类 工 厂 在 A x C tr ls 单 元 中 T A ctiv eF o rm F a c to r y 是 这 样 声 明 的 ( 按 O b ject P a s cal的 语 法声 明 )

T A ctiv eF o rm F acto ry = C las s ( T A ctiv e X C o n tro l F acto ry ) P u b lic

F unc t io n G e t In tf E n try ( G u id: T G U ID ) : P In te r fa c e E n try ; ov e r r ide ;

En d ;

第 三 章 A c tiv e X 框 架 - 图623第 三 章 A c tiv e X 框 架 - 图624可 见 T A ctiv eF o rm F acto r y 是 从 T A c tiv e X C o n tro lF a c to r y 继 承 下 来 的 重 载 了

第 三 章 A c tiv e X 框 架 - 图625G e t In tf E n tr y 函 数

第 三 章 A c tiv e X 框 架 - 图626第 三 章 A c tiv e X 框 架 - 图627第 三 章 A c tiv e X 框 架 - 图628第 三 章 A c tiv e X 框 架 - 图629第 三 章 A c tiv e X 框 架 - 图630第 三 章 A c tiv e X 框 架 - 图631第 三 章 A c tiv e X 框 架 - 图632第 三 章 A c tiv e X 框 架 - 图633第 三 章 A c tiv e X 框 架 - 图634至 此 A c tiv e X 框 技 术 已 经 全 部 介 绍 完 毕 也 许 有 的 读 者 会 觉 得 上 述 内 容 很深 奥 不 太 好 理 解 事 实 上 的 确 如 此 读 者 只 有 深 刻 领 会 了 C+ + Bu ild e r 3 面向 对 象 的 编 程 思 想 以 及 对 象 接 口 的 语 法 才 能 真 正 掌 握 A c tiv e X 框 架 的结 构 和 精 髓