| 如何创建Windows 95应用程序的帮助系统 尹 章 儒 对 于 一 个 成 熟 的 应 用 程 序 系 统 来 说, 方 便 详 尽 的 帮 助 系 统 是 必 不 可 少 的。 特 别 是 当 今 流 行 的Windows 95 环 境 下 的 图 形 样 式 帮 助 系 统 中 可 以 包 含 图 形、 经 过 格 式 化 编 排 的 文 本、 声 音 和 动 画 等, 为 应 用 程 序 增 色 不 少( 如 图 一 所 示)。
在Windows 95 环 境 下, 利 用Visual Foxpro 提 供 的Microsoft Help
Workshop 工 具, 可 以 创 建 功 能 较 为 完 善 的 应 用 程 序 帮 助
系 统。 创 建Windows 95 下 的 帮 助 系 统 时 首 先 应 该 明 确 以 下
几 个 概 念 : (1) 帮 助 主 题 : 帮 助 主 题 是 指 帮 助 窗 口 中 的 信
息, 它 通 常 是 以 标 题 开 始 且 包 含 某 一 特 定 任 务、 命 令
或 对 话 框 的 信 息。Help 由 一 个 个“ 主 题” 串 接 而 成, 每
个 主 题 可 由 标 题、 主 题 标 识 字 符 串、 浏 览 顺 序 号 来 识
别。 (2) 标 题 : 标 题 可 由 带 空 格 的 多 个 单 词 组 成,
具 有 描 述 性 的 文 字, 通 常 以“ 主 题” 中 的 首 行 作 为 标
题。 不 同 的 主 题 应 有 不 同 的 标 题, 如 果 出 现 多 个 主 题
共 同 拥 有 一 个 标 题, 系 统 将 会 发 出 警 告。 (3) 主 题 标 识 字 符 串 : 主 题 标 识 字 符 串 是 唯 一
用 来 确 定 主 题 的 字 符 串, 它 只 能 由 字 母、 数 字 或 下 划
线 组 成。 (4) 关 键 词 : 在 生 成 的Help 文 件 中 可 以 根 据 关 键
词 来 搜 索 并 转 到 相 应 的 主 题 上。 (5) 浏 览 顺 序 号 : 浏 览 顺 序 号 用 在 制 作 上 下 文
敏 感 的Help 文 件 中, 它 与 主 题 标 识 字 符 串 一 样 不 能 重
复。 创 建 帮 助 系 统 的 步 骤 如 下 : (1) 编 辑 帮 助 主 题 文 件( 扩 展 名 为.RTF)。 内 有 具
体 帮 助 信 息 以 及 所 需 的 各 种 编 码, 可 由 一 个 或 多 个 文
件 组 成。 (2) 编 辑 帮 助 项 目 文 件( 扩 展 名 名 为.HPJ)。 内 有 对
主 题 文 件 进 行 编 译 所 需 的 信 息。 (3) 编 辑 帮 助 目 录 文 件( 扩 展 名 为.CNT)。 内 有 帮 助
的 目 录 框 架 信 息。 (4) 编 译 生 成 帮 助 文 件( 扩 展 名 为.HLP)。 内 有 系 统
所 需 的 各 种 帮 助 信 息。 (5) 在 应 用 程 序( 如VB、VFP 或 其 他 高 级 程 序 设 计 语
言) 中 编 写 代 码 调 用 帮 助 系 统(WinHelp), 提 供 帮 助 信 息。 一、 编 辑 帮 助 主 题 文 件 1、 建 立RTF 格 式 文 件 2、 设 置 脚 注 表1 常 见 脚 注 含 义 及 其 说 明 3、 设 置 热 点, 建 立 主 题 之 间 的 连 接 帮 助 主 题 中 另 外 的 重 要 的 编 码 是 为 文 本 指 定“
热 点”, 即 用 鼠 标 单 击“ 热 点” 可 跳 转 到 相 应 主 题 或
弹 出 说 明 窗 口, 对“ 热 点” 处 的 文 本 加 以 帮 助。 前 者
称 为“ 跳 转(Jump) 热 点”, 表 现 为 绿 色 单 下 划 线 形 式 ; 后
者 称 为“ 弹 出(Popup) 热 点”, 表 现 为 绿 色 单 下 点 划 线 形
式。 指 定 跳 转 热 点 : 跳 转 热 点 在 帮 助 主 题 文 件 中 是
带 双 下 划 线 的 文 本。 首 先 选 择 字 符 的 双 下 划 线 格 式,
键 入 跳 转 热 点 文 本, 清 除 双 下 划 线 格 式, 选 择 隐 藏 文
本 格 式, 键 入 跳 转 目 的 地 处 的 主 题 标 识 字 符 串。 清 除
隐 藏 文 本 格 式 后 再 键 入 其 他 正 文。 注 意, 在 隐 藏 文 本
后 换 行 时, 一 定 要 先 清 除 隐 藏 文 本 格 式, 然 后 再 按 回
车 键。 指 定 弹 出 热 点 : 弹 出 热 点 在 帮 助 主 题 文 件 中 是
单 下 划 线 的 文 本。 首 先 选 择 字 符 的 单 下 划 线 格 式, 键
入 弹 出 热 点 文 本, 清 除 单 下 划 线 格 式, 选 择 隐 藏 文 本
格 式, 键 入 在 弹 出 的 附 加 说 明 的 主 题 的 主 题 标 识 字 符
串。 清 除 隐 藏 文 本 格 式 后 再 键 入 其 他 正 文。 同 样, 在
隐 藏 文 本 后 换 行 时, 一 定 要 先 清 除 隐 藏 文 本 格 式, 然
后 再 按 回 车 键。 以 上 两 种 热 点 文 本 均 可 带 有 格 式, 如 字 体、 字
号 和 不 同 的 风 格( 黑 体 或 斜 体) 在 隐 藏 文 本 和 带 下 划
线( 单 或 双) 文 本 间 不 能 有 空 格。 隐 藏 文 本 在 显 示 出
来 时( 选 择Word 工 具 栏 上 的“ 隐 藏/ 显 示” 按 钮 高 亮 时,
隐 藏 文 本 可 显 示 出 来) 为 带 点 划 线 的 正 文。 除 文 本 可 作 为 热 点 外, 图 形 也 可 具 有 以 上 两 种
热 点, 图 形 中 的 热 点 要 使 用 专 用 的 工 具 软 件-- 热 点 编
辑 器(Hot Spot Editor) 才 能 指 定。 4、 建 立 不 可 滚 动 的 标 题 区 域 在Windows 的 帮 助 窗 口 中, 经 常 可 以 见 到 窗 口 上 部
的 标 题 区 域( 有 时 还 会 有 图 形) 是 不 可 滚 动 的, 这 在
显 示 一 个 较 长 的 主 题 时, 使 用 户 总 能 看 到 本 主 题 的 题
目。 用Word 创 建 主 题 文 件 时, 通 过 以 下 方 法 很 容 易 实
现。 5、 使 用 图 形 和 图 像 一, 就 在 主 题 文 件 中 加 入 了 一 个 位 图 索 引 : 二、 创 建 帮 助 项 目 文 件 Help 帮 助 项 目 文 件( 扩 展 名 为.HPJ), 包 含Microsoft Help 编
译 器 把 主 题 文 件 和 其 他 元 素 合 成 帮 助 文 件 所 需 的 全
部 信 息, 项 目 文 件 是 一 个 纯 文 本 文 件, 可 用 任 何 文 本
编 辑 器 来 建 立, 也 可 用 其 他 工 具 建 立。 每 一 个 项 目 文
件 由 一 节 或 多 节 组 成。 每 一 节 有 一 个 节 名, 用 方 括 号([
]) 括 起 来, 定 义 这 一 节 中 的 语 句 和 选 项 的 目 的 和 格
式。 [OPTIONS] 指 定 控 制 创 建 过 程 的 选 项。 此 节 是 可 选
的, 若 选 用 必 须 在 第 一 节。 [FILES] 指 定 帮 助 的 主 题 文 件, 扩 展 名 为RTF。 这 一 节
是 必 须 的, 可 以 有 一 个 或 多 个 主 题 文 件。 [MAP] 把 上 下 文 串 与 上 下 文 号 相 连 接, 成 为 上 下 文
关 联 的 帮 助。 [CONFIGS] 指 定 在 创 建 帮 助 文 件 中 使 用 的 宏。 这 些 宏
由 帮 助 系 统 调 用 或 用 于 创 建 非 标 准 的 帮 助 菜 单 和 按
钮。 如 用 于 前 后 翻 页 的》《 按 钮, 就 是 由 此 字 段 指 定
的 宏 创 建 的。 [BITMAPS] 指 定 主 题 文 件 中 引 用 的 点 位 图 的 文 件 名,
包 括 路 径。 [WINDOWS] 定 义 帮 助 系 统 使 用 的 主 窗 口 及 次 窗 口 的
标 题、 位 置、 大 小 和 使 用 的 颜 色。 在 帮 助 主 题 文 件
中, 若 设 计 为 跳 转 主 题 使 用 次 级 窗 口, 则 应 包 括 此
段。 图 二 建 立 帮 助 项 目 文 件 三、 创 建 目 录 文 件
图 三 创 建 目 录 文 件
帮 助 编 译 器 有 几 个 版 本, 功 能 也 不 尽 相 同。 这
里 利 用Microsoft Help Workshop 下 的HCW 进 行 编 译, 在Microsoft Help
Workshop 下 选 择 菜 单File/Compile , 即 可 进 行 编 译, 编 译 过 程
中 出 现 错 误 时, 系 统 会 提 示 出 错 信 息, 以 便 进 行 修
改, 直 到 正 确 无 误 码 为 止。 编 译 时, 系 统 会 提 示 帮 助
系 统 的 有 关 信 息, 若 无 致 命 的 错 误, 将 编 译 生 成 一 个
扩 展 名 为HLP 的 帮 助 文 件, 这 也 是Windows 的 帮 助 系 统 可 以
调 用 的 二 进 制 文 件, 可 用File/Run Winhelp 即 可 欣 赏 到 帮
助。 五、 在 应 用 程 序 中 编 写 代 码 调 用 帮 助 系 统(WinHelp),
提 供 帮 助 信 息 (1) 帮 助 菜 单 - 显 示 在 应 用 程 序 主 菜 单 栏 上 的
一 个 菜 单。 (2) 上 下 文 相 关 帮 助 - 当 选 定 某 个 对 象、 控 件 或
菜 单 选 项 并 按F1 键 时 显 示 的 帮 助。 (3)“ 这 是 什 么” 帮 助 - 当 用 户 寻 求 关 于 特 定 对
象 或 控 件 的 帮 助 时 出 现 的 简 单 弹 出 式 提 示。 下 面 以VFP 为 例, 分 别 说 明 如 何 在 应 用 程 序 中 编
写 代 码 调 用 帮 助 系 统。 1、 帮 助 菜 单 2、 上 下 文 相 关 性 一 般 地, 通 过 按F1 键 可 以 访 问“ 上 下 文 相 关 帮
助”, 可 以 使 用ON KEY LABEL 指 定 任 意 键 来 激 活“ 上 下 文 相
关 帮 助”。 (1) 为 应 用 程 序 指 定 一 个 帮 助 文 件。 (2) 为 希 望 提 供“ 上 下 文 相 关 帮 助” 的 对 象 指
定 一 个 帮 助 主 题。 1) 在“ 设 计” 状 态 下 打 开 想 为 之 指 定“ 上 下 文
相 关 帮 助” 的 对 象, 例 如 一 个 表 单、 控 件 或 工 具 栏。 要 把“ 这 是 什 么 ?” 帮 助 与 特 定 表 单、 表 单 控 件
或 工 具 栏 关 联 起 来, 把 它 们 的hatsThisHelpID 属 性 设 置 为 代
表 帮 助 特 定 主 题 的 编 码。 WhatsThisHelp 设 置 表 单 的 该 属 性 为 真, 可
以 启 用 表 单 以 及 表 单 上 任 意 控 件 的“ 这 是 什 么 ?” 帮
助。 WhatsThisButton 如 果 希 望 表 单 的 标 题 栏 显
示 一 个“ 这 是 什 么 ?” 按 钮, 设 置 属 性 为 真。 WhatsThisHelpID 对 一 个 表 单、 控 件 或 工 具
栏, 把 该 属 性 设 置 为 对 应 于 帮 助 中 某 个 主 题 的 ID 编
码。 WhatsThisMode 使 用 这 个 方 法 程 序 可 以 显 示“ 这 是 什 么 ?” 帮 助 问 号 鼠 标 指 针 并 启 动“ 这 是 什 么” 帮 助 模 式。 单 击 一 个 对 象 将 显 示 该 对 象 WhatsThisHelpID 属 性 指 定 的 帮 助 主 题。 1) 在 设 计 模 式 下 打 开 想 启 用“ 这 是 什 么 ?” 帮
助 的 表 单。 2) 把 表 单 的 WhatsThisHelp 属 性 设 置 为“ 真”(.T.)。 3) 要 在 表 单 标 题 中 显 示 一 个“ 这 是 什 么” 帮 助
按 钮, 把 表 单 的 WhatsThisButton 属 性 设 置 为“ 真(.T.)”。 4) 要 把 一 个“ 这 是 什 么” 帮 助 主 题 与 该 表 单 关
联 起 来, 把 表 单 的 WhatsThisHelpID 属 性 设 置 为 与 帮 助 中 主 题
相 对 应 的 ID 编 码。 5) 要 把 一 个“ 这 是 什 么” 帮 助 主 题 与 表 单 上 特
定 控 件 关 联 在 一 起, 选 择 控 件 然 后 把 它 的 WhatsThisHelpID 属
性 设 置 为 与 帮 助 中 主 题 相 对 应 的 ID 编 码。 4、 使 用 WinHelp 函 数 (1) 定 义 您 的 应 用 程 序 将 要 传 递 的
命 令 参 数。 (2) 用 SET LIBRARY TO 设 置 库 并 定 义 要 使 用
的 变 量, 这 个 工 作 一 般 在 应 用 程 序 主 文 件 的 初 始 化 代
码 中 完 成。 如 果 希 望 传 送 K 关 键 字 来 打 开 一 个 帮 助 主 题, 用
RegFn( ) 定 义 一 个 变 量, 象 上 一 示 例 中 的 Help 变 量。 如 果
希 望 打 开 映 射 到 一 个 编 码 的 帮 助 主 题, 用 RegFn 定 义 一
个 象 上 面 示 例 Help 一 样 的 变 量, 用 一 个 编 码 代 替 dwData 中
的 字 符 串。 如 果 传 递 编 码, 必 须 在 .HPJ 文 件 的 [MAP] 节 中
把 它 们 与 唯 一 的 用 编 码 标 记 (#) 注 脚 定 义 的 上 下 文 字
符 串 映 射 起 来。 (3) 使 用 CallFn( ) 调 用 函 数 有 关 FoxTools 函 数 的 更 详 细 内 容, 请 参 阅 VFP\TOOLS 目
录 下 的 FOXTOOLS.HLP 文 件。 指 定 WinHelp 参 数。 下 列 参 数 指 定 了 WinHelp 函 数 的 选
项。 hWnd 参 数 hWnd 参 数 标 识 请 求 帮 助 的 窗 口。 帮 助 使 用 这 个 标
识 符 跟 踪 哪 一 个 应 用 程 序 请 求 过 帮 助。 在 Visual FoxPro
中,1 使 用 包 含 在 FOXTOOLS.FLL 库 中 的 MainHWND( ) 函 数 传 递 hWnd 参
数。 lpzFileName 参 数 lpzFileName 参 数 是 一 个 字 段 串, 指 定 包 含 所 需 主 题
的 帮 助 的 有 效 路 径 及 文 件 名 称。 它 是 以 值 传 递 方 式 传
递 的。 wCmd 参 数 wCmd 参 数 或 者 指 定 用 户 对 特 定 主 题 定 位 的 查 找 类
型 或 者 指 明 应 用 程 序 不 再 需 要 帮 助。 它 可 以 设 置 为 表3
中 的 任 一 值。 表3 wCmd 参 数 的 设 置 及 其 含 义 常 量 值 意 义 HELP_FINDER 0x000B 显 示 “ 帮 助 查
找 器” 窗 口。 HELP_QUIT 0x0002 通 知 帮 助 应
用 程 序 已 不 再 需 要 帮 助,Windows 将 关 闭 帮 助 应 用 程 序。 HELP_SETINDEX 0x0005 把 特 定 主 题 设 置 为 索 引
主 题。 dwData 参 数 dwData 参 数 代 表 应 用 程 序 需 要 查 找 的 主 题。 它 的
内 容 和 格 式 取 决 于 应 用 程 序 调 用 WinHelp 函 数 时 所 传 递
的 wCmd 值。 在 大 多 数 调 用 帮 助 时 按 值 传 递 方 式 传 递 dwData 参
数, 这 是 Visual FoxPro 的 默 认 设 置。 根 据 环 境 设 置, 上 一 行 中 的 dwData 或 者 代 表 一 个
文 本 字 符 串, 指 示 要 查 找 的 关 键 字, 或 者 是 一 个 数
值, 指 示 标 识 一 个 特 定 主 题 的 上 下 文 编 码。 表4 中 列 出 了 wCmd 每 个 值 所 对 应 dwData 的 格 式。 表4 wCmd 各 值 及 其 所 对 应 的 dwData 格 式。 HELP_CONTEXT 包 含 主 题 上 下 文 编 码 的 数
值。 HELP_CONTEXT 使 用 -1 可 以 代 替 使 用 HELP_INDEX 。 因 为 WinHelp 可 以 指 定 一 个 上 下 文 编 码 或 关 键 字,
所 它 可 以 支 持“ 上 下 文 相 关 帮 助” 及 对 帮 助 中 主 题 的
查 找。 说 明 : 如 果 帮 助 包 含 两 个 以 上 的 索 引, 应 用 程
序 必 须 指 定 其 中 一 个 为 默 认 索 引。 要 确 保 设 置 的 是 正
确 的 索 引, 应 用 程 序 在 调 用 帮 助 时, 应 该 把 wCmd 设 置 为
HELP-SETINDEX( 其 中 dwData 指 定 相 应 的 上 下 文 标 识)。 对 帮 助
的 每 次 调 用 都 要 后 接 HELP_CONTEXT 的 命 令 设 置。 千 万 不 要
把 HELP_SETINDEX 与 HELP_INDEX 一 起 使 用。 (5) 保 留 F1 键 的 功 能。 当 用 户 在 应 用 程 序 中 按 F1 键 时,Visual FoxPro 会 显 示
一 个“ 上 下 文 相 关 帮 助” 主 题。 为 了 做 到 这 一 点, 可
在 帮 助 表 中 为 需 要“ 上 下 文 相 关 帮 助” 的 主 题 指 定 一
个 帮 助 相 关 ID, 并 把 此 值 赋 给 表 单 或 控 件 的 HelpContextID
属 性。 当 表 单 或 控 件 获 得 焦 点 并 且 用 户 按 F1 键 时,Visual
FoxPro 就 会 显 示 该 主 题。 (6〕 在 表 单 中 包 含“ 帮 助” 按 钮。 如 果 在 您 的 表 单 中 添 加“ 帮 助” 按 钮, 用 户 可 以
更 方 便 地 访 问 帮 助 信 息。 如 果 您 的 用 户 是 个 新 手, 那
么 更 应 该 考 虑 添 加 一 个“ 帮 助” 按 钮。 1) 在 表 单 的 Init 事 件 中, 将 表 单 中 所 有 对 象 的
HelpContextID 属 性 都 设 置 为 该 帮 助 主 题 的 ID 值。 例 如, 如 果
该 值 为 7, 可 用 如 下 命 令 : 2) 在 表 单 中 添 加 一 个 命 令 按 钮。 3) 把 命 令 按 钮 的 Caption 属 性 设 置 为“ 帮 助”。 4) 在 命 令 按 钮 的 Click 事 件 中, 添 加 下 面 的 命 令
:HELP ID THIS.HelpContextID 为 了 方 便, 可 把“ 帮 助” 按 钮 保 存 为 一 个 类, 这
样 就 可 以 方 便 地 把 它 添 加 到 任 何 表 单 中。 (7) 退 出 图 形 样 式 帮 助。 帮 助 应 用 程 序 是 所 有 Windows 应 用 程 序 共 享 的 资
源。 因 为 它 也 是 一 个 独 立 的 应 用 程 序, 所 以 用 户 可 以
象 其 他 应 用 程 序 一 样 执 行 它。 这 样 您 的 应 用 程 序 对 帮
助 应 用 程 序 只 有 有 限 的 控 制 能 力。 如 果 应 用 程 序 在 执 行 过 程 的 某 个 位 置 要 调 用 帮
助, 那 么 在 终 止 应 用 程 序 前, 必 须 把 wCmd 参 数 设 置 为
HELP_QUIT 来 调 用 帮 助。 如 果 一 个 应 用 程 序 打 开 了 一 个 以 上 的 帮 助, 它
必 须 为 每 一 个 帮 助 文 件 调 用 WinHelp 函 数 退 出 其 帮 助 应
用 程 序。 如 果 一 个 应 用 程 序 或 动 态 链 接 库 (DLL) 已 经 打
开 了 一 个 帮 助 但 不 希 望 帮 助 应 用 程 序 的 相 关 实 例 保
持 活 动, 那 么 这 个 应 用 程 序 或 DLL 应 该 把 wCmd 参 数 设 置
为 HELP_QUIT 来 调 用 帮 助, 这 样 可 以 退 出 帮 助 应 用 程 序 的
那 个 实 例。 说 明 : 在 终 止 之 前, 一 个 应 用 程 序 或 DLL 总 是 应
该 对 任 何 一 个 打 开 的 帮 助 调 用 帮 助。 使 用 帮 助 名 任 何
一 次 调 用 帮 助 都 会 打 开 相 应 的 帮 助。 以 上 介 绍 的 是 制 作Windows 95 帮 助 系 统 的 基 本 方 法。
事 实 上, 随 着 当 今“ 所 见 即 所 得” 设 计 思 想 的 广 泛 应
用, 出 现 许 多 专 门 用 于 制 作 帮 助 系 统 的 工 具 软 件, 如Software
Interface 的Help Magician ;Blue Skies Software 的Robohelp95 ;Wextech System 的Doc_to_Help2.0
以 及Fore Front 的ForeHelp2.0 等 等。 它 们 最 大 的 特 点 是 可 视 化、
所 见 即 所 得、 集 成 处 理 等。 操 作 界 面 类 似 于WORD, 一 般
加 入 了 自 已 的 工 具 条、 菜 单 项, 实 现 可 视 化 设 计, 可
以 轻 松 地 创 建 跳 转 热 点、 弹 出 热 点、 图 形 热 点 等 等,
而 且 还 可 以 将 帮 助 文 件 打 印 成 册。 |