如何将DELPHI与CHM的帮助文件链接在一起?(100分)

  • 主题发起人 憎恨小日本
  • 开始时间

憎恨小日本

Unregistered / Unconfirmed
GUEST, unregistred user!
比如在按下F1的时候自动弹出CHM的文件。且在单击“帮助/帮助”自动弹出CHM的文件。
是不是用ShellExecute?请附部分源码谢谢!
 
可以用shellexecute

-----
http://www.8421.org
 
科技首页 > 软件世界 > 开发指南 > 正文


星期一 12月24日 09:20

如何制作Windows联机帮助

(作者: 2000年08月07日 11:36)

设计一个好的应用程序,详细的使用说明是必不可少的。当你的应用程序设计完成以后,为了让用户更加方便容易的使用你的程序,你是否想过为你的程序设计一个联机帮助(当然,在程序设计阶段就应该注意积累文档资料,否则当程序完成以后也许你自己都忘了怎么使用,更别谈教别人使用了)。大家都见过一些专业应用程序的联机帮助,无论界面与结构都相当漂亮,有没有想过自已的开发应用程序也有这样COOL的联机帮助。下面我就为大家介绍利用Microsoft Visual Studio中的Help Workshop和Microsoft Word制作标准的Windows联机帮助。

广告
其实制作帮助的方法很简单,只要你稍稍懂得一些编程知识及Word的使用就完全可以制作出理想的标准Windows联机帮助。

首先我们需要利用Word制作帮助的主题文件(.RTF文件),RTF文件是一种特殊的文本格式,支持脚注和一些特殊格式的字符如下划线、双下划线和隐藏正文。有很多支持RTF格式的软件,你也可以用你喜欢的软件,但我个人觉得Word是比较好的一种软件。Word文件在存盘时支持许多种保存类型,只要你在保存类型中选择RTF格式即可。

在联机帮助中的每一页在RTF文件中对应为每一个主题,为了分开每个主题,我们把它们之间用分页符分开。和Word编辑普通文档一样,只要中“插入”菜单中选择“分隔符”并在弹出的小窗口中选择“分页符 "即可(一般Word的默认选择就是“分页符”)。   对每一个主题,我们需要在其开头设置脚注。在“插入”菜单中选择“脚注与尾注”,会弹出一个对话框,从“插入”项中选择 “脚注”、在“编号方式”项中选择“自定义标记”并在后面的文本框中输入你想插入的脚注标记,按下确定后就在脚注后输入脚注内容。不同的脚注代表不同的意义,常用的脚注标记及意义如下:

1、#脚注:上下文字符串脚注,用于唯一的标识一个主题,相当于ID号。

2、$脚注:标题脚注,用于定义主题的题目,该题目将显示在历史列表和书签中代表该主题。

3、K脚注:关键字脚注,用于定义主题的关键字,该关键字将出现在索引列表中代表该主题。

4、+脚注:浏览顺序脚注,用于定义主题的浏览顺序号,每一主题浏览的前后顺序将根据它区分。

在联机帮助运行中,用户可以看到带下划线或点划线的绿色文字,我们称之为“热点”。通过鼠标点击“热点”可以跳转到相应的主题或弹出相应的主题。在编写主题文件时使用三种特殊格式的字符定义“热点”,它们为:带双下划线的正文为跳转“热点”;带下划线的正文为弹出“热点”;隐藏正文紧跟在带双下划线的正文或带下划线的正文之后,用于指定相应的跳转或弹出的目标主题的上下文字符串。在Word的“格式”菜单下的“字体”选项中可以选择这些特殊格式。

至此我们的主题文件基本已经完成,但离完整的帮助系统的建立还只是走了一半的路。在编写完主题文件后,我们还需要通过Help Workshop创建工程文件。

启动Help Workshop,新建一工程文件并选择工程文件存放的目录。工程文件可以包含九个段,每个段以[段名]开头,Help Workshop窗口的左边为工程文件的内容,我们可以通过右边的按钮改变每个段的内容,其中常用的为:

1、[OPTION]段:指定帮助文件的标题,帮助文件所用的语言,指定索引文件名等。

2、[FILES]段:指定主题文件名(即我们刚刚制作的RTF文件)。

3、[MAP]段:把上下文字符串(即#脚注的内容)与上下文号联系起来,使得可以在应用程序中用F1键访问相应的帮助主题。

4、[CONFIG]段:为HELP系统定制菜单和按钮,我们一般加入“BrowseButtons()"宏用于在帮助系统中显示向前和向后按钮从而可以根据“+脚注”的内容按顺序浏览。

定义好上面这些段后,就可以编译此工程文件生成帮助文件(.HLP文件)。

得到帮助文件后,我们的HELP开发还未完成,我们还需要将HELP系统集成到我们应用程序中,即通过帮助菜单和上下文敏感访问能够调用HELP系统。下面以VB6为例,说明在应用程序中如何调用HELP系统。

只需在应用程序工程文件属性的“帮助文件名”中加入帮助文件(.HLP文件),就可以在应用程序运行中通过F1键调出帮助系统。 VB中的控件大多有HelpContext属性,如果想使用上下文敏感访问帮助系统,只要设置该控件的HelpContext属性用以指明该控件对应的可以上下文敏感访问主题的上下文号的就可。如:

Text1.HelpContext=101 '只要在文本框Text1中按下F1键就可以访问上下文号为101的帮助主题。

如果你想在菜单中调用帮助系统,则可以在应用程序中加入WINDOWS控件

“Microsoft Common Dialog Control 6.0",通过它调用帮助系统。其属性如下:

Commondialog.HelpFile属性:指定与应用程序相关的帮助文件名。

Commondialog.HelpCommand属性:指定帮助文件打开的方式。

Commondialog.HelpContext属性:指定显示帮助主题的上下文号。

Commondialog.HelpKey属性:指定显示帮助主题的关键字

例如:

Commondialog.HelpFile="c:/example.hlp" '指定打开的帮助文件名

Commondialog.HelpCommand=cdlHelpKey '用关键字方式打开帮助文件

CommondialogHelpkey="key"

Commondialog.ShowHelp '显示关键字为“key"的帮助文件

至此,一个完整的Windows联机帮助系统就开发完成了。


文章来源:赛迪网


 
Function HtmlHelp(hwd : integer;pszFile : String;uCommand :Integer;dwData :LongInt):integer; stdcall;external 'HHCtrl.ocx' name 'HtmlHelpA';


CHM帮助文件的编程实现
声明HtmlHelp API函数

由于HtmlHelp API 并没有集成在Windows操作系统的API中,因此不能直接调用HtmlHelp.lib 库函数,但
HtmlHelp API的功能位于hhctrl.ocx中,这样可以通过调用hhctrl.lib库函数来显示帮助文件,
其声明格式如下:

Declare Function Htmlhelp Lib "hhctrl.ocx"Alias "HtmlHelpA"
(ByVal hwndCaller As Long,
ByVal pszFile As String,
ByVal uCommand As Long,
ByVal dwData As Any) As Long


具体参数含义如下:
hwndCaller 调用该函数的窗体句柄
pszFile 帮助文件的名称和位置
uCommand 帮助类型
dwData 与uCommand相匹配的附加参数

定义uCommand 常数

Const HH_DISPLAY_TOPIC = &H0
Const HH_DISPLAY_INDEX=&H2
Const HH_HELP_CONTEXT = &HF
Const HH_DISPLAY_SEARCH= &H3
Const HH_DISPLAY_TEXT_POPUP= &HE
接着指定CHM文件的名称和位置:
App.HelpFile=App.Path & "/Sample.CHM"


程序调用
调用缺省主题帮助
Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_TOPIC,
ByVal "Default.htm")


此调用方式用于没有上下文ID号的情形,dwData可指定一个在CHM文件内的缺省htm文件,也可取NULL,这是
HtmlHelp API最基本的一种用法。

调用关键字帮助

Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_INDEX,
(DWORD)"关键字"))


此调用方式中dwData取索引文件(.hhk)中存在的关键字。
调用上下文敏感帮助
Call HtmlHelp(hwnd,
App.HelpFile,
HH_HELP_CONTEXT, 1000)


此调用方式用于含有映射信息的CHM文件, dwData取映射表中存在的ID号。
调用全文搜索帮助
Dim Query As HH_FTS_QUERY
Call HtmlHelp(hwnd,
App.HelpFile,
HH_DISPLAY_SEARCH,
(DWORD)& Query)


DwData参数指定一个指向HH_FTS_QUERY结构的指针。

调用弹出式帮助

Dim Popup As HH_POPUP
Call HtmlHelp(hwnd,
NULL,
HH_DISPLAY_TEXT_POPUP,
(DWORD)&Popup)


PszFile通常取NULL,也可以指定一个CHM和一个在该CHM文件中的TEXT文件,DwData用于指定一个指向HH_POPUP结
构的指针。

指定显示窗体形式
由于显示帮助文件的缺省窗体是在编译该CHM文件时的窗体,因此为了更好地控制帮助文件的显示,在制作CHM文
件时,可以自定义一个窗体形式。在程序中可以通过两种方法来调用自定义窗体。

1.当uCommand 为HH_DISPLAY_TOPIC或HH_HELP_CONTEXT时,在pszFile参数中用“>”符号,其后跟上窗体名称即可。如pszFile取:
App.HelpFile & "> MainWin"
2.用HtmlHelp函数直接指定:
Dim WinType As HH_WINTYPE
Call HtmlHelp(hwnd,
App.HelpFile &" > MainWin",
HH_SET_WIN_TYPE,
(DWORD) &WinType)


必须声明的是,以上叙述中使用的“Sample.CHM”、“Default.htm”、“关键字”、“1000”和“MainWin”等
均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。

至此,应用程序的帮助系统就建立起来了,当然,要把帮助系统做得更完美一点,还有更多的工作要做。


 

Similar threads

D
回复
0
查看
763
DelphiTeacher的专栏
D
D
回复
0
查看
703
DelphiTeacher的专栏
D
D
回复
0
查看
847
DelphiTeacher的专栏
D
顶部