基于html的chm在线帮助设计与实现

本文介绍了一种基于HTML的CHM在线帮助设计与实现方法,适用于Windows 95/98环境下的应用软件。该方法利用HTMLHelpWorkshop工具包创建帮助文件,包括主题、目录、索引和项目的定义,并通过Visual FoxPro实现上下文敏感帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于html的chm在线帮助设计与实现

倪伟、张粤

  文摘 本文以扬子石化码头生产管理系统为背景,介绍了在windows95、98环境下基于html的chm在线帮助(online help)技术的设计与实现。

  关键词 管理系统,在线帮助,设计与实现


  一、 引言


  随着计算机的日益普及,各种计算机应用软件也相继出现,编制内容丰富、界面友好的应用软件在线帮助已成为广大软件编程人员亟待解决的问题。随着微软公司windows98的发行,基于html的新颖帮助文件(.chm文件)也相继面世,它与windows95环境下基于winhelp系统的帮助文件相比有如下几个特点:

  1.chm文件使用网页浏览器explorer显示帮助内容,因此它能跨平台运行而无需重新编制chm文件,并支持html、activex、java、java脚本、vb脚本及html图像格式(.jpeg、gif、png)。

  2.典型的html帮助文件窗口类似于windows98资源管理器,它克服了winhelp系统帮助文件目录窗口和主题窗口不能同时显示的缺点。

  3.利用url地址可与因特网联系在一起,这样,使chm文件不再局限于已包装好的内容。

  鉴于上述特点,开发基于html的chm在线帮助已成为必然趋势。本文结合扬子石化码头生产管理系统在线帮助的设计与开发,介绍在windows95、98环境下基于html的chm在线帮助的设计与实现。


  二、 在线帮助的设计


  应用软件在线帮助旨在帮助用户通过搜索或点击帮助界面,立即获取系统的描述、功能注解、使用方法等帮助信息。本节结合微软公司的htmlhelp workshop工具包,以扬子石化码头生产管理系统在线帮助设计为例,介绍基于html的chm在线帮助的设计。

  1.主题的确定(.htm)

  在确定主题时,首先应从程序模块化分析入手,将系统的整体结构分解成如图1所示的层次型模块结构,在各模块功能确定的前提下,应将功能相同的主题合为一个主题。其次,应确保主题的唯一性、完整性及层次性。它的每个主题对应一个html文件,可以用任何一个html编辑器进行编辑,如果不熟悉html文件的编辑,也可用word97进行编辑并另存为html文件,但必须注意,所有html文件都必须用网页浏览器检查确认无误。

  2.创建目录文件(.hhc)

  利用htmlhelp workshop工具包提供的帮助编辑器hhw.exe建立扩展名为hhc的目录文件,hhc文件类似于书的目录,它定义了各章节的层次关系及章节的标题,每个标题又分别与html主题文件或url地址相对应,作为标题的说明内容。在本次设计中,根据图1所示的系统层次结构所设计出的目录文件如图2所示(图中仅展示了数据编辑部分的层次关系)。

  创建目录文件是制作chm文件最关键的工作,目录文件应该包含chm文件所有主题,章节的标题要按照制作的内容统一考虑,可以不添加,也可放置需要的主题文件,但要避免章节的标题与对应的主题不一致的情况出现。

  3.创建索引文件(.hhk)

  利用htmlhelp workshop工具包提供的帮助编辑器hhw.exe建立扩展名为hhk的索引文件,索引文件(.hhk)是一个html文件,它包含若干个关键字(所谓关键字是用户可能用到的并与一个或多个帮助主题文件关联在一起的字、词或短语),当用户使用chm文件时,只需在索引标签中输入一个关键字,chm文件就自动显示与这个关键字有关的主题列表供用户选择,以便用户找到相关的主题。

  4.创建项目文件(.hhp)

  利用htmlhelp workshop工具包提供的帮助编辑器hhw.exe建立扩展名为hhp的项目文件。项目文件是标准的ascii字符文件,它的结构类似于win.ini及其它windows初始化文件的结构,在本次设计中,hhp项目文件由[options]、[windows]、[files]、[alias]、[map]及[text popups]选项组成,如图3所示。

  其中,[options]、[windows]、[files]选项类似于winhelp系统的项目文件选项,两者的主要差别在于前者在[files]选项采用主题文件(htm),后者使用帮助文本(rtf)。除此之外,由于chm文件基于html的特点,在[options]选项必须为帮助文件指定缺省主题页,否则编译后的帮助文件在运行时将出错。

  为了使在线帮助chm文件具有上下文敏感帮助的能力,即根据当前活跃的程序段显示该程序的帮助主题。我们在[map]选项的mthelp.h头文件中,用#define命令将指定的上下文字符串编号(如101)映射给相应地字符串标识符(id_mt04)。同时,在[alias]选项中为上述的每个字符串标识符指定相应地帮助主题文件,如图3中将字符串标识符id_mt04与主题文件mthelp04.htm相关联。

  考虑到使在线帮助chm文件具有如microsoft word97工具栏tip类似的帮助,在[text popups]选项中,我们设计了一个自定义头文件mthelp1.h及与之相关的文本文件mthelp1.txt(示例如图4、5所示)。但需注意,mthelp1.txt中的弹出式文本的主题标识符必须是唯一的,并以idh_作前缀。这样,当用帮助编辑器编译生成chm文件时,htmlhelp workshop将自动检测项目文件中的弹出式主题是否已被连入chm文件。

  5.创建帮助文件(.chm)

  利用htmlhelp workshop工具包提供的帮助编辑器hhw.exe将包含主题文件(.htm)、目录文件(.hhc)、索引文件(.hhk)及其它资源文件的项目文件(.hhp)编译成帮助文件(.chm)。


  三、 在线帮助的实现


  在线帮助设计的目的是将在线帮助应用到自行开发的应用软件中,使用户在使用该软件时能获得最大的技术支持。现以开发工具microsoft visual foxpro5.0为例,简要介绍基于html的chm在线帮助的实现。为了叙述方便,假设应用软件在线帮助文件为mthelp.chm,位于c:/users目录,并以激活人工检尺录入窗体的在线帮助作为实例。

  1.创建动态连接库fhtmldll

  htmlhelp api提供了相应地api函数hwnd htmlhelp(hwnd hwndcaller,lpcstr pszfile,uint ucommand,dword dwdata)识别和使用chm文件,其中,hwndcaller表示调用该函数的窗口句柄,pszfile表示帮助文件名,ucommand表示帮助类型,dwdata表示与ucommand相匹配的附加参数。由于此函数并没集成在windows95、98的api中,因此,在windows95、98环境下欲实现chm在线帮助,必须编制相应地调用接口。

  为了使vfp能识别和调用chm文件,我们设计了一个动态连接库fhtmldll.dll,它向外提供一个输出函数fhtmlhelp()以实现常用的四种帮助:hh_help_context(上下文敏感帮助)、hh_display_index(查找关键字)、hh_display_text_popup(弹出式帮助)、hh_display_topic(显示帮助主题)。在该文件中,包含了随帮助编辑器hhw.exe一起发行的声明htmlhelp()函数的头文件htmlhelp.h及输出函数库htmlhelp.lib。具体的fhtmldll.cpp源文件如图6所示。

  2.chm在vfp中的实现

  由于vfp具有面向对象及基于应用程序框架技术的特点,所有vfp的控件及其升级版均具备helpcontext功能,也就是说,应用程序开发人员只需将上下文字符串编号(如101)赋予控件helpcontextid属性,即可用f1键激活相应控件的上下文敏感帮助(如人工检尺录入帮助主题),若控件helpcontextid属性没被赋值,则激活与该控件父对象helpcontextid属性相对应的上下文敏感帮助。但遗憾的是helpcontext功能只能识别winhelp在线帮助,而无法识别chm在线帮助,在本次设计中,为了充分利用控件现有的helpcontext属性,我们遵循winhelp在线帮助系统的实现机理,在应用软件主文件中用on key label f1 do htmlhelphandle with 1,0语句截获vfp对f1键的响应控制权,允许用户通过f1键激活自定义的帮助处理过程htmlhelphandle以实现chm上下文敏感帮助。同理,当用户以其它方式提出帮助要求时,应用软件使用do htmlhelphandle with commandoptionid,dataid,语句以激活chm在线帮助,其中,commandoptionid的取值范围为1~3,相应地dataid可以是上下文字符串编号、弹出式文本的主题号、需查找的关键字。chm在线帮助处理过程htmlhelphandle如图7所示。


  四、 结束语


  本文结合扬子石化码头生产管理系统在线帮助的设计与开发,从应用角度介绍了在windows95、98环境下基于html的chm在线帮助的设计与实现。在线帮助技术的运用,无论对软件编程人员还是用户都是不同凡响的,随着计算机应用的不断深入,它将受到越来越多的开发者和使用者的重视。

当你想把网页制作成某种模样时,需要使用一种编码向网络浏览器来进行解释,这种编码就被称为HTML代码。   一个HTML文件是一页文字信息,就象一封电子邮件或一个word字处理文档,而且实际上你完全可以使用Word字处理软件来编写一个HTML网页。你也可以通过其它字处理软件编写文本文件,网络浏览器只能处理文本信息。   一个HTML文件中包含了所有将显示在网页上的文字信息,其中也包括对浏览器的一些指示,如哪些文字应放置在何处,显示模式是什么样的等。如果你还有一些图片、动画、声音或是任何其它形式的资源,HTML文件也会告诉浏览器到哪里去查找这些资源,以及这些资源将放置在网页的什么位置。HTML文件通过标志符(tag)来实现这一功能。   标志符是一些字母或单词,并被放在尖括号内,例如。HTML文件可支持很多种标志符,而我们常讲的学习HTML语言实际上就是学习这些各种各样的标志符。   每种标志符的作用均不同,例如,如果有的控制将文字放大,有的控制将文字居中显示,有的则负责其它信息进行链接。当你需要对某处进行修改时,就把标志符放置在该处前面,这时浏览器就会知道你希望下面的内容应如何显示了。   例如,你想把“订书机”这三个字用粗体显示,从而在网页中突出这三个字,因为既然你的网页是关于订书机的知识,自然订书机是网页中最重要的词汇。这时你就需要告诉浏览器你想将“订书机”三个字用粗体显示,方法是使用粗体标志符:    <b>   "B"是英文"bold"的首字母,意即“粗体”,实际上很多标志符都是使用的英文缩写,这也能够方便使用者记住它们。当你使用<b>这个标志符后,就会告诉浏览器说:“我希望在此之后的所有内容均以粗体显示。”而浏览器自然会按照你的指令将这个标志符后所有的内容均以粗体显示。   当你使用了标志符时会出现一个问题,即在此之后的所有内容都会根据此标志符的要求改变显示模式,也就是说浏览器不知道何时何处停止这种变化,而实际上你可能只是希望一页中某个部分的内容改变显示。为了防止这种情况的发生,你就需要告诉浏览器在何处终止这种变化,这时你就可以使用结尾标志符。结尾标志符普通的标志符(有时称为起始标志符)非常相似,只是在字母之前有一个斜线,例如粗体显示的结尾标志符就是下面这个样子:    </b>   这个结尾标志符的作用就是告诉浏览器在此之后就不要再用粗体显示了。因此如果你希望将“订书机”这三个字用粗体显示,就应该将一个粗体起始标志符放置在“订书机”三个字前面,而将一个粗体结尾标志符放置在这三个字后面:   这个结尾标志符的作用就是告诉浏览器在此之后就不要再用粗体显示了。因此如果你希望将“订书机”这三个字用粗体显示,就应该将一个粗体起始标志符放置在“订书机”三个字前面,而将一个粗体结尾标志符放置在这三个字后面:   <b>staplers</b>   你可以把标志符放置在网页中的任意部位,浏览器不会把这些标志符也显示出来,而只是读取它们的信息,并按照标志符的要求对其下面的内容进行特殊显示。例如你写好了一篇关于订书机的文章,希望使一些文字用粗体显示,那么你可以这样做: 世界上没有比 我漂亮的<b>订书机</b> 更让我喜爱的东西了 我从杂货店买到了它 但任何优美的语言 都无法描述<b>订书机</b>的优点    当网络浏览器看到上面这段编码后,就会以下面的样式显示这段文字: 世界上没有比 我漂亮的订书机 更让我喜爱的东西了 我从杂货店买到了它 但任何优美的语言 都无法描述订书机的优点    这就是一段HTML代码,而如果你能够理解本节所讲的起始标志符结尾标志符的含义,那么你就能够学会其它一些标志符所代表的意义。也许读过本文后,你就能够成为一名网页设计师了。   好了,下面让我们把前面介绍的一些知识投入到正式的工作应用中。你在编写一个HTML文件时需要使用一个文字编辑器,如果你使用的是Macintosh系统,你的文字编辑器可能叫做SimpleText,这个软件完全能够满足我们当前的要求。而如果你使用的是windows系统,你的文字编辑器应该叫做Notepad。请将任何一种文字编辑器打开,并建立一个新的空白文件,然后向其中输入一些HTML代码。    所有的HTML文件都必须以相同的标志符起始结束,例如当你使用<b>标志符来告诉浏览器将后面的内容以粗体显示之前,你还需要使用一些标志符来告诉浏览器它下面即将读取的是一份HTML文件,因此一般情况下HTML网页的第一个标志符应该是<html>,而之对应,在该页的结尾处,你应该用</html>做为全文的结束。    <html>标志符内是<body>标志符,标志符是告诉浏览器这里面的内容是网页的实际内容。对于一个最简单的网页来说,<html><body> 这两个标志符是你唯一必须使用的标志符。虽然你可以使用更多的标志符使你的网页功能更丰富,但在目前我们完全可以只利用这两个标志符。也就是说,只要你在<body>标志符内输入一些文字信息,你就制作出了一个最简单的网页。   请将下列内容输入至你的文本编辑器中(如SimpleText, Notepad,或任何一种编辑器): <html> <body>    这是我制作的关于订书机的网页,我觉得我的网页很不错,我想我已经是一位HTML主页制作大师了,所有人都应该崇拜我! </html> </body>    好了,保存这页文件,给它随便起一个名字,但别忘了在文件名后一定要加上.html这个扩展名,这样网络浏览器才能够识别出这个文件,正确读取它。在这里我们把该页命名为“订书机.html”。    这样你就制作出了自己第一个网页,你现在应该感到很高兴吧。虽然你现在只学习了网页制作非常少的知识,但至少你已经能够制作网页了。那么接下来让我们看一看你制作的网页到底是什么样子。   打开你的浏览器(如Netscape Navigator, Internet Explorer或任何其它的浏览器),从中打开你编辑的网页文件,方法是打开"File"(文件)菜单,根据不同的浏览器请选择"Open Page"(打开网页)或"Open File"(打开文件),寻找到你的“订书机.html”文件并选中,这样浏览器就会打开这个文件了。文件打开后,该页应该在左上角有几行文字,其余是一片空白。    如果不是这样的话,那么你可能忘记输入某个标志符或丢掉了斜线或是尖括号或是其它什么重要信息。这种情况经常会发生,即使那些网页制作大师们有时也会犯一些简单的错误,因为忘掉一个符号太容易发生了。当你发现自己的网页存在问题时,下面就需要进行修改。    浏览器自己可不知道在哪添加个标志符使网页正确显示出来。如果你希望象我们前面讲到的把“订书机”这三个字变为粗体,就需要返回文本编辑器中添加<b>标志符并重新保存该文件。这时你在浏览器中点击刷新按钮后就会显示出正确的文字了。这个刷新的操作告诉浏览器重新寻找同一个文件(本例中即“订书机.html”文件)并重新显示,这时你就会发现“订书机”三个字已经用粗体显示了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值