我遵循了此处提到的所有说明:
http://help.adobe.com/en_US/robohelp/robohtml/WS5b3ccc516d4fbf351e63e3d11aff59c571-7f43.html
我的 CMainFrame::HtmlHelp 覆盖处理程序如下所示:
void CMainFrame::HtmlHelp(DWORD_PTR dwData, UINT nCmd)
{
// TODO: Add your specialized code here and/or call the base class
CWaitCursor wait;
// Get the path to the Help system
CWinApp* pApp = AfxGetApp();
ASSERT_VALID(pApp);
// Set the path to server-based help
CString csOnlineHelpPath = _T("C:\\Help\\Final\\index.htm");
PrepareForHelp();
// must use top level parent (for the case where m_hWnd is in DLL)
CWnd* pWnd = GetTopLevelParent();
// finally, run the RoboHelp Help engine
if (!RH_ShowHelp(pWnd->m_hWnd, csOnlineHelpPath, nCmd, dwData))
AfxMessageBox(AFX_IDP_FAILED_TO_LAUNCH_HELP);
}
问题是永远不会打开帮助。我试图调试 RoboHelp_CSH.cpp 文件,我发现在 #3267 行的代码
MultiByteToWideChar(CP_ACP, MB_USEGLYPHCHARS, szTempFile, (int)uLen, bstr, uLen+1);
bstr 缓冲区末尾有一个额外的字符,这使得下面的代码
hr=s_pstBrowser->Navigate(bstr, &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
HWND hWnd;
hr=s_pstBrowser->get_HWND((long*)&hWnd);
if (SUCCEEDED(hr))
{
::SetForegroundWindow(hWnd);
}
::SysFreeString(bstr);
}
失败。原来的 szTempFile 有下面的数据
C:\Users\sdancer\AppData\Local\Temp\robohelp_csh.htm
和 bstr 以下(DC2 是我在记事本 ++ 中显示的符号,在 VS2008 旁边我看到一个向上和向下箭头)。C:\Users\sdancer\AppData\Local\Temp\robohelp_csh.htm DC2
我在这里做错了什么?