c++ - 在线托管帮助内容

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

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

我在获取我的 HTML 帮助文件 (CHM) 并使用已安装的程序时遇到了无穷无尽的麻烦(新版本的 VS 不包含帮助文件,使用解决方法来包含该文件会导致文件我没有访问权限)。

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

所以我想知道是否还有其他人这样做过。我很想回顾一下这些问题是如何解决的。我在网上找不到任何东西。

最佳答案

我将我的 html 帮助放在一个文档中,使用 html anchor 到达感兴趣的主题。如果您有多个页面,请相应地调整 MyHelp。

我实际上并没有使用 Desktop Bridge,但想知道您是否尝试过这样的操作:

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 是否可以在应用程序内显示您的帮助页面。

关于c++ - 在线托管帮助内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47398674/

相关文章:

c++ - 如何在 Ubuntu 的 C++ 中执行我的程序中的程序?

c++ - MFC C映射。将 cmap 存储在 cmap 中

windows-10 - robocopy 是否总是为 "/S"添加选项 "/E"?

PHP 7.0 cURL 不起作用 - Windows 10 64 位上的 WAMP

c++ - 使用 GDI+ 填充部分圆角矩形

python - 在 Windows 10 上导入 win32api 时出现 DLL 错误

C++ 嵌套 for 循环和中断

c++ - gdb 显示不正确的 double 值

C++错误: declaration of ‘~Destructor’ as member of ‘Class’

c++ - 将字符串添加到 CEdit 文本框而不是 CCombobox