了解 [ALIAS] 部分的用途

Understanding the purpose of the [ALIAS] section

我一直在尝试将大型 WinHelp 项目转换为 HtmlHelp,以便与我的 MFC 应用程序一起使用。

我大部分时间都在工作;但是,我发现在我的应用程序中从许多上下文中调用帮助会产生完全无用的错误消息。

Failed to launch help.

看来,如果我将相应的条目添加到 [ALIAS] 部分,它就会起作用。

[ALIAS]
HID_FILE_OPEN=Html\HID_FILE_OPEN.htm

我的问题是,我真的需要为每个主题都这样做吗?使用 WinHelp,我必须添加到 [ALIAS] 部分的唯一条目是那些我想成为其他内容的别名的主题。

有没有办法 HTML 帮助必须知道 HID_FILE_OPEN 对应于帮助文件 Html\HID_FILE_OPEN.htm 而不是我为每个主题明确输入它?

简而言之 - 您必须清理映射数据文件以获得上下文相关的帮助。请根据您的需要和环境测试以下信息。

这两个文件的用途alias.hmap.h 是为了简化开发人员和帮助作者之间的协调。映射文件 link 是映射编号的 ID - 通常这可以由开发人员轻松创建并传递给帮助作者。然后,帮助作者创建了一个别名文件 link 将 ID 添加到主题名称。这是几年(几十年)前 Ralph Walden(前微软)的想法。

您可以在 Creating Context-Sensitive Help for Applications 找到更多信息。

您知道 - 将 WinHelp 转换为 HTMLHelp 非常耗时。迁移上下文 ID 是有问题的。实际上,我没有旧的 MFC 或 VB 项目与 WinHelp 连接进行测试。

一个解决方法可能是使用您的 CHM 文件的主目录,例如welcome.htm 作为所有上下文 ID 的一个目标,在 alias.hmap.h[=40= 中以正确的方式使用它].

但是,我记得HHPmod tool. I linked it from my tutorial Converting WinHelp (HLP) to HTMLHelp (CHM)

这是 Sid Penstone 编写的一个工具,用于帮助将 WinHelp 项目转换为 HTMLHelp 项目。他使用了HTMLHelp Workshop中提供的自动转换,但是当他来编辑新的HTML项目来完成转换没有完成的任务时,出现了一些问题:

  • 用于写入新 HTML 主题文件的 8 个字母的文件名与原始主题 ID 无关。
  • 如果要管理大量主题,使用自动生成的文件名会令人沮丧。我的项目每个应用程序有超过 100 个上下文 ID 和主题。
  • 如果原始 WinHelp 项目使用映射或别名文件,它们将被忽略。用户必须使用新的非直观(!)文件名手动重新创建别名文件。

HHPMod 将转换后的项目重写为新的 HTML 帮助项目,恢复原始主题 ID 名称,更正所有 link,并重写别名文件。新的 HTML 项目在编译时将 link 正确地指向应用程序的帮助上下文 ID。您仍然需要修复丢失的图像和热点,但您将使用原始主题 ID 名称。

请查看下载部分的 Notes on “Fixing Up” HTML Help Created from WinHelp Projects。向下滚动到例如在 HTML 项目中手动重写地图和别名数据