在应用程序中启动帮助
如果当前系统安装了HtmlHelp阅读器Hh.exe,就可以直接运行HtmlHelp Workshop制作的CHM帮助文件了(通常,Windows系统就已经安装有Hh.exe)。在资源管理器中,双击编译过的CHM文件就可以运行此帮助文件。这里将要介绍如何在应用程序中启动CHM文件。
在应用程序中对CHM帮助文件的调用由HtmlHelp API函数HtmlHelp()来完成,由HtmlHelp.dll动态链接库提供。为了能够在程序中使用该函数,需要将htmlhelp.lib、htmlhelp.h等文件加入到工程。可在VC的Project菜单下的Setting菜单项所启动的设置对话框中对其进行配置。

图21 设置HtmlHelp.h文件的路径
首先,在C/C++(www.cppentry.com)选项页中设置要包含的HtmlHelp.h头文件的存放路径。在Category中选取Preprocessor选项后,将出现如图21所示的参数设置界面,在Additional include directories编辑框中输入HtmlHelp.h头文件的存放路径。然后再到Link选项页中对要包含的Lib库进行设置。先在Category中选取Input,将出现如图22所示的参数设置界面。
在其Additional library path编辑框中输入要包含的HtmlHelp.lib库文件的存放路径。在完成上述两步路径设置后就可以添加HtmlHelp.h头文件和HtmlHelp.lib库文件到工程了。HtmlHelp.h头文件的添加非常简单,只需在工程的stdafx.h最后一个#include语句后面添加一条#include "htmlhelp.h"即可。对于HtmlHelp.lib库文件的添加,仍是在Link选项卡中进行,将Category该回到General,并在图23所示的界面中,在Object/libraries module编辑框中添加HtmlHelp.lib即可。
完成上述设置的对话框将可以直接使用HtmlHelp()函数。该函数原形为:
HWND HtmlHelp(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD dwData);
参数hwndCaller为调用HtmlHelp()的窗口句柄,pszFile为文件、URL或是经过编译的HTML文件的路径,uCommand指定了要执行的动作,dwData为uCommand所需要的参数。

图22 设置HtmlHelp.lib库的路径

图23 加入HtmlHelp.lib库文件
对于CHM帮助文件的启动,应将uCommand参数设置为HH_DISPLAY_TOPIC,这时dwData可以为0或是一个指向CHM帮助文件的指针。如果需要在启动CHM帮助文件时显示特定的帮助页面,可以在pszFile所指向的CHM帮助文件存放路径后添加带有"::"前缀的页面名称。例如,下面这段代码将在程序中启动编译过的CHM帮助文件,并显示其中的a.htm页面:
// 得到可CHM文件的路径 char exeFullPath[MAX_PATH]; CString strPath; GetModuleFileName(NULL, exeFullPath, MAX_PATH); strPath = CString(exeFullPath); strPath = strPath.Left(strPath.ReverseFind('\\')); strPath += "\\Sample72.chm"; // 设置显示的初始页面 strPath += "::a.htm"; char cCommandLine[MAX_PATH]; ::strcpy(cCommandLine, strPath); // 显示CHM帮助文件 HtmlHelp(GetSafeHwnd(), cCommandLine, HH_DISPLAY_TOPIC, 0); |
小结
本文较为全面的对HtmlHelp联机帮助系统的制作、编译以及在应用程序中的调用做了介绍。通过本文所述方法将能够制作出一个初具专业水准的帮助系统。HtmlHelp Workshop工具除了可以制作软件的帮助系统外,还可以用其来制作.chm格式的电子图书。与制作帮助系统一样,其关键仍是对内容的组织与编排。