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가 앱 내부에 도움말 페이지를 표시하는 경우 시도해 볼 수 있습니다.
그래서 chm 파일의 주제를 표시하려고하면 __exactly__가 발생합니까? –
@MichaelWalz : 한 달 동안 여러 가지 문제를 해결하려고 노력하면서 Microsoft에 속한 사람들과 일 해왔다. 즉, CHM 파일이 패키지의 일부로 설치되지 않으면 존재하지 않으면 열 수 없습니다. 파일을 복사했지만 파일을 열 수있는 권한이없는 경우 MFC는 도움말 파일을로드 할 수 없다는 일반 메시지를 표시합니다. 나는이 많은 쟁점들을 계속해서 탐구하고 있지만, 여기서 도움말 콘텐츠를 온라인으로 호스팅하는 것에 대해 이야기하고 싶습니다. –
CHM 파일을 HTML로 변환하는 패키지를 사용했습니다. 예 : http://www.publictalksoftware.co.uk/msa/HelpOnline/ –