Windows 编程/编译 HTML 帮助
在大多数程序中,菜单将有一个名为“帮助”的弹出项。在帮助菜单中,通常有一个“内容”或“索引”或“主题”选项。单击这些选项时,会弹出一个帮助框。
这些帮助框被称为“编译 HTML 帮助模块”,或 .chm 文件。这些帮助文件可以使用微软 HTML 帮助工作室从 HTML 源代码编译,微软提供免费下载。
HTML 帮助模块可以从包含 HTML、DHTML、CSS 和 JavaScript 混合的源文件编译。这与用于编写网页的 HTML 完全相同,因此拥有网页经验的人在创建 HTML 帮助模块方面将占有优势。HTML、CSS 和 JavaScript 是非常适合图形应用程序的语言,但功能远不如 C 或 VB。帮助工作室包含许多不同的选项,例如您是否要包含一个索引窗口,是否要允许搜索和索引,是否要有一个目录,等等。可以选择一个默认页面,在首次加载帮助模块时显示。帮助模块中的页面可以使用超链接链接到模块中的其他页面、计算机上的其他文件,甚至互联网上的资源。
HTML 帮助工作室附带一个头文件("htmlhelp.h")和一个库文件("htmlhelp.lib"),这些文件必须在您的项目中使用,才能从您的程序中调用 HTML 帮助模块。必须在 Htmlhelp.h 文件之前包含 Windows.h,否则编译器会输出错误。Htmlhelp.h 定义了一个名为 HtmlHelp 的单一函数,可以在您的程序内部调用。
HWND WINAPI HtmlHelp(HWND hwndCaller, LPCTSTR pszFile, UINT uCommand, WORD_PTR dwData);
此函数返回一个指向 html 帮助窗口的句柄,如果您希望它这样做,您的程序可以在相对较高的级别上与该窗口交互。第一个参数是调用(父)窗口的句柄。如果设置此参数,帮助窗口将成为您窗口的子窗口,并且可以与它通信。如果将此设置为 NULL,帮助窗口将基本上是独立的。“pszFile”参数是目标帮助模块的文件名。“uCommand”可能包含许多不同的命令,其中一些非常复杂和涉及。最简单(也是最常见)的是 HH_DISPLAY_TOPIC 命令,它按正常方式显示帮助,并允许用户查看和交互帮助模块。“dwData”可以可选地包含其他数据,具体取决于所使用的命令。
如果我们想打开一个位于 c:/help/myhelp.chm 的帮助模块,可以使用以下命令
hwndHelp = HtmlHelp(hwndParent, "C:\help\myhelp.chm", HH_DISPLAY_TOPIC, NULL);
现在,假设我们要在帮助模块中打开一个特定页面。假设我们的模块包含一个名为“example.htm”的页面。我们可以通过稍微更改目标字符串来直接打开该页面
hwndHelp = HtmlHelp(hwndParent, "C:\help\myhelp.chm::example.htm", HH_DISPLAY_TOPIC, NULL);
而且,如果我们为帮助查看器创建了多个窗口,我们可以强制将页面显示在帮助查看器的特定窗口中。假设我们在 html 帮助模块中创建了一个名为“SideWin”的窗口。我们可以使用以下语法将我们的页面(example.htm)加载到 SideWin 中
hwndHelp = HtmlHelp(hwndParent, "C:\help\myhelp.chm||example.chm>SideWin", HH_DISPLAY_TOPIC, NULL);
有关更多高级选项以及对其他命令的讨论,您应该查看 MSDN 上的相关材料。
HTML 帮助工作室顶部有 5 个按钮,从左到右依次是
- 新建
- 创建一个新的 HTML 文件进行编辑
- 打开
- 打开一个现有的 HTML 文件进行编辑
- 编译
- 将当前项目编译成一个帮助模块
- 查看
- 查看当前帮助项目
- 帮助
- 打开一个帮助查看器窗口
如果单击“新建”按钮(或者从菜单栏中选择“文件>新建”),系统会提示您选择要创建的新类型。首先,您应该创建一个新项目。
选择创建新项目将打开一个向导,它将引导您完成创建新项目的步骤。
HTML 帮助项目中可能包含 3 种不同的文件类型:HTML 源文件(.HTM)、目录文件(.HHC)和索引文件(.HHK)。创建新项目后,您可以编辑并向项目添加所有这些类型的文件。每个 HTML 帮助模块只能包含一个 .HHC 文件和一个 .HHK 文件。
启动新项目并完成向导后,您将在帮助工作室窗口的左侧看到一个侧边栏,它允许您编辑项目选项、目录和索引。
在 Windows 上,可以使用以下命令将 CHM 文件提取为纯 HTML
hh.exe -decompile extracted filename.chm
这将解压缩嵌入在 filename.chm
中的所有文件到文件夹 extracted
。
您也可以使用 HTML 帮助工作室反编译 CHM 文件。文件 -> 反编译... [需要引用]
7-Zip 将 .chm 文件打开为存档,允许访问所有内容。
在 Windows 上,选择最顶部的主题,右键单击并选择打印。在弹出对话框中,选择“打印此标题及其所有子主题”,单击确定。在选择打印机之前,在 %HOMEPATH%\Local Settings\Temp 中查找名为 ~hh*.htm 的文件。这是连接的 HTML。图像引用将在打印时引用 .chm 文件。
在使用 apt 作为打包工具的 Linux 系统上,可以使用 extract_chmLib 将 CHM 文件提取为纯 HTML(第一个命令适用于基于 Debian 的操作系统)
$ sudo apt-get install libchm-bin $ extract_chmLib tero.chm tero/