
| 出版日期:2001-10-22 总期号:1065 本年期号:80 |
|
CHM帮助文件的编程实现
郑家伟 CHM文件是微软公司开发的新一代基于HTML的帮助文件格式,它一问世就以其易用性和新颖的界面赢得了广大编程一族的喜爱,目前大多数软件都用它来制作应用程序的帮助文件。 关于Html Help Workshop的用法已有文章介绍,在这里笔者着重讲述在实际编程中如何调用CHM文件,从而建立起应用程序的帮助系统,本文以Visual Basic 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”等均属举例,应用中需要根据自己的具体情况来设置这些参数的实际值。 至此,应用程序的帮助系统就建立起来了,当然,要把帮助系统做得更完美一点,还有更多的工作要做。 |
|||||||||||||||||||||||||||||