使用Visual C ++ HtmlHelp链接到HelpnDoc编译的CHM中的特定主题

时间:2018-06-12 11:47:42

标签: chm html-help helpndoc

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

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

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

CHM

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

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

以上HtmlHelp API调用需要4个参数。然而,在我的CDialogEx派生类中,我只有两个参数:

HtmlHelp

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

更新

在进一步研究中,我找到了讨论我正在使用的HtmlHelp API调用的主题(在CWinApp类中找到)。它声明:

参数

  

dwData指定其他数据。使用的值取决于值   nCmd参数。

     

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

因此,我们最终here向我们提供了有关HH_DISPLAY_TOPIC的详细信息的链接。我们走了一圈。仔细观察它:

  

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

     

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

所以我的代码应该还可以。

1 个答案:

答案 0 :(得分:1)

你不会相信这个问题的解决方案有多简单!

我使用HTML Help Workship API窗口进行了测试:

Test

唯一有效的是我使用htm作为后缀而不是html。参见:

Results