跳转到内容

Windows 编程/编译 HTML 帮助

来自维基教科书,开放世界中的开放书籍

在大多数程序中,菜单将有一个名为“帮助”的弹出项。在帮助菜单中,通常有一个“内容”或“索引”或“主题”选项。单击这些选项时,会弹出一个帮助框。

这些帮助框被称为“编译 HTML 帮助模块”,或 .chm 文件。这些帮助文件可以使用微软 HTML 帮助工作室从 HTML 源代码编译,微软提供免费下载。

制作 HTML 帮助模块

[编辑 | 编辑源代码]

HTML 帮助模块可以从包含 HTML、DHTML、CSS 和 JavaScript 混合的源文件编译。这与用于编写网页的 HTML 完全相同,因此拥有网页经验的人在创建 HTML 帮助模块方面将占有优势。HTML、CSS 和 JavaScript 是非常适合图形应用程序的语言,但功能远不如 C 或 VB。帮助工作室包含许多不同的选项,例如您是否要包含一个索引窗口,是否要允许搜索和索引,是否要有一个目录,等等。可以选择一个默认页面,在首次加载帮助模块时显示。帮助模块中的页面可以使用超链接链接到模块中的其他页面、计算机上的其他文件,甚至互联网上的资源。

HTML 帮助 API

[编辑 | 编辑源代码]

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 帮助模块

[编辑 | 编辑源代码]

HTML 帮助工作室顶部有 5 个按钮,从左到右依次是

新建
创建一个新的 HTML 文件进行编辑
打开
打开一个现有的 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/
华夏公益教科书