【 tulaoshi.com - 编程语言 】
----带有帮助文件的应用程序无论对程序员还是用户都是不同凡响的,它能节省印刷大量用户手册的开支,对程序员编辑修改和用户手册的复制保存都极为方便。帮助文件的另一个很有前景的应用是单独作为带有图文信息的电子图书发布。
----在此对帮助文件的编制及如何在程序中编程调用作一详尽介绍。首先介绍第一部分,帮助文件的编写。
----帮助文件的编写步骤:
先编写存有所有帮助信息的帮助源文件RTF文件。
编写帮助项目文件HPJ文件。
对HPJ文件编译,最后生成HLP文件。
帮助源文件RTF文件的编写
----帮助源文件是存有所有帮助信息的,这是一种RTF(RichTextFormat)文件,帮助文件象一本书,由目录及一个个章节组成,各章节之间的跳转是由定义的热点来完成。现在举一具体例子(由目录等五条信息组成)详细说明。
----原始信息由五个章节组成:目录、概述、说明、程序、安装。象前面每一节的标题(“目录”,“概述”,“说明”,“程序”,“安装”)在RTF文件中必须以特有的脚注(即$)明确指定。对每一节还须指定其跳转名(脚注是#,跳转名不能是汉字),以便标识,在这我们给每一节分别取名为:contents,description,explanation,programming,setup,对每一节还可指定其搜索关键字(脚注是K),关键字可以是一个或多个,汉字和英文均可。
----具体操作如下:进入MicrosoftWord中文版,选择:文件/新建,先输入第一节的内容:输入第一节的标题:“目录”,将光标移到“目录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入:$符号,这时文档下方出现脚注编辑窗口,光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节的标题:“目录”,有时看不到文档下方的脚注窗口,这只要将系统菜单中“视图”的“脚注”选上。
----下面定义这一节的跳转名,将光标移到“目录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入:#符号,这时文档下方出现脚注编辑窗口,光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节的跳转名:“contents”(有时看不到文档下方的脚注窗口,这只要将系统菜单中“视图”的“脚注”选上)定义这一节的搜索关健字。将光标移到“目录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入:k符号,这时文档下方出现脚注编辑窗口,光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节的搜索关健字,搜索关健字可以是中文或英文,一个或多个,中间用分号(即;)隔开,这儿我们输入:目录;目次;contents。
----最后定义这一节的顺序号。顺序号相当于一本书中各章节的页码。将光标移到“目录”的前面,选择系统菜单的“插入”,选“脚注和尾注”,选“脚注”和“自定义标记”,输入: 符号,这时文档下方出现脚注编辑窗口,光标也自动落在文档下方的脚注编辑窗口中,在光标处接着输入这一节顺序号,如:0001,0002,0003等。这儿我们输入:0001.
----这样,第一节的脚注标记全部作完。
----第二节的脚注标记作法一样。(第一节和第二节要有分页符,选择系统菜单的“插入”,选“分隔符”,“分页符”)。
----在帮助文件中,当用户在按了绿色的跳转文本,就应该跳转到对应的章节,如何定义一个热点跳转呢?因为我们已经定义了第一节的跳转名,只要将跳转文本与要跳转到的那一节的跳转名联系起来,跳转文本在RTF文件中是带双下划线的文本,以上例操作如下:
----选择系统菜单上的“格式”/“字体”,选择“字体”/“下划线”,选“双线”,然后开始输入热点文本,这儿我们输入“概述”,输入完热点文本,清除双下划线格式,操作:选择系统菜单上的“格式”/“字体”,选择“字体”/“下划线”,选“无”,清除双下划线格式后,紧接着选择隐藏文本格式,输入跳转目的地的跳转名,操作:选择系统菜单上的“格式”/“字体”,选择“字体”/“效果”,选“隐藏”,输入跳转目的地的跳转名,这儿输入“description”,输入完清除隐藏文本格式。清除隐藏文本格式的操作:选择系统菜单上的“格式”/“字体”,选择“字体”/“效果”,将“隐藏”复选框除去。
----如何定义热点弹出说明。它与以上热点跳转文本一样,只不过它是带单下划线的文本。操作如下:选择字符的单下划线格式,输入弹出式热点文本,如上例输入的是“单下划线的指定说明热点”,操作如下:选择系统菜单上的“格式”/“字体”,选择“字体”/“下划线”,选“单线”,然后开始输入热点文本,这儿我们输入“单下划线的指定说明热点”,输入完热点文本,清除单下划线格式,紧接着选择隐藏文本格式,输入跳转目的地的跳转名,这儿是弹出窗口的跳转名:这儿输入“my_pop_up”,输入完清除隐藏文本格式。弹出窗口一节要与其它章节用分页符分开。只要指定跳转名即可。
----我们经常看到的“参阅”、“seealso”弹出窗口就是这样作出来的。
----如何对图形指定热点跳转。在RTF文件中使用图形,可以用语句:{bmc图形文件名},bmc表示图形放在中间,bml表示图形放在左边,bmr表示图形放在右边,图形文件可以是一般的BMP位图和SHG热点跳转图形文件。
----如用户在图形某处按动时,会弹出一个说明窗口。而热点图形.shg文件由.bmp位图文件通过工具软件HotspotEditor编辑而来。HotspotEditor是随VisualBasic(在VB的HC目录下)和VisualFoxpro(在VFP的HELPCOMP目录下)发布的。执行文件名是SHED.EXE。操作:运行SHED.EXE,选File/Open,装入要用到的位图文件。这儿用一人头形位图man.bmp,在图形上拖动,产生一个个热点,双击任一热点区域,出现一对话框,只要在ContextString处输入要跳转或弹出目的地的跳转名。热点类型Type处选取Jump跳转式或Popup弹出式。热点区域边框属性Attribute选取可见Visible或不可见Invisible。在这个例子中ContextString输入eye_popup,Type选取Popup,Attribute选取Invisible(隐去热点区域的边线).
----以d:winwordman.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:winwordMyhelp.rtf)
----以上hpj文件用任何编辑器编辑后以HPJ文件存盘。
对帮助项目文件HPJ进行编译,形成HLP文件
----编译要用编译工具HC.EXE,在VB的HC目录下有HC.EXE,在VFP的HELPCOMP目录下有HC31.EXE和HC35.EXE,任选一个使用。操作:HC文件名,或HC31文件等,如:HC31Myhelp.hpj
--------------------------------------------------------------------------------
----现在介绍第二部分,对帮助文件编程。
----帮助文件的最终目的是要应用到自己程序中。现以最常用的三种开发工具VB,VFP,DELPHI分别举一最简单例子。
VB
----进入VB,选File/NewProject,出现一空白窗体Form1,加一个通用对话框CommondDialog1到Form1,点取MenuEditor,设置一菜单,一级菜单有二项:(Caption分别为:)File,Help,而File的下一级菜单Exit,Help的下一级菜单为Contents,KeyWordsSearch,About,对应的Name属性分别为:mnuFile,mnuHelp,mnuExit,mnuContents,mnuSearch,mnuAbou。假定帮助文件是D:WINWORDDXCHLP.HLP。
----程序代码如下:
PrivateSubForm_Load()
CommonDialog1.HelpFile="d:winworddxchlp.hlp"
EndSub
PrivateSubmnuContents_Click()
WithCommonDialog1
.HelpCommand=cdlHelpContents'cdlHelpContents是显示目录的命令
.ShowHelp
EndWith
EndSub
PrivateSubmnuSearch_Click()
WithCommonDialog1
.HelpCommand=cdlHelpKey'cdlHelpKey是显示关健字搜索的命令
.ShowHelp
EndWith
EndSub
PrivateSubmnuAbout_Click()
aboutform.Show1'以模态显示"关于"窗口
EndSub
PrivateSubmnuExit_Click()
End
EndSub
以上可用调用动态联结库的方法,代码如下:
(1)模块文件:
GlobalConstHELP_CONTENTS=&H3&
GlobalConstHELP_KEY=&H101
DeclareFunctionWinHelpLib"user32"Alias"WinHelpA"
(ByValhwndAsLong,ByVallpHelpFileAsString,ByVal
wCommandAsLong,ByValdwDataAsLong)AsLong'
必须同一行;为WIN95,NT
'DeclareFunctionWinHelpLib"User"(ByValhwndAs
Integer,ByVallpHelpFileAsString,ByValwCommandAs
Integer,dwDataAsAny)AsInteger'必须同一行;为WIN3.X
(2)窗体文件
PrivateSubForm_Load()
App.HelpFile="d:winworddxchlp.hlp"
EndSub
PrivateSubmnuContents_Click()
i=WinHelp(Form1.hwnd,App.HelpFile,HELP_CONTENTS,0)
EndSub
PrivateSubmnuKeySearch_Click()
i=WinHelp(Form1.hwnd,App.HelpFile,HELP_KEY,0)
EndSub->