在线托管帮助内容

时间:2017-11-20 18:22:00

标签: c++ mfc windows-10 desktop-bridge

我正在尝试使用Desktop Bridge将我的一些MFC应用程序打包为Windows 10应用程序。

我无法轻松获取我的HTML帮助文件(CHM)并使用已安装的程序(VS的新版本不包含帮助文件,并使用解决方法包含该文件会生成一个文件,我没有权限访问)。

所以这让我想知道在我的网站上托管在线帮助。出现的一些问题是如何最好地托管多个帮助主题,以及如何覆盖(在应用程序范围内)访问帮助主题的行为。 (我的应用程序是基于对话框的。)

所以我只是想知道其他人是否已经这样做了。我很想知道如何解决这些问题。我无法在网上找到任何东西。

1 个答案:

答案 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能够在应用程序内显示帮助页面,您可能需要尝试。