Chinaunix首页 | 论坛 | 博客
  • 博客访问: 356819
  • 博文数量: 51
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 613
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-06 17:19
文章分类

全部博文(51)

文章存档

2011年(1)

2010年(3)

2009年(27)

2008年(20)

我的朋友

分类:

2008-09-25 11:36:13

 注释 本节专门讨论了Windows帮助文件 (附带)
文件:HA_HW403_ljh.rar
大小:2413KB
下载:下载


    在引入了Microsoft Help Workshop之后,编译过程有了全面的改观。再也不用依赖于基于DOS的编译程序了,Microsoft Help Workshop在Windows环境下建立并编译帮助工程文件(帮助make文件的另一种叫法)。图15.3是Microsoft Help Workshop典型的显示示例。

    注释 即使使用Microsoft Help Workshop,也还是需要一个生成RTF文件的编辑器。我不知道Microsoft为什么没有改进这一方面,事实就是如此。我还是用 Microsoft Word建立RTF文件,在使用MicrosoftHelp Workshop建立帮助文件时,所用的make文件指向这些文件。
    我们看看这个工具如何降低建立过程的复杂性,所建的make文件如程序列表15.2所示(假定已经建立了包含帮助脚本的RTF文件)。第一步是建立一个新的工程文件,用File|New命令实现,系统会显示如下图所示的对话框:

    选择Help Project后,按OK完成。如图15.3所示,已经建成了一个新的帮助工程文件,它初始为一个空白文件,由你填入帮助文件的特性。
    警告 用Microsoft Help Workshop建立的文件与用DOS编译程序建立的文件互不兼容,必须预先做好决定:新的Microsoft Help Workshop对开发者更好用,但只限于32位的操作系统环境;如果还需要对Windows 3.x向下兼容,就只好用DOS编译程序了。
    定义工程的各种选项
    当开始使用一个新的工程文件时,总要先定义一些选项。例如:至少要知道调用帮助文件的目的,要加进哪些版权信息。我一般以内容主题为主目录,所以 把它加在帮助文件的开头位置是适宜的。点击Options按钮,系统就会显示Options对话框:

    注意此时已经定义了一些基本选项,这些选项的含义类似于前面章节中make文件描述的内容(你会看到Compression属性页上的选项相当熟 悉,它们也是用来压缩帮助文件大小的)。此时,有些人会觉得这个工具并没有什么优越性,特别是当他们的盘上有很多预定义文件时。要指出的是这个对话框使你 只需填填表,而不用再一条一条地完成语句。

    Options对话框的“Files”属性页如下图所示:

    你会注意到它的许多选项我们以前都介绍过,修改Help File域可以给帮助文件改名,一般帮助编译器用工程文件名作为帮助文件名的基础;Log File域包含了记录文件的文件名,所幸的是这一项在新的帮助编译器中已不是必需的了。我还是用它来记录编译过程,但现在这是可做可不做的事情。
    在此属性页上的最重要的域是RTF文件清单框,当前帮助文件的工程文件所含的文件都列在这里,点击“Change”按钮显示“Topic Files”对话框,如下图所示:

    从这里可以增加或删除工程文件中FILES小节所列出的主题文件。注意此对话框中的两个复选框,它们很重要,因为它们控制着帮助编译器如何响应 RTF文件。第一个选项允许编译器在下一次编译时自动执行对RTF所做的更改,如果未选中该项,编译器就会忽略所做的改动。第二个选项对使用双字节字符集 (DBCS)的帮助文件非常重要,它改变了帮助编译器的工作方式,从而保留了特殊字符(该特征主要用于特殊的语言,比如中文等)。
    技巧 进入“Topic Files”对话框的另一途径是单击主窗口的“files”按钮。
    在“Options”菜单的“Files”属性页还有其它一些选项,其中之一就是“ContentsFile”域,如果是新建一个工程文件, Help Workshop在建立内容页时就会自动地填充该项。选中该选项的原因是已经有了一个内容页又想用于当前的工程文件中。当帮助文件超过8MB时要用到 TMP Folder选项,它给出了Help Workshop编译时建立临时文件的目录,一般情况下用不到,只是当缺省目录的磁盘空间不足时才用到。最后一个域是“Substitute Path Prefix”,当移动了某些文件又不想改变工程文件中的路径信息时要用到。
    Windows 95/98的帮助文件提供了一些以前没有的功能:全文查找。当选中“帮助主题”对话框的“查找”页就会建立这个数据库,实现对全文的逐字查找。编译过程中 “选项”对话框的FTS页中有一个选项用于生成这个文件,由于Windows 95/98总是要生成它,一般都不用选中。编译器建立的GID文件要在发行盘上占用很多空间并增加了编译时间。
    下面有必要学习一下“Macros”属性页,其图像如下图所示:

    从这里定义关键字宏供全文使用。而且当用户查找某一主题时,这些宏会出现在帮助主题对话框的索引页中。
    单击“Macros”属性页的“Add”按钮,系统显示一个含有三个域的“KeywordMacors”对话框,第一个域含有宏名字,第二个域指 示宏本身,第三个域指示Help Workshop如何在索引页显示该宏,它用于有多个帮助文件但只想在某个选定文件范围显示关键字的情况。例如:一般把词汇表和程序列表名的缩写集中存放 在一个独立的文件中,用JI宏建立一个全文范围的跳转。就用关键字宏的方法来实现,用户根本不会感觉到又加载了其它的文件——因而对用户是透明的。
    注 请谨记,Options对话框的Macros属性页的设置会影响整个帮助文件,而不只是一个窗口。
    前面我们介绍过“*”脚注用于建立标识,Options对话框的Build Tags属性页就该用到它了,前面对这个脚注已经讲得十分透彻,这里不再赘述。
中心思想就是给Help Workshop提供帮助文件要包括的建立标识的一个清单。即使RTF文件含有主题,如果不做主题标识,该主题也不能出现在帮助文件中。如果没有填写该属性页,Help Workshop会包括所有RTF文件中的所有主题。
    Options对话框的Fonts页是第一个用于定制帮助文件外观的地方。我一般不用,而是在字处理过程中就完成了。然而,如果用文本编辑器建立 了一个RTF文件,再用该选项可以节省时间。Character Set域允许选择字符集,缺省为ANSI,可以选择其它的语言,如阿拉伯语。在WinHelp Dialog Boxes域的Font用于指定缺省字体,单击Change按钮,显示含有三个域的Font对话框。第一个定义字体名称,第二个定义字体大小,第三个定义 字符集。在WinHelp Dialog Boxes域的Font下拉列表框用于更改Windows帮助文件的通用字体,允许用一种字体代替另一种字体,Add按钮显示一个Add/Edit Font Mapping对话框,它含有两个组,每个组有三个域。这三个域与前面描述的Font对话框中的相应域完全一致,唯一的问题是如果字处理程序覆盖了这些设 置,那么它们就不起作用了——这是使用像Word for Windows这样的产品编辑文件时经常发生的事。
    定义窗口
    定义窗口选项只是建立工程文件的第一个步骤。当这些选项起作用时,需要定义一些窗口来显示数据。一般建立一个叫Main的窗口,它是应用程序用到的主窗口。
    建立窗口很简单,只需单击Main窗口的Windows按钮(图15.3),系统就会显示窗口属性对话框:
    首先应关注的是General属性页。单击Add按钮,系统显示一个带有两个域的Add a New Window对话框,一个域是窗口的名称,另一个域指明窗口类型,Help Workshop可以建立三种类型窗口:过程窗口、引用窗口以及出错消息窗口。过程窗口和引用窗口的差异很小,它们都可以自动调整大小,并且都包含了三个 系统按钮。这两类窗口的最大差别是它们在屏幕上的放置位置——后面我们将会讲到如何设置位置信息。出错消息窗口不同于其它两个窗口,它并不包含三个系统按 钮,而更像一个对话框。

    返回到General页,Title Bar Text域定义了Windows Help在标题栏里放置什么,它不影响帮助窗口的标题区的实际显示。Comment域是在工程文件中加入注释,我总要在工程文件中加入注释,以帮助随后理 解帮助文件的建立过程。该属性页中还有三个属性复选框,Help Workshop可以根据当前情况禁止其中一个或多个复选框,例如:你不能让主窗口自动调整大小,否则当允许某个辅助窗口自动调整大小时,该窗口打开后, 用户就无法使其最大化。大部分过程窗口缺省情况下总显示在屏幕的最外层,如果你想让操作你的程序的用户随时都可以看到帮助,这就是实现该功能的一个便利的 特性。
    技巧 为了更好地控制窗口显示的外观,我总是关闭Auto-Size Height特性。Position属性页的选项将对帮助窗口提供全面的控制,后面我们会具体介绍该属性页。
    你可能会经常调整Windows Properties对话框的Position属性页,该页如下图所示:

    它比其名称所包含的功能要强一些,该属性页除了能控制帮助窗口的位置及大小外,还提供了很多非常容易使用的特性。
    在这个属性页上有四个域:Left、Top、Width和Height,它们控制窗口的大小和位置。一般第一个帮助窗口放在左上角,大小为640 ×480或800×600,具体使用哪一个值要随机器的性能而定。这样的窗口看上去可能会小一点,但用户一般都会自行调整。如果程序员将窗口放得离边缘太 近,使用时要想在用过新窗口后又返回老窗口时就很不方便。好在还有User's Screen Resolution选项,当用户的显示器档次太低时,用该选项可以防止帮助窗口被全部隐藏起来。 
    该属性页还有一个非常特别之处,起初你可能会不注意,看一下Auto-Size按钮,单击它会显示如下图所示的窗口:

    如果改动了窗口的位置,Left和Top域的值也随之而变;重新改变窗口的大小则会改变Width和Height域的值。这种用图像方式改变窗口的方法减少了重编译帮助文件的次数。
    Windows 95/98定义了许多可以加入帮助文件的缺省按钮,有时可能不会都用到,例如:如果在RTF文件中未定义浏览(+脚注)功能,那么Browser按钮就用 不到了。这里显示的Buttons页用于定义帮助窗口中用到的按钮。

    所有辅助的过程窗口和引用窗口都用不到Contents和Index按钮,主窗口中则把它和Print及Back按钮一起作为缺省按钮提供;另一 方面,主窗口不用HelpTopics按钮。与所有其它类型的窗口不同,出错信息窗口没有任何限制,可以随心所欲地使用各种按钮。
    技巧 单击No Default Buttons复选框,可以不受Help Workshop在主帮助窗口按钮设置方面的限制。这个复选框仅在主窗口中出现,即不能修改辅助性过程窗口和引用窗口中存在的限制。
    下面介绍Color属性页,它有两个域:Nonscrolling Area Color和Topic AreaColor。每个域都有一个Change按钮。单击它会出现一个调色板,从中选择不同的颜色,帮助窗口的颜色也会随之而变。
    最后一个属性页是Macros属性页,它的外观如下图所示:

    主窗口总是使用工程文件中CONFIG节的宏作为缺省宏,本节中你看到的所有宏都是可自我执行的——这就是CONFIG节的宏都加到主窗口的原 因。你希望打开主窗口时让那些宏运行。在主窗口中插入新宏就是靠向工程文件的CONFIG节中加入宏来实现的。向其它窗口中加入宏会改变那些窗口的显示, 例如:如果向一个辅助性窗口中加入浏览功能,需要加入一个或多个宏以设置一定的条件,从而忽略在Buttons属性页的Browse按钮上所作的设置。这 些辅助性窗口在帮助工程文件中要专门设置CONFIG<窗口名>小节。
    注 添加到Windows Properties对话框的Macros属性页中的宏通常只影响一个窗口,而不是帮助文件中的所有窗口。
    技巧 访问主窗口Macros对话框的另一种方法是单击如图15.2所示的主窗口的Config按钮。
 前面已经陈述过这部分的重要性,如果没有把帮助文件中的主题标识符映射到帮助内容序号上,就不能建立一个对应用程序中控件内容上下文相关的帮助文件。下面我们将讲述如何实现这种功能。
    单击Map按钮,系统显示如下图所示的Map对话框。

    在这里可以定义主题标识符与内容序号间的关系。上图中,我已经定义了一些联系,主题标识符被设置为与帮助内容序号相同的值,紧跟其后的是描述这一项目的注释。
    有许多方法可以直接保持内容序号,对于小的帮助文件我一般是从1开始编号,递增直到帮助中的最后一个主题。大帮助文件比较复杂,可能会碰到重用序 号的情况,这时,我一般用3或4位数的序号,前两位数是控件和菜单条在应用程序帮助内容中的位置。例如:菜单项File标为01,菜单项Edit标为 02,File|New命令的序号就是0101,因为New命令项通常是File菜单中的第一项。第一个非应用程序主题赋值0001,例如词汇表。应用程 序窗体上控件的前两位数应大于最后一个菜单项的序号,我使用Tab序号作为控件标识的后二位数字,原因在于这类控件不像标签或其它的非活动组件,这些非活 动组件不会出现在帮助文件中。
    要增加新的映射入口页很容易,单击Add,你会看到如下图所示的Add MapEntry对话框。
    该对话框有三个域:主题标识符、被映射的数值(帮助内容中的序号)及注释。填完后单击OK就在工程文件中加入了一个新的映射。

    正如前文所述,帮助文件中一般都包含HM文件,以减少工作量并提供快捷便利的检查方法。当帮助文件已测试并发行之后,才发现有一些很重要的主题没 有覆盖到,再没有什么比这更难办的了。这时单击Include按钮,系统显示Include File对话框,如下图所示:

    这个对话框提供了一个Browse按钮,可以用它调出已经保存在磁盘上的文件。单击后打开标准Open对话框,就像你在其它程序中用过的这种对话框一样操作。
    编译帮助文件
    完成工程文件后,就要进行编译了。如图15.3所示,单击主窗口底部的Saveand Compile按钮。在编译过程中,Help Workshop窗口会最小化,这样你就可以去做别的工作了(因为编译大的帮助文件需要很长时间)。编译完成后,会看到如图15.4所示的对话框:
    你应该注意到这个对话框中立刻显示了一些东西——上图显示了帮助文件中存在一些错误(实际上那些都是注释,但绝大多数情况下还是应该把它们看成是 错误)。在帮助文件条目中,我们没有给出HM文件中的所有条目,即:在帮助文件覆盖过程中出现了漏洞。从中我们可以看到,使用HM文件很有帮助——至少会 减少丢失帮助主题的机会。
    那么HM文件就很完美了吗?远远没有。看一下表15.2,那里曾经给ID_FORMAT_FONT增加了一个Map条目,这是MFC用在 AFXRES.H文件中的标准标识符,不是包含定制控件标识符的RESOURCE.H文件,结果HM文件不能识别它——必须手工增加对标准控件的支持。

阅读(1012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~