首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从::WinHelp升级到CHM?

如何从::WinHelp升级到CHM?
EN

Stack Overflow用户
提问于 2020-03-23 12:30:58
回答 1查看 234关注 0票数 0

我在C++中有一个很大的遗留项目。它仍然可以很好地编译Borland C++ 5.02,没有任何问题,除了一个问题:帮助系统不工作。在内部,它调用API函数

代码语言:javascript
复制
::WinHelp(0, GetHelpFile().c_str(), HELP_CONTEXT, helpFileContextId);
::WinHelp(0, GetHelpFile().c_str(), HELP_QUIT, 0);

然后似乎依赖于Windows来管理帮助系统。当然,对于Windows10,它不起作用。

我已经成功地将HLP文件转换为CHM格式。当我单击新的.CHM文件时,它将正常打开。

问题是:有没有一种简单的方法可以将遗留代码切换到.CHM文件,而不需要太多重写?

我知道我可以将所有出现的::WinHelp替换为::HtmlHelp,但这似乎需要大量重写。有没有更简单的方法?

EN

回答 1

Stack Overflow用户

发布于 2020-03-23 18:31:17

如果您真的成功地将包含上下文相关帮助的旧WinHelp文件转换为CHM,那么大部分工作已经完成。

我不是一个C++程序员-更多的工作是帮助创作和其他编程语言,例如Visual Basic (.net)。但是我记得一些老东西..。

你可以在User Assistance for your programs上找到在Windows上连接HTMLHelp的教程。

  • 请查看标题为“将帮助连接到程序”的主题的第一部分。
  • 教程的标题是“将HTML帮助连接到C++/MFC程序”。

请注意,我没有尝试这一点,但希望将其作为一个想法传递给您的需求。搜索"Override the Default Context Help Behavior“并查看代码部分以了解您的要求

在主框架类中,使用类向导创建一个WinHelp函数(是,WinHelp,而不是HtmlHelp):

代码语言:javascript
复制
void CMainFrame::WinHelp(DWORD dwData, UINT nCmd)
{
CWinApp* theApp = AfxGetApp();
CString helpFilePath = theApp->m_pszHelpFilePath;
switch ( dwData ) {
case HIDR_MAINFRAME:
case HIDR_MFCWIZTYPE:
case HIDD_ABOUTBOX:
case HIDD_TESTDLG:
//Topics that need to go into the main window.
HtmlHelp(m_hWnd, helpFilePath, HH_HELP_CONTEXT, dwData);
break;
case WHATEVER
//Topics that need to go into a different secondary window
...
break;
default:
//All the rest are popups
HtmlHelp(m_hWnd, helpFilePath, HH_HELP_CONTEXT, dwData);
break; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60807968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档