如何制作和使用帮助文件

类别:VC语言 点击:0 评论:0 推荐:
如何制作和使用帮助文件 
整理编辑:China ASP

    带 有 帮 助 文 件 的 应 用 程 序 无 论 对 程 序 员 还 是 用 户 都 是 不 同 凡 响 的, 它 能 节 省 印 刷 大 量 用 户 手 册 的 开 支, 对 程 序 员 编 辑 修 改 和 用 户 手 册 的 复 制 保 存 都 极 为 方 便。 帮 助 文 件 的 另 一 个 很 有 前 景 的 应 用 是 单 独 作 为 带 有 图 文 信 息 的 电 子 图 书 发 布。

    在 此 对 帮 助 文 件 的 编 制 及 如 何 在 程 序 中 编 程 调 用 作 一 详 尽 介 绍。 首 先 介 绍 第 一 部 分, 帮 助 文 件 的 编 写。

    帮 助 文 件 的 编 写 步 骤:
    1.编 写 存 有 所 有 帮 助 信 息 的 帮 助 源 文 件RTF 文 件。
    2.写 帮 助 项 目 文 件HPJ 文 件。
    3.对HPJ 文 件 编 译, 最 后 生 成HLP 文 件
    4.用WORD书写的帮助文件(2k)

    帮助文件在程序中的应用:
    1.在VB中增加帮助文件
    2.在Delphi中在增加帮助文件
    3.在VFP中增加帮助文件

帮助源文件RTF文件的编写
  帮 助 源 文 件 是 存 有 所 有 帮 助 信 息 的, 这 是 一 种RTF(Rich Text Format) 文 件, 帮 助 文 件 象 一 本 书, 由 目 录 及 一 个 个 章 节 组 成, 各 章 节 之 间 的 跳 转 是 由 定 义 的 热 点 来 完 成。 现 在 举 一 具 体 例 子( 由 目 录 等 五 条 信 息 组 成) 详 细 说 明。

    原 始 信 息 由 五 个 章 节 组 成: 目 录、 概 述、 说 明、 程 序、 安 装。象 前 面 每 一 节 的 标 题(“ 目 录”,“ 概 述”, “ 说 明”,“ 程 序”, “ 安 装”) 在RTF 文 件 中 必 须 以 特 有 的 脚 注( 即$) 明 确 指 定。 对 每 一 节 还 须 指 定 其 跳 转 名( 脚 注 是# , 跳 转 名 不 能 是 汉 字), 以 便 标 识, 在 这 我 们 给 每 一 节 分 别 取 名 为:contents , description, explanation ,programming, setup, 对 每 一 节 还 可 指 定 其 搜 索 关 键 字( 脚 注 是K), 关 键 字 可 以 是 一 个 或 多 个, 汉 字 和 英 文 均 可。

    具 体 操 作 如 下: 进 入Microsoft Word 中 文 版, 选 择: 文 件/ 新 建, 先 输 入 第 一 节 的 内 容: 输 入 第 一 节 的 标 题:“ 目 录”, 将 光 标 移 到“ 目 录” 的 前 面, 选 择 系 统 菜 单 的“ 插 入”, 选 “ 脚 注 和 尾 注”, 选“ 脚 注” 和“ 自 定 义 标 记”, 输 入:$ 符 号, 这 时 文 档 下 方 出 现 脚 注 编 辑 窗 口, 光 标 也 自 动 落 在 文 档 下 方 的 脚 注 编 辑 窗 口 中, 在 光 标 处 接 着 输 入 这 一 节 的 标 题:“ 目 录”, 有 时 看 不 到 文 档 下 方 的 脚 注 窗 口, 这 只 要 将 系 统 菜 单 中“ 视 图” 的“ 脚 注” 选 上。

    下 面 定 义 这 一 节 的 跳 转 名, 将 光 标 移 到“ 目 录” 的 前 面, 选 择 系 统 菜 单 的“ 插 入”, 选 “ 脚 注 和 尾 注”, 选“ 脚 注” 和“ 自 定 义 标 记”, 输 入:# 符 号, 这 时 文 档 下 方 出 现 脚 注 编 辑 窗 口, 光 标 也 自 动 落 在 文 档 下 方 的 脚 注 编 辑 窗 口 中, 在 光 标 处 接 着 输 入 这 一 节 的 跳 转 名:“contents”( 有 时 看 不 到 文 档 下 方 的 脚 注 窗 口, 这 只 要 将 系 统 菜 单 中“ 视 图” 的“ 脚 注” 选 上) 定 义 这 一 节 的 搜 索 关 健 字。 将 光 标 移 到“ 目 录” 的 前 面, 选 择 系 统 菜 单 的“ 插 入”, 选 “ 脚 注 和 尾 注”, 选“ 脚 注” 和“ 自 定 义 标 记”, 输 入:k 符 号, 这 时 文 档 下 方 出 现 脚 注 编 辑 窗 口, 光 标 也 自 动 落 在 文 档 下 方 的 脚 注 编 辑 窗 口 中, 在 光 标 处 接 着 输 入 这 一 节 的 搜 索 关 健 字, 搜 索 关 健 字 可 以 是 中 文 或 英 文, 一 个 或 多 个, 中 间 用 分 号( 即 ;) 隔 开, 这 儿 我 们 输 入: 目 录; 目 次;contents。

    最 后 定 义 这 一 节 的 顺 序 号。 顺 序 号 相 当 于 一 本 书 中 各 章 节 的 页 码。 将 光 标 移 到“ 目 录” 的 前 面, 选 择 系 统 菜 单 的“ 插 入”, 选 “ 脚 注 和 尾 注”, 选“ 脚 注” 和“ 自 定 义 标 记”, 输 入:+ 符 号, 这 时 文 档 下 方 出 现 脚 注 编 辑 窗 口, 光 标 也 自 动 落 在 文 档 下 方 的 脚 注 编 辑 窗 口 中, 在 光 标 处 接 着 输 入 这 一 节 顺 序 号, 如:0001,0002,0003 等。 这 儿 我 们 输 入:0001.

    这 样, 第 一 节 的 脚 注 标 记 全 部 作 完。
  第 二 节 的 脚 注 标 记 作 法 一 样。( 第 一 节 和 第 二 节 要 有 分 页 符, 选 择 系 统 菜 单 的“ 插 入”, 选 “ 分 隔 符”,“ 分 页 符”)。

    在 帮 助 文 件 中, 当 用 户 在 按 了 绿 色 的 跳 转 文 本, 就 应 该 跳 转 到 对 应 的 章 节, 如 何 定 义 一 个 热 点 跳 转 呢 ? 因 为 我 们 已 经 定 义 了 第 一 节 的 跳 转 名, 只 要 将 跳 转 文 本 与 要 跳 转 到 的 那 一 节 的 跳 转 名 联 系 起 来, 跳 转 文 本 在RTF 文 件 中 是 带 双 下 划 线 的 文 本, 以 上 例 操 作 如 下:

    选 择 系 统 菜 单 上 的“ 格 式”/“ 字 体”, 选 择“ 字 体”/“ 下 划 线”, 选“ 双 线”, 然 后 开 始 输 入 热 点 文 本, 这 儿 我 们 输 入“ 概 述”, 输 入 完 热 点 文 本, 清 除 双 下 划 线 格 式, 操 作: 选 择 系 统 菜 单 上 的“ 格 式”/“ 字 体”, 选 择“ 字 体”/“ 下 划 线”, 选“ 无”, 清 除 双 下 划 线 格 式 后, 紧 接 着 选 择 隐 藏 文 本 格 式, 输 入 跳 转 目 的 地 的 跳 转 名, 操 作: 选 择 系 统 菜 单 上 的“ 格 式”/“ 字 体”, 选 择“ 字 体”/“ 效 果”, 选“ 隐 藏”, 输 入 跳 转 目 的 地 的 跳 转 名, 这 儿 输 入“description”, 输 入 完 清 除 隐 藏 文 本 格 式。 清 除 隐 藏 文 本 格 式 的 操 作: 选 择 系 统 菜 单 上 的“ 格 式”/“ 字 体”, 选 择“ 字 体”/“ 效 果”, 将“ 隐 藏” 复 选 框 除 去。

    如 何 定 义 热 点 弹 出 说 明。 它 与 以 上 热 点 跳 转 文 本 一 样, 只 不 过 它 是 带 单 下 划 线 的 文 本。 操 作 如 下: 选 择 字 符 的 单 下 划 线 格 式, 输 入 弹 出 式 热 点 文 本, 如 上 例 输 入 的 是“ 单 下 划 线 的 指 定 说 明 热 点”, 操 作 如 下: 选 择 系 统 菜 单 上 的“ 格 式”/“ 字 体”, 选 择“ 字 体”/“ 下 划 线”, 选“ 单 线”, 然 后 开 始 输 入 热 点 文 本, 这 儿 我 们 输 入“ 单 下 划 线 的 指 定 说 明 热 点”, 输 入 完 热 点 文 本, 清 除 单 下 划 线 格 式, 紧 接 着 选 择 隐 藏 文 本 格 式, 输 入 跳 转 目 的 地 的 跳 转 名, 这 儿 是 弹 出 窗 口 的 跳 转 名: 这 儿 输 入“my_pop_up”, 输 入 完 清 除 隐 藏 文 本 格 式。 弹 出 窗 口 一 节 要 与 其 它 章 节 用 分 页 符 分 开。 只 要 指 定 跳 转 名 即 可。

    我 们 经 常 看 到 的“ 参 阅”、“see also” 弹 出 窗 口 就 是 这 样 作 出 来 的。

    如 何 对 图 形 指 定 热 点 跳 转。 在RTF 文 件 中 使 用 图 形, 可 以 用 语 句:{bmc 图 形 文 件 名},bmc 表 示 图 形 放 在 中 间,bml 表 示 图 形 放 在 左 边,bmr 表 示 图 形 放 在 右 边, 图 形 文 件 可 以 是 一 般 的BMP 位 图 和SHG 热 点 跳 转 图 形 文 件。

    如 用 户 在 图 形 某 处 按 动 时, 会 弹 出 一 个 说 明 窗 口。 而 热 点 图 形.shg 文 件 由.bmp 位 图 文 件 通 过 工 具 软 件Hotspot Editor 编 辑 而 来。Hotspot Editor 是 随Visual Basic ( 在VB 的HC 目 录 下) 和Visual Foxpro( 在VFP 的HELPCOMP 目 录 下) 发 布 的。 执 行 文 件 名 是SHED.EXE。 操 作: 运 行SHED.EXE, 选File/Open, 装 入 要 用 到 的 位 图 文 件。 这 儿 用 一 人 头 形 位 图man.bmp, 在 图 形 上 拖 动, 产 生 一 个 个 热 点, 双 击 任 一 热 点 区 域, 出 现 一 对 话 框, 只 要 在Context String 处 输 入 要 跳 转 或 弹 出 目 的 地 的 跳 转 名。 热 点 类 型Type 处 选 取 Jump 跳 转 式 或 Popup 弹 出 式。 热 点 区 域 边 框 属 性Attribute 选 取 可 见Visible 或 不 可 见Invisible。 在 这 个 例 子 中Context String 输 入eye_popup,Type 选 取 Popup,Attribute 选 取Invisible ( 隐 去 热 点 区 域 的 边 线).

    以d:\winword\man.shg 文 件 名 存 盘, 退 出SHED.EXE。

    如 何 产 生 固 定 的 不 滚 动 标 题 区 域, 不 滚 动 区 域, 在 显 示 特 长 的 信 息 时 很 有 用, 可 这 样 操 作: 用 光 标 将 要 不 滚 动 的 区 域 全 选 上, 点 取 系 统 菜 单 上 的“ 格 式”/ “ 段 落”, 选“ 正 文 排 列”, 将“ 与 下 段 同 页” 选 上。

    就 这 样, 帮 助 信 息 源 文 件 所 有 的 工 作 都 已 作 完, 在WORD 中 将 文 件 以RTF 格 式 存 盘。 下 面 进 入 帮 助 项 目 文 件HPJ 的 编 辑。

建立帮助项目文件(.HPJ 文 件)
以 一 实 例 说 明, 语 句 分 号 右 边 是 注 解
  [OPTIONS] ; 这 一 节 的 内 容 并 非 必 须
      COMPRESS=0 ; 指 示HLP 文 件 不 压 缩
      ERRORLOG=my.err ; 编 译 错 误 存 于 此 文 件
      REPORT=Yes ; 编 译 时 报 告
      CONTENTS=contents ; 目 录 跳 转 名
      COPYRIGHT= ; 版 权 信 息
      DEFFONT=,10,0 ; 字 体 大 小
      BMROOT=. ; 指 示BMP 文 件 的 存 放 位 置,
        在 同 一 目 录 下 用 空 白 或“.” 否 则BMROOT=Drive:\Path
        HLP=.\dxchlp.hlp ; 表 明 生 成 的 帮 助 文 件 名

    [FILES] ; 唯 一 重 要 的 一 节
      .\Dxchlp.rtf ; 所 用RTF 文 件 名( 包 括 路 径)

    [WINDOWS] ;
        语 法 Main=" 主 窗 口 的 标 题",( 窗 口 水 平 位 置, 垂 直 位 置, 宽 度, 高 度), 状 态, 背 景 颜 色(R,G,B), 非 滚 动 区 域 背 景 颜 色(R,G,B), 是 否 总 是 浮 在 其 它 窗 口 上 面(0 为False,1 为True) 例:

        Main=“ 主 窗 口 标 题”,(512,10,512,1000),0,(255,251,240),(192,192,192),0

        Second=; 语 法 同 上 面 主 窗 口, 例:

        Second=“ 次 级 窗 口 标 题”,(10,10,500,1000),0,(254,251,240),(191,192,192),1

    [CONFIG]
        BrowseButtons() ; 加 一 向 前 向 后 按 钮

        其 实 用 不 着 写 这 么 多, 最 省 事 的 帮 助 项 目 文 件 是 这 样 只 有 一 条 语 句, 其 它 全 是 缺 省 值:

    [FILES] ; 节 名 称
        Myhelp.rtf ; 所 用RTF 文 件 名( 包 括 路 径, 如c:\winword\Myhelp.rtf)

    以 上hpj 文 件 用 任 何 编 辑 器 编 辑 后 以HPJ 文 件 存 盘。

对帮助项目文件HPJ进行编译,形成HLP文件
  编 译 要 用 编 译 工 具HC.EXE, 在VB 的HC 目 录 下 有HC.EXE, 在VFP 的HELPCOMP 目 录 下 有HC31.EXE 和HC35.EXE, 任 选 一 个 使 用。 操 作:HC 文 件 名, 或HC31 文 件 等, 如:HC31 Myhelp.hpj

  帮 助 文 件 的 最 终 目 的 是 要 应 用 到 自 己 程 序 中。 现 以 最 常 用 的 三 种 开 发 工 具VB,VFP,DELPHI 分 别 举 一 最 简 单 例 子。

VB
  进 入VB, 选File/New Project, 出 现 一 空 白 窗 体Form1, 加 一 个 通 用 对 话 框CommondDialog1 到Form1, 点 取Menu Editor, 设 置 一 菜 单, 一 级 菜 单 有 二 项:(Caption 分 别 为:)File ,Help, 而File 的 下 一 级 菜 单Exit,Help 的 下 一 级 菜 单 为Contents, KeyWords Search, About, 对 应 的Name 属 性 分 别 为:mnuFile,mnuHelp,mnuExit,mnuContents,mnuSearch,mnuAbou。 假 定 帮 助 文 件 是D:\WINWORD\DXCHLP.HLP。

    程 序 代 码 如 下:
    Private Sub Form_Load()
        CommonDialog1.HelpFile = "d:\winword\dxchlp.hlp"
    End Sub

    Private Sub mnuContents_Click()
      With CommonDialog1
        .HelpCommand = cdlHelpContents 'cdlHelpContents 是 显 示 目 录 的 命 令
      .ShowHelp
      End With
    End Sub

    Private Sub mnuSearch_Click()
      With CommonDialog1
        .HelpCommand = cdlHelpKey 'cdlHelpKey 是 显 示 关 健 字 搜 索 的 命 令
      .ShowHelp
      End With
    End Sub

    Private Sub mnuAbout_Click()
        aboutform.Show 1 ' 以 模 态 显 示" 关 于" 窗 口
  End Sub

    Private Sub mnuExit_Click()
        End
    End Sub

    以 上 可 用 调 用 动 态 联 结 库 的 方 法, 代 码 如 下:
    (1) 模 块 文 件:
        Global Const HELP_CONTENTS = &H3&
        Global Const HELP_KEY = &H101
        Declare Function WinHelp Lib "user32" Alias "WinHelpA"
            (ByVal hwnd As Long,
            ByVal lpHelpFile As String,
            ByVal wCommand As Long,
            ByVal dwData As Long) As Long '

    必 须 同 一 行; 为WIN95,NT
    ' Declare Function WinHelp Lib "User" (
            ByVal hwnd As Integer,
            ByVal lpHelpFile As String,
            ByVal wCommand As Integer,
            dwData As Any) As Integer ' 必 须 同 一 行; 为WIN3.X

    (2) 窗 体 文 件
  Private Sub Form_Load()
        App.HelpFile = "d:\winword\dxchlp.hlp"
    End Sub

    Private Sub mnuContents_Click()
        i% = WinHelp(Form1.hwnd, App.HelpFile, HELP_CONTENTS, 0)
    End Sub

    Private Sub mnuKeySearch_Click()
        i% = WinHelp(Form1.hwnd, App.HelpFile, HELP_KEY, 0)
    End Sub

DELPHI
  进 入DELPHI, 选File/New Project, 出 现 一 空 白 窗 体Form1, 加 一 个 菜 单 控 制Mainmenu1 到Form1, 双 击Mainmenu1, 设 置 其 一 级 菜 单, 有 二 项:(Caption 分 别 为:)File ,Help, 而File 的 下 一 级 菜 单Exit,Help 的 下 一 级 菜 单 为Contents, KeySearch, About, 对 应 的Name 属 性 分 别 为: File1,Help1,Exit1,Contents1,KeySearch1,About1。

    因 为 要 用 到About 关 于 窗 口, 所 以 加 入 一 新 窗 体, 其Name 属 性 为AboutBox, 再 加 入 一BitBtn 按 钮OKButton 到AboutBox 窗 体,OKButton 的Caption 属 性 为OK,Glyph 属 性 为 一 确 定 图 片 或 干 脆 为 空。

    假 定 帮 助 文 件 是D:\WINWORD\DXCHLP.HLP。

    程 序 代 码 如 下:
    program Delhelp;
    uses Forms,
        Unihelp in 'UNIHELP.PAS' {Form1},
        Uniabout in 'UNIABOUT.PAS' {AboutBox};

    {$R *.RES}
    begin
        Application.CreateForm(TForm1, Form1);
        {Application.CreateForm(TAboutBox, AboutBox);}
        {注意注掉这一行,因为AboutBox是在运行时产生的,详见代码}
      Application.Run;
    end.

    unit Unihelp;
    interface
        uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs, Menus,uniAbout;

    type
    TForm1 = class(TForm)
        MainMenu1: TMainMenu;
        File1: TMenuItem;
        Help1: TMenuItem;
        contents1: TMenuItem;
        KeySearch1: TMenuItem;
        About1: TMenuItem;
        Exit1: TMenuItem;
        procedure Exit1Click(Sender: TObject);
        procedure contents1Click(Sender: TObject);
        procedure KeySearch1Click(Sender: TObject);
        procedure About1Click(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

    var
        Form1: TForm1;

    implementation
    {$R *.DFM}

    procedure TForm1.Exit1Click(Sender: TObject);
    begin
        Close;
    end;

    procedure TForm1.contents1Click(Sender: TObject);
    begin
        Application.HelpFile := 'd:\winword\dxchlp.hlp';
        Application.HelpCommand(Help_Contents,0); { 显 示 帮 助 目 录}
  end;

    procedure TForm1.KeySearch1Click(Sender: TObject);
    begin
        Application.HelpFile := 'd:\winword\dxchlp.hlp';
        Application.HelpCommand(Help_PartialKey,0); { 显 示 关 键 字 搜 索}
  end;

    procedure TForm1.About1Click(Sender: TObject);
    var
        myAbout:TAboutbox;
    begin
        myAbout:=TAboutbox.Create(Self);{myAbout 是 类TAboutbox 的 一 个 实 例}
      myAbout.ShowModal; { 显 示“ 关 于”}
  end;

    end.

    unit Uniabout;

    interface
        uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls,Buttons, ExtCtrls;

    type
    TAboutBox = class(TForm)
        OKButton: TBitBtn;
        procedure OKButtonClick(Sender: TObject);
    private
        { Private declarations }
    public
        { Public declarations }
    end;

    var
        AboutBox: TAboutBox;

    implementation
    {$R *.DFM}

    procedure TAboutBox.OKButtonClick(Sender: TObject);
    begin
        Close;
    end;

    end.

    以 上 可 用 调 用 动 态 联 结 库 的 方 法,DELPHI 中 公 用 动 态 联 结 库, 常 数 等 用 不 着 声 明, 可 拿 来 就 用, 在 上 面 的 窗 体 中 再 加 入 二 个 按 钮,Content,Search, 输 入 以 下 代 码:

    procedure TForm1.ContentClick(Sender: TObject);
    begin
        WINHELP(form1.ClientHandle,
                'd:\winword\dxchlp.hlp',
                HELP_CONTENTS,0);
    end;

    procedure TForm1.SearchClick(Sender: TObject);
    begin
        WINHELP(form1.ClientHandle,
                'd:\winword\dxchlp.hlp',
                HELP_KEY,0);
    end;

VFP
  VFP 中 有 内 建 的 菜 单 帮 助 命 令, 另 要 将 帮 助 文 件 设 到 自 己 的 帮 助 文 件 处, 语 句 是:SET HELP TO Drive:\Path\helpfile.hlp, 在 菜 单 位 中 显 示 帮 助 目 录 的 菜 单 项# 是_mst_help, 显 示 帮 助 中 关 键 字 搜 索 的 菜 单 项# 是_mst_hpsch, 现 举 一 例: 进 入VFP, 选“ 文 件”/“ 新 建”/“ 项 目”, 新 建 一 主 程 序main.prg, 输 入 以 下 代 码:

    SET DEFAULT TO D:\WINWORD\VFP
    SET HELP TO D:\WINWORD\DXCHLP.HLP
    PUSH MENU _MSYSMENU
    SET SYSMENU OFF
    DO MainMenu.MPR

    新 建 一 主 程 序 主 菜 单MainMenu, 一 级 菜 单 有File 和Help, 再 设File 的 子 菜 单Exit,Help 的 子 菜 单Contents 和Search,Contents 的 菜 单 项# 是_mst_help, 而Search 的 菜 单 项# 是_mst_ hpsch,Exit 过 程 输 入 以 下 代 码:

    POP MENU _MSYSMENU TO MASTER
    CLEAR EVENTS
    SET SYSMENU TO DEFAULT

  以 上 程 序 在P133 兼 容 机, 中 文WORD6.0, 中 文WINDOWS95, 中 文Visual Foxpro3.0,Visual Basic4.0,Delphi1.0 上 运 行 通 过。



Copyright © 上海聚声计算机系统工程有限责任公司 1999-2000, All Rights Reserved



本文地址:http://com.8s8s.com/it/it4115.htm