第 四 章 Ty p e L ib ra ry 编 辑 器
用 C+ + Bu ild e r 3 创 建 OL E 自 动 化 对 象 A c tiv e X 控 件 以 及 A c tiv e F o rm 的 关 键在 于 用 T y pe L ibra ry 编 辑 器 建 立 和 编 辑 类 型 库 所 谓 类 型 库 实 际 上 是一 个 文 件 包 含 了 CO M 对 象 中 的 数 据 类 型 接 口 成 员 函 数 等 信 息 当 您用 C+ + Bu ild e r 3 提 供 的 向 导 创 建 OL E 自 动 化 对 象 A c tiv e X 控 件 以 及A c tiv e F o rm 时 这 些 向 导 会 自 动 生 成 类 型 库 文 件 并 作 为 资 源 连 接 到 所 要 创建 的 DL L 或 EX E 中 让 其 它 应 用 程 序 或 其 它 编 程 工 具 识 别 和 使 用
1 关 于 类 型 库 的 概 述
类 型 库 的 主 要 内 容 是 关 于 CO M 对 象 的 数 据 类 型 接 口 和 成 员 函 数 的 信 息包 括 接 口 的 标 识 符 IID 和 类 标 识 符 CL S ID 以 及 每 个 成 员 的 识 别 号 D is p ID 此外 类 型 库 中 还 包 括 自 定 义 接 口 的 类 型 信 息 由 A c tiv e X 服 务 器 输 出 的 例 程以 及 对 其 它 类 型 库 的 引 用
如 果 仍 然 使 用 传 统 的 开 发 工 具 您 不 得 不 用 脚 本 语 言 如 ID L 或 ODL 来 描 述 类型 库 并 通 过 编 译 器 运 行 脚 本 现 在 有 了 C+ + Bu ild e r 3 您 就 轻 松 多 了 C+ + B u ild e r 3 提 供 了 一 个 非 常 好 的 实 用 工 具 叫 Ty p e L ib r a ry 编 辑 器 您 用 不着 学 习 ID L 或 ODL 因 为 T y p e L ib ra r y 编 辑 器 采 用 可 视 化 的 手 段 让 您
交 互 生 成 和 编 辑 类 型 库 中 的 信 息 并 自 动 生 成 C+ + 源 代 码 类 型 库 文 件 实 际上 包 括 两 个 部 分 一 个 是 已 编 译 的 类 型 库 扩 展 名 是 . TLB 另 一 个 是 相 应的 接 口 源 文 件 扩 展 名 是 .C P P
什 么 情 况 下 CO M 对 象 需 要 有 类 型 库 总 的 原 则 是 如 果 CO M 对 象 需 要 向 外部 代 码 暴 露 该 CO M 对 象 就 要 有 类 型 库 具 体 来 说 下 列 情 况 下 需 要 创 建类 型 库
-
凡
是 支 持 虚 拟 方 法 表 的 对 象 需 要 创 建 类 型 库 因 为 对 虚 拟 方 法 表 的 引 用必 须 在 编 译 期 就 是 确 定 的 也 就 是 说 必 须 在 类 型 库 中 描 述 虚 拟 方 法 表
-
凡
是 支 持 IP rov ide C la s s Info 接 口 的 对 象 如 T T y p ed C o m O b ject的 派 生 类 必 须创 建 类 型 库 因 为 外 部 代 码 可 能 会 直 接 读 取 类 型 库 中 的 信 息
-
凡 是
A c tiv e X 控 件 需 要 创 建 类 型 库 类 型 库 必 须 作 为 资 源 连 接 到 A c tiv e X
控 件 的 DL L 或 OC X 文 件 中
-
OL
E 自 动 化 服 务 器 必 须 提 供 类 型 库 OL E 客 户 才 能 实 现 所 谓 的 ID B ind ing
-
有
时 尽 管 类 型 库 不 是 必 需 的 但 可 以 用 于 标 识 拖 放 的 对 象 最 好 也 要 建立 类 型 库
如 果 CO M 对 象 仅 仅 是 内 部 使 用 的 就 用 不 着 创 建 类 型 库 您 可 以 直 接 在 一个 单 元 文 件 中 描 述 CO M 对 象 的 有 关 接 口 只 要 符 合 接 口 的 语 法
类 型 库 创 建 好 后 C + + B u ild e r 3 的 编 译 器 T y pe L ib ra r y 编 辑 器 自 身 就可 以 访 问 类 型 库 这 是 通 过 三 个 特 殊 的 接 口 IT y p e L ib IT y p e In fo 和 IT y p e C o m p 实 现 的 其 中 IT y p e L ib 接 口 提 供 了 访 问 类 型 库 中 的 信 息 以 及 通 过 IT y p e In fo 接 口 直 接 读 取 类 型 信 息 的 能 力 A c tiv e X 框 架 中 绝 大 多 数 的 类 都 支 持 IT y p e L ib
接 口 T T y p ed C o m O b ject还 支 持 IT y p e In fo 接 口
即 使 应 用 程 序 并 不 需 要 类 型 库 但 使 用 类 型 库 能 带 来 以 下 方 便 和 好 处
-
编
译 器 能 够 在 编 译 期 进 行 类 型 匹 配 检 查 并 及 时 报 错
-
支
持 所 谓 的 ID B ind ing 从 而 加 快 方 法 调 用 的 速 度
-
可
以 用 类 似 于 T y pe L ibra ry 编 辑 器 的 工 具 打 开 类 型 库 查 看 CO M 对象 内 部 的 情 况
-
可
以 调 用 R e g is te r T y p e L ib 函 数 在 W indow s 的 注 册 表 中 注 册 暴 露 的 对 象也 可 以 调 用 U n R e g is te r T y pe L ib 函 数 从 注 册 表 中 撤 消 注 册
2 创 建 一 个 新 的 类 型 库
大 多 数 情 况 下 您 并 不 需 要 自 己 创 建 类 型 库 因 为 当 您 用 C+ + Bu ild e r 3 的 向导 创 建 A c tiv e X 控 件 A c tiv e F o rm OL E 自 动 化 对 象 时 向 导 会 自 动 生 成 类型 库 但 是 如 果 您 想 单 独 创 建 一 个 类 型 库 作 为 资 源 连 接 到 OC X DL L 或 EX E 中 就 要 自 己 创 建 类 型 库
要 创 建 一 个 新 的 类 型 库 使 用 F ile 菜 单 上 的 N e w 命 令 打 开 N e w I te m s 对 话 框 ( 实 际 上 就 是 C+ + Bu ild e r 3 的 对 象 库 ) 翻 到 A c tiv e X 页 如 图 4 .1 所 示
图 4 .1 创 建 一 个 新 的 类 型 库
双 击 T y p e L ib r a ry 图 标 C+ + Bu ild e r 3 将 创 建 一 个 新 的 空 白 的 类 型 库 并 自 动 打 开 T y pe L ib ra ry 编 辑 器 提 示 您 输 入 类 型 库 的 名 称 如 图 4 .2 所示
图 4 .2 一 个 新 的 空 白 的 类 型 库
给 类 型 库 重 新 取 个 名 字 然 后 您 就 可 以 在 类 型 库 中 加 入 In te rfa c e
D is p In te r face Co C la s s En u m P rope r ty 和 M e thod 后 面 将 详 细 介 绍 怎 样 使用 T y p e L ib r a ry 编 辑 器
Ty pe L i b rar y 编 辑 器 的 窗 口
当 您 用 C+ + Bu ild e r 3 的 向 导 创 建 A c tiv e X 控 件 A c tiv e F o rm OL E 自 动 化 对象 时 向 导 会 自 动 创 建 类 型 库 当 然 由 向 导 创 建 的 类 型 库 只 支 持 C+ + Bu ild e r 3 内 建 的 功 能 如 果 您 想 加 入 一 些 自 定 义 的 功 能 并 且 要 向 外 部 代 码 暴 露 这 些功 能 您 就 需 要 编 辑 类 型 库
要 打 开 和 编 辑 当 前 项 目 的 类 型 库 您 可 以 直 接 使 用 V ie w 菜 单 上 的 T y p e L ib ra r y 命 令 要 打 开 和 编 辑 非 当 前 项 目 的 类 型 库 您 可 以 使 用 F ile 菜单 上 的 O p e n 命 令 在 F ile of T y pe 框 内 选 择 Ty p e L ib r a r y ( . TLB )
然 后 指 定 一 个 类 型 库 文 件
下 面 我 们 以 创 建 一 个 A c tiv e X 控 件 为 例 假 设 我 们 要 创 建 的 A c tiv e X 控 件 是 基于 VC L 中 的 TB u t to n 元 件 打 开 的 T y pe L ibra r y 编 辑 器 如 图 4 .3 所 示
图 4 .3 Ty pe L ibra ry 编 辑 器
T y p e L ib r a ry 编 辑 器 没 有 菜 单 只 有 一 个 工 具 栏 除 了 工 具 栏 外 T y p e L ib ra r y 编 辑 器 分 成 左 右 两 个 窗 格 左 边 的 窗 格 以 树 状 视 图 的 方 式 显 示 类型 库 的 结 构 最 顶 层 的 节 点 是 有 关 整 个 类 型 库 的 信 息 下 面 是 类 型 库 中 包
含 的 对 象 ( 可 增 减 ) 右 边 的 窗 格 是 个 多 页 控 件 随 着 在 左 边 窗 格 中 选 择 的 对象 的 不 同 右 边 的 窗 格 将 显 示 不 同 的 信 息
左 边 的 窗 格 也 叫 对 象 列 表 窗 格 类 型 库 中 的 所 有 对 象 以 树 状 视 图 的 形 式 列在 此 窗 格 中 包 括 In te rfa c e D is p in te r fa c e Co C la s s P rope r ty M e thod E num R eco rd 类 型 定 义 模 块 等 其 中 有 的 对 象 是 不 可 编 辑 的 或 者 说 是 只 读 的在 T y p e L ib r a ry 编 辑 器 中 不 同 类 型 的 对 象 以 不 同 的 图 标 表 示
当 您 用 T y pe L ibra ry 编 辑 器 打 开 一 个 类 型 库 特 别 是 其 它 工 具 创 建 的 类 型库 时 很 可 能 会 发 生 转 换 错 误 因 为 有 的 OL E 对 象 中 的 数 据 类 型 或 其 它 文法 不 能 被 C+ + 支 持 这 时 候 T y pe L ibra r y 编 辑 器 就 会 在 一 个 专 门 的 错误 记 录 窗 格 中 显 示 有 关 的 错 误 信 息
类 型 库 的 一 般 信 息
在 T y p e L ib r a ry 编 辑 器 的 对 象 列 表 窗 格 中 最 顶 层 的 节 点 就 是 类 型 库如 选 择 这 个 节 点 右 边 的 窗 格 中 将 显 示 A ttrib u te s 页 U s e s 页 F la g s 页 和 Te x t 页
A ttrib u te s 页 显 示 类 型 库 的 一 般 信 息 如 图 4 .4 所 示
图 4 .4 类 型 库 的 A ttrib u te s 页
-
N
a me 类 型 库 的 文 件 名 中 间 不 要 有 空 格 和 标 点 符 号 扩 展 名是 . TLB
-
GU ID
类 型 库 的 全 局 识 别 号 ( 128 位 存 储 )
-
V
e rs io n 类 型 库 的 版 本 号 格 式 是 n .m 其 中 n 是 主 版 本 号 m 是 副 版
本 号
-
LC ID
类 型 库 中 字 符 串 的 语 言 ( 这 个 框 是 只 读 的 )
-
H e
lp S tr in g 输 入 类 型 库 的 简 短 描 述 ( 最 好 不 要 让 它 空 着 )
-
H e
lp F ile 指 定 类 型 库 的 帮 助 文 件
-
H e
lp C on te x t 指 定 类 型 库 的 主 题 在 帮 助 文 件 中 的 上 下 文 编 号
图 4 .5 引 用 其 它 类 型 库
U s e s 页 显 示 的 是 本 类 型 库 还 引 用 了 哪 些 其 它 类 型 库 如 图 4 .5 所 示
通 过 引 用 其 它 类 型 库 可 以 借 用 其 它 类 型 库 中 已 定 义 好 的 类 型 信 息 例 如S T D O LE3 2 . TLB 文 件 中 定 义 了 ID is p a tc h 接 口 在 您 的 类 型 库 中 只 要 引 用 一 下就 可 以 了 而 不 必 什 么 都 从 头 定 义
要 打 开 某 个 被 引 用 的 类 型 库 只 要 在 某 个 类 型 库 上 单 击 鼠 标 右 键 在 弹 出的 菜 单 中 选 择 V iew T y p e L ib rar y 命 令 C+ + Bu i ld e r 3 将 打 开 另 一 个 T y p e L ib ra r y 编 辑 器 显 示 该 类 型 库 的 信 息 如 果 在 弹 出 的 菜 单 中 选 择 S how A l l
T y p e L ib ra r ie s 命 令 将 显 示 所 有 已 注 册 的 类 型 库 要 引 用 其 中 一 个 类 型库 只 要 选 中 该 类 型 库 前 面 的 复 选 框 如 果 要 让 U s e s 页 只 显 示 正 在 引用 的 类 型 库 在 弹 出 的 菜 单 中 选 择 Sh o w Se le c te d 命 令
C+
- Bu ild e r 3 的 Ty p e L ib ra r y 编 辑 器 增 加 了 Te x t 页 用 于 显 示 类 型库 中 某 个 对 象 的 ID L 脚 本 如 图 4 .6 所 示
图 4 .6 显 示 ID L 脚 本
您 在 其 它 页 上 所 做 的 任 何 修 改 都 将 反 映 到 Te x t 页 上 您 也 可 以 在 Te x t
页 上 直 接 修 改 |
代 码 |
其 它 |
页 上 将 同 步 修 改 这 就 是 说 |
T y p e L ib ra ry |
编 |
---|---|---|---|---|---|
辑 器 是 双 向 的 义 的 标 识 符 |
工 具 |
不 过 |
您 得 对 ID L 的 文 法 非 常 熟 悉 |
并 且 只 能 使 用 已 |
定 |
F la g s 页 用 于 设 置 类 型 库 的 标 志 如 图 4 .7 所 示
图 4 .7 设 置 类 型 库 的 标 志
如 选 中 H idde n 复 选 框 表 示 类 型 信 息 虽 然 存 在 但 却 是 隐 藏 的 不 能显 示 出 来
如 选 中 R e s tr ic te d 复 选 框 表 示 不 允 许 宏 编 程 环 境 如 V isu a l B a sic 使 用 此类 型 库
如 选 中 C on tro l 复 选 框 表 示 类 型 库 描 述 的 是 一 个 控 件
- 5 接 口
要 在 类 型 库 中 加 入 一 个 接 口 先 选 择 最 顶 层 的 类 型 库 节 点 然 后 单 击 工 具栏 上 的 In te rfa c e 图 标 也 可 以 在 类 型 库 节 点 上 单 击 鼠 标 右 键 在 弹 出 的菜 单 中 选 择 N e w 再 选 择 In te rfa c e 新 加 入 的 接 口 的 名 称 默 认 是In te r face1 您 可 以 给 它 换 名
图 4 .8 类 型 库 接 口 的 属 性
下 面 我 们 还 是 以 B u tto nX C on tro l 的 IB u ttonX 节 点 ( 带 符 号 ) 为 例 介 绍 怎样 设 置 接 口 的 属 性 和 怎 样 向 接 口 中 加 入 成 员
A ttrib u te s 页 显 示 接 口 的 属 性 如 图 4 .8 所 示
-
N a m
e 接 口 的 名 称
-
GU ID
接 口 的 全 局 识 别 号 ( 128 位 存 储 )
-
V
e rs io n 接 口 的 版 本 号 格 式 是 n .m n 是 主 版 本 号 m 是 副 版 本号
-
P a
re n t In te rfa c e 祖 先 接 口 的 名 称
-
H e
lp S tr in g 关 于 该 接 口 的 简 短 描 述
-
H e
lp C on te x t 接 口 的 主 题 在 帮 助 中 的 上 下 文 编 号
F la g s 页 用 于 设 置 接 口 的 标 志 如 图 4 .9 所 示
图 4 .9 设 置 接 口 的 标 志
如 选 中 H idde n 复 选 框 表 示 接 口 虽 然 存 在 但 不 能 显 示 出 来
如 选 中 N one E x te ns ib le 复 选 框 表 示 ID is p a tc h 接 口 只 实 现 列 在 接 口 描 述表 中 的 特 性 和 方 法 不 能 作 为 其 它 接 口 的 祖 先 接 口
如 选 中 D u a l 复 选 框 表 示 接 口 是 一 个 双 重 接 口 同 时 支 持 ID is p a tc h 接 口和 虚 拟 方 法 表
如 选 中 O LE A u to m a t io n 复 选 框 表 示 接 口 只 能 使 用 与 OL E 自 动 化 相 容的 数 据 类 型
- 6 在 接 口 中 加 入 成 员
要 向 接 口 中 加 入 成 员 ( 指 特 性 或 方 法 ) 有 两 种 方 式 一 是 在 对 象 列 表 窗 格 中 选
择 一 个 接 口 然 后 单 击 工 具 栏 上 的 P rope r ty 或 M e thod 图 标 第 二 种方 式 是 直 接 在 Te x t 页 上 按 ID L 的 文 法 键 入 特 性 或 方 法 的 声 明 ( 参 见 图4 .10) 上 述 两 种 操 作 方 式 是 等 价 的 因 为 Ty p e L ib ra ry 编 辑 器 是 一 个 双向 的 工 具
图 4 .10 在 接 口 中 加 入 成 员
加 入 了 成 员 后 您 就 可 以 在 对 象 列 表 中 扩 展 接 口 节 点 选 择 其 中 一 个 特 性或 方 法 然 后 在 右 边 的 窗 格 中 显 示 并 编 辑 该 成 员 的 属 性 参 数 和 标 志
A ttrib u te 页 用 于 显 示 成 员 的 属 性 如 图 4 .11 所 示
图 4 .11 接 口 成 员 的 属 性
-
N a m
e 成 员 的 名 称
-
ID 成
员 的 分 配 号
-
Invoke
k ind 成 员 是 方 法 还 是 特 性
-
H e
lp S tr in g 关 于 该 特 性 或 方 法 的 简 短 描 述
-
H e
lp C on te x t 特 性 或 方 法 的 主 题 在 帮 助 文 件 中 的 上 下 文 编 号
P a ra m e te rs 页 用 于 设 置 函 数 的 参 数 和 返 回 值 如 图 4 .12 所 示
图 4 .12 设 置 函 数 的 参 数 和 返 回 值
单 击 A d d 按 钮 可 以 增 加 一 个 参 数 单 击 D e le te 按 钮 可 以 删 减 一 个 参数
N a m e 栏 用 于 指 定 参 数 名 称 T y p e 栏 用 于 指 定 参 数 的 数 据 类 型 要改 变 参 数 的 标 志 双 击 F la g s 栏 C+ + Bu ild e r 3 将 显 示 Pa ra m e te rs F la g s 对 话 框 如 图 4 .13 所 示
图 4 .13 设 置 参 数 的 标 志
F la g s 页 用 于 设 置 接 口 成 员 的 标 志 如 图 4 .14 所 示
图 4 .14 设 置 接 口 成 员 的 标 志
如 选 中 R e p lacea b le 复 选 框 表 示 支 持 IC onne c t ionP o in tW ith D e fa u lt
如 选 中 R e s tr ic te d 复 选 框 不 允 许 宏 编 程 环 境 如 V isu a l B a sic 使 用 该 特 性或 方 法
如 选 中 S ourc e 复 选 框 表 示 成 员 返 回 一 个 对 象 或 VAR IA NT 作 为 事 件 的源
如 选 中 B inda b le 复 选 框 表 示 特 性 支 持 数 据 装 订
如 选 中 R e que s t E d i t 复 选 框 表 示 特 性 支 持 O n R e que s t E d i t事 件如 选 中 D is p la y B inda b le 复 选 框 表 示 特 性 是 可 装 订 的
如 选 中 H idde n 复 选 框 表 示 特 性 虽 然 存 在 但 不 能 显 示 出 来
如 选 中 D e fa u lt C o l le c tion E le m e n t 复 选 框 允 许 在 V is u a l B a s ic 中 对 代 码优 化
如 选 中 N on B row sa b le 复 选 框 特 性 只 出 现 在 不 需 要 显 示 值 的 浏 览 器 中另 外 对 于 OL E 自 动 化 对 象 的 特 性 来 说 还 有 个 W r ite By R e fe re n c e 复选 框 如 选 中 此 复 选 框 表 示 特 性 通 过 指 针 而 不 是 值 来 传 递 这 样 可 以 改善 程 序 的 性 能
- 7 调 度 接 口
调 度 接 口 实 际 上 也 是 接 口 只 不 过 这 种 类 型 的 接 口 中 的 成 员 可 以 通 过ID is p a tc h 接 口 的 Invoke 函 数 调 用 调 度 接 口 中 的 成 员 通 常 是 事 件 句 柄 如O n C lic k O n K e y P re s s 等
下 面 我 们 还 是 以 B u tto nX C on tro l的 IB u ttonX E v e n ts 节 点 ( 带 符 号 ) 为 例 介绍 调 度 接 口 的 用 法 如 图 4 .15 所 示
图 4 .15 调 度 接 口 的 成 员
从 T y p e L ib r a ry 编 辑 器 的 角 度 看 调 度 接 口 与 一 般 的 接 口 在 用 法 上 没 有什 么 区 别 它 的 A ttrib u te s 页 P a ra m e te rs 页 F la g s 页 和 Te x t 页 请 参 见 上 一 节 唯 一 要 注 意 的 是 调 度 接 口 中 的 事 件 句 柄 不 能 有 返 回 值
- 8 类 型 库 枚 举
所 谓 类 型 库 枚 举 其 概 念 与 C+ + 中 的 枚 举 非 常 相 似 也 是 一 组 相 关 的 常 量 您 可 以 在 T y p e L ib ra ry 编 辑 器 中 把 枚 举 作 为 一 个 自 定 义 的 数 据 类 型 使 用要 在 类 型 库 中 加 入 一 个 枚 举 单 击 工 具 栏 上 的 E num 图 标 新 的 枚 举 刚开 始 的 时 候 是 空 的 您 必 须 自 己 声 明 枚 举 常 量 并 且 只 能 在 Te x t 页 上 直接 键 入 如 图 4 .16 所 示
图 4 .16 键 入 枚 举 常 量
可 以 看 出 枚 举 T x M ous e B u tto n 声 明 了 三 个 枚 举 常 量 分 别 是 m b L e f t m b R ight m b M idd le 其 值 分 别 是 0 1 2 请 注 意 声 明 的 格 式
A ttrib u te s 页 用 于 显 示 和 编 辑 类 型 库 枚 举 的 属 性 如 图 4 .17 所 示
图 4 .17 类 型 库 枚 举 的 属 性
-
N a m
e 类 型 库 枚 举 的 名 称
-
GU ID
类 型 库 枚 举 的 全 局 识 别 号 ( 128 位 存 储 )
-
H e
lp S tr in g 类 型 库 枚 举 的 简 短 描 述 ( 最 好 不 要 让 它 空 着 )
-
H e
lp C on te x t 类 型 库 枚 举 的 主 题 在 帮 助 文 件 中 的 上 下 文 编 号
-
V
e rs io n 类 型 库 枚 举 的 版 本 号 , 格 式 是 n .m , n 是 主 版 本 号 m 是 副版 本 号
- 9 组 件 类 (C oC la ss )
类 型 库 的 组 件 类 ( C om pone nt C la s s 简 称 Co C la s s ) 描 述 的 是 整 个 CO M 对 象它 统 一 管 理 CO M 对 象 的 接 口 和 调 度 接 口
要 在 类 型 库 中 加 入 一 个 组 件 类 单 击 工 具 栏 上 的 Co C la s s 图 标 新 加 入的 组 件 类 默 认 是 空 的 要 在 组 件 类 中 加 入 一 个 成 员 在 Im p le m e n ts 页 上单 击 鼠 标 右 键 在 弹 出 的 菜 单 中 选 择 In s e rt In te rfa c e 命 令 打 开 In s e rt In te rfa c e 对 话 框 这 个 对 话 框 列 出 了 类 型 库 中 所 有 已 定 义 的 接 口 也 包 括本 类 型 库 引 用 的 其 它 类 型 库 中 的 接 口 选 择 其 中 一 个 接 口 单 击 OK 按 钮
要 删 除 一 个 接 口 在 弹 出 的 菜 单 中 选 择 R e m ove In te r fa c e 命 令
在 对 象 列 表 中 选 择 一 个 组 件 类 右 边 的 窗 格 中 将 显 示 A ttrib u te s 页
Im p le m e n ts 页 F la g s 页 Te x t 其 中 F la g s 页 用 于 设 置组 件 类 的 标 志 如 图 4 .18 所 示
图 4 .18 设 置 组 件 类 的 标 志
如 选 中 H idde n 复 选 框 表 示 虽 然 接 口 存 在 但 隐 藏 显 示
如 选 中 C a n C re a te 复 选 框 表 示 可 以 由 Co C re a te In s ta n c e 创 建 实 例
如 选 中 A pp lic a t ion O b je c t 复 选 框 表 示 组 件 类 只 用 于 O u t- o f - P ro c e s s 类 型的 自 动 化 服 务 器
如 选 中 L ic e n s e d 复 选 框 ( 一 般 只 适 用 于 A c tiv e X 控 件 ) 表 示 在 设 计 期 或 运行 期 都 需 要 许 可 组 件 类 的 实 例 只 能 由 IC la s s F a c to ry 2 创 建
如 选 中 P red efin ed 复 选 框 表 示 客 户 程 序 应 当 自 动 创 建 OL E 对 象 的 单 个实 例
如 选 中 C on tro l 复 选 框 表 示 此 组 件 类 描 述 的 是 一 个 OL E 控 件如 选 中 A g g reg atab le 复 选 框 表 示 组 件 类 的 成 员 可 以 被 聚 合
如 选 中 R e p lacea b le 复 选 框 表 示 此 组 件 类 支 持 IC onne c tionP o in tW ith D e fa u lt
接 口
Im p le m e n ts 页 用 于 增 加 或 删 除 构 成 组 件 类 的 接 口 如 图 4 .19 所 示
图 4 .19 组 件 类 的 成 员
In te rfa c e 栏 是 组 件 类 要 实 现 的 接 口 名 称 GU ID 栏 是 接 口 的 全 局 识别 号 S ourc e 栏 为 T ru e 表 示 这 个 接 口 是 事 件 的 源 D e fa u l t 栏 为 T ru e 表 示 这 个 接 口 是 组 件 类 的 默 认 接 口 一 个 组 件 类 最 多 有 两 个 默 认 接 口 其中 一 个 是 源 接 口 另 一 个 是 槽 接 口 R e s tr icted 栏 为 T ru e 表 示 这 个 接 口不 能 被 宏 编 程 环 境 使 用 一 个 接 口 的 D e fa u l t 栏 和 R e s tr icted 栏 不 能同 时 为 T ru e VT a b le 栏 为 T ru e 表 示 支 持 虚 拟 方 法 表 调 用
- 1 0 把 类 型 库 引 入 到 当 前 项 目 中
您 可 以 使 用 P ro ject 菜 单 上 的 Im port T y pe L ibra r y 命 令 把 已 注 册 的 类型 库 ( 包 括 其 它 工 具 生 成 的 类 型 库 ) 引 入 到 当 前 项 目 中 并 且 自 动 生 成 相 应 的C+ + 源 文 件 也 就 是 说 Im port T y p e L ibra r y 命 令 能 够 把 二 进 制 的 类 型库 裹 上 一 层 C+ + 的 外 套
使 用 P ro ject 菜 单 上 的 Im port T y pe L ibra r y 命 令 将 打 开 Im p o r t T y p e L ib ra r y 对 话 框 如 图 4 .20 所 示
图 4 .20 引 入 类 型 库
这 个 对 话 框 列 出 了 所 有 已 注 册 的 类 型 库 以 及 每 个 类 型 库 所 在 的 路 径 和 文件 名 C la ss N a m e s 框 显 示 所 选 类 型 库 中 的 控 件 的 类 名
C+
- Bu ild e r 3 能 够 从 引 入 的 类 型 库 中 提 取 出 有 关 的 信 息 并 自 动 生 成 相 应 的C+ + 源 文 件 该 源 文 件 默 认 的 位 置 在 C :\ P rogra m F ile s \ B o r la nd \C B u ild e r 3 \ L IB 目 录 您 可 以 单 击 U n it D ir N a me 框 右 边 的 省 略 号 按 钮 重 新 指 定 一 个 位
置
要 注 册 新 的 类 型 库 单 击 A d d 按 钮 C+ + Bu ild e r 3 将 显 示 O p e n T y p e L ib ra r y 对 话 框 选 择 一 个 要 注 册 的 类 型 库 文 件 然 后 单 击 打 开 按 钮C+ + Bu ild e r 3 就 自 动 注 册 该 类 型 库 并 加 到 Im port T y p e L ibra ry 对 话 框中
如 果 您 在 O p en T y p e L ib rar y 对 话 框 中 选 择 的 类 型 库 已 注 册 C+ + Bu i ld e r 3
将 在 W ind ow s 的 注 册 表 中 重 复 注 册 所 选 的 类 型 库
要 从 注 册 表 中 撤 消 对 某 类 型 库 的 注 册 单 击 R e m ove 按 钮
11 刷 新 保 存 注 册 和 发 布 类 型 库
T y pe L ibra ry 编 辑 器 是 个 双 向 的 工 具 您 既 可 以 用 工 具 栏 上 的 按 钮 或 快捷 菜 单 进 行 操 作 也 可 以 按 ID L 文 法 直 接 键 入 有 关 信 息 这 两 种 操 作 方 式 是等 价 的 举 例 来 说 假 设 您 在 对 象 列 表 窗 格 中 选 择 了 一 个 节 点 叫 In te r face1 在 右 框 中 翻 到 Te x t 页 直 接 键 入 特 性 和 方 法 的 声 明 也 就 是 说 In te r face1 有 了 新 的 成 员 为 了 直 观 地 显 示 出 该 节 点 有 了 新 成 员 您 应 当 刷 新 类 型 库要 刷 新 类 型 库 单 击 工 具 栏 上 的 R e fre s h 按 钮 C+ + Bu ild e r 3 将 首 先 对
T y pe L ibra ry 编 辑 器 中 的 信 息 进 行 文 法 检 查 如 检 查 通 过 就 刷 新 对 象列 表 窗 格 中 的 树 状 结 构 并 在 内 存 中 刷 新 相 应 的 C+ + 源 文 件 但 不 存 盘
要 注 意 的 是 如 果 您 把 类 型 库 中 的 某 项 内 容 换 了 名 或 删 除 了 刷 新 类 型 库时 可 能 会 出 现 重 复 的 或 多 余 的 代 码 此 时 需 要 您 手 工 把 多 余 的 代 码 删 掉 要 保 存 类 型 库 信 息 使 用 F ile 菜 单 上 的 Sa v e 命 令 C+ + Bu ild e r 3 首
先 对 T y pe L ibra ry 编 辑 器 中 的 信 息 进 行 文 法 检 查 然 后 把 类 型 库 保 存 到一 个 扩 展 名 是 . TLB 的 文 件 中 同 时 还 把 类 型 库 中 的 接 口 数 据 类 型 以 及 类的 声 明 保 存 到 一 个 .C P P 文 件 中 您 不 要 直 接 修 改 这 个 .C P P 文 件 因 为 这 个文 件 是 由 T y p e L ib ra ry 编 辑 器 自 动 维 护 的 即 使 您 修 改 了 这 个 文 件 当您 保 存 或 刷 新 类 型 库 信 息 时 您 的 修 改 将 作 废
要 注 册 类 型 库 信 息 单 击 工 具 栏 上 的 R ig is te r 按 钮 C+ + Bu ild e r 3 首 先对 T y p e L ib r a ry 编 辑 器 中 的 信 息 进 行 文 法 检 查 然 后 更 新 W ind ow s 的 注册 表
当 您 用 C+ + Bu ild e r 3 提 供 的 向 导 创 建 一 个 A c tiv e X 控 件 时 向 导 将 自 动 创 建一 个 类 型 库 编 译 器 将 把 类 型 库 作 为 资 源 连 接 到 A c tiv e X 控 件 的 .O C X 文 件中
要 发 布 类 型 库 可 以 有 两 种 形 式 一 是 作 为 单 独 的 资 源 文 件 发 布 扩 展 名是 . TLB 这 是 个 二 进 制 文 件 还 有 一 种 方 式 就 是 随 .O C X 文 件 发 布 要 把 类型 库 加 到 .O C X 中 您 得 事 先 建 立 一 个 .R C 文 件 把 类 型 库 列 出 来 形 式 如下
-
TY P EL IB M y L ib 1 . tlb
-
TY P EL IB M y L ib 2 . tlb
然 后 用 资 源 编 译 器 编 译 这 个 .R C 文 件 一 个 .O C X 中 可 以 有 多 个 类 型 库