我正在尝试使用Desktop Bridge将我的一些MFC应用程序打包为Windows 10应用程序。
我无法轻松获取我的HTML帮助文件(CHM)并使用已安装的程序(VS的新版本不包含帮助文件,并使用解决方法包含该文件会生成一个文件,我没有权限访问)。
所以这让我想知道在我的网站上托管在线帮助。出现的一些问题是如何最好地托管多个帮助主题,以及如何覆盖(在应用程序范围内)访问帮助主题的行为。 (我的应用程序是基于对话框的。)
所以我只是想知道其他人是否已经这样做了。我很想知道如何解决这些问题。我无法在网上找到任何东西。
答案 0 :(得分:1)
我在单个文档中托管我的html帮助,使用html锚点来获取感兴趣的主题。如果您有多个页面,请相应地调整MyHelp。
我实际上并没有使用桌面桥,但想知道你是否尝试过这样的事情:
BOOL CMyDialog::OnHelpInfo(HELPINFO* pHelpInfo)
{
MyHelp(_T("HIDD_MYDIALOG")); // HTML anchor goes here
return CDialog::OnHelpInfo(pHelpInfo);
}
...
// a global helper function for showing help
void MyHelp(LPCTSTR anchor)
{
extern CMyApp theApp;
TCHAR *cp, buffer[1000];
// look for the html document in the program directory
strcpy(buffer, _T("file:///"));
DWORD dw = GetModuleFileName(theApp.m_hInstance, buffer + strlen(buffer), sizeof(buffer));
if (cp = strrchr(buffer, '\\'))
{
strcpy(cp+1, _T("MyHelpDocument.htm#"));
strcat(cp+1, anchor);
// for some reason, I don't want the default browser to open, just the Internet Explorer
ShellExecute(NULL, _T("open"), _T("iexplore"), buffer, NULL, SW_SHOWNORMAL);
// or, for real online help, use just '_T("http://myurl.com/myonlinehelpdocument.html#") + anchor'
// instead of 'buffer' and ommit all before ShellExecute()
}
}
我不确定ShellExecute是否会像以前在商店应用中那样运行。但肯定会有办法以某种方式打开URL。如果Internet Explorer ActiveX能够在应用程序内显示帮助页面,您可能需要尝试。