搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

CHM帮助文件的编程实现

chm文件是微软公司开发的新一代基于html的帮助文件格式,它一问世就以其易用性和新颖的界面赢得了广大编程一族的喜爱,目前大多数软件都用它来制作应用程序的帮助文件。


关于html help workshop的用法已有文章介绍,在这里笔者着重讲述在实际编程中如何调用chm文件,从而建立起应用程序的帮助系统,本文以visualbasic 6.0为语言平台。


声明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”等均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。


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

()

相关文章:
© 2006   www.java-asp.net