1

我在这里很困惑。我已将我的 CHM 帮助从 HtmlHelp Workshop 迁移到 HelpNDoc。我编译了 CHM 文件并更新了我的 MFC 项目以指向正确的主题:

HtmlHelp((DWORD_PTR)_T("msa-options-publishers-db.html"), HH_DISPLAY_TOPIC);

上述方法适用于我之前的 CHM 文件。当我调用此调用时,会发生以下情况:

CHM

它没有找到它。现在我在这里遇到了困难,因为如果我在 IDE (VS2017) 中单击 F1,它会将我带到这里。本文提供了一个显示主题的示例:

HWND hwnd =
   HtmlHelp(
            GetDesktopWindow(),
            "c:\\Help.chm::/Intro.htm>Mainwin",
            HH_DISPLAY_TOPIC,
            NULL) ;

上述HtmlHelpAPI 调用采用 4 个参数。然而,在我的CDialogEx派生类中,我只有两个参数:

Html帮助

所以我需要找到一种方法来打开我的 CHM 文件中的任何主题,这些主题是用 HelpNDoc 编译的。

更新

在进一步的研究中,我找到了讨论HtmlHelp我正在使用的 API 调用的主题(在CWinApp课堂上找到)。它指出:

参数

dwData指定附加数据。使用的值取决于 nCmd 参数的值。

nCmd指定请求的帮助类型。有关可能值的列表以及它们如何影响 dwData 参数,请参阅关于 Windows SDK 中的 HTMLHelp API 函数中描述的 uCommand 参数。

所以我们在这里结束了,在那里我们获得了一个关于HH_DISPLAY_TOPIC. 我们已经绕了一圈。仔细看它说:

指定已编译的帮助 (.chm) 文件,已编译的帮助文件中的特定主题。

要指定定义的窗口类型,请插入一个大于 (>) 字符,后跟窗口类型的名称。

所以我的代码应该还是没问题的。

4

1 回答 1

1

你不会相信这个问题的解决方法是多么简单!

我用 HTML Help Workship API 窗口做了一个测试:

测试

唯一有效的是当我用作htm后缀而不是html. 看:

结果

于 2018-06-12T12:14:31.043 回答