기존 MFC 응용 프로그램에서 유지 관리를하고 있습니다. 사용자가 앱의 상단에있는 메인 메뉴에서 → 도움말을 선택하면 사용자 정의 OnHelp()
이 호출되어야합니다. 필자의 연구 결과에 따르면 MFC는 일반적으로이 명령을 자동으로 가로 채고 도움말 파일 자체를 불러옵니다. 그러나이 명령을 무시하고이 메시지를 가로 챌 수 있습니다.MFC 사용자 지정 HtmlHelp
BEGIN_MESSAGE_MAP(MyApp, MyBaseApp)
//{{AFX_MSG_MAP(MyApp)
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
ON_COMMAND(ID_HELP, OnHelp)
//}}AFX_MSG_MAP
// Standard file based document commands
END_MESSAGE_MAP()
는 "정보"OnAppAbout()
가 호출되는,하지만 내 OnHelp()
(MFC 여전히를 차단하고 그 자체로 도움을 제공합니다) : 내 메시지 맵이 있습니다. 내 구현은 매우 간단합니다 :
void MyApp::OnHelp()
{
// This never gets called
MessageBox(NULL, "HtmlHelp: MyApp", "Hey", MB_OK);
CString csHelpFile;
csHelpFile.Format("%s/MyHelp.chm", MyDoc::GetHelpPath());
::HtmlHelp(
NULL,
csHelpFile,
HELP_WM_HELP,
NULL);
}
내 메시지 박스가 결코 나타나지 않습니다 때문에 호출하기 아니에요 알고있다 (I이 디버깅하려면 Visual Studio를 사용할 수 없습니다; 메시지 상자 만 해당). 또한 메시지 맵 및 이와 유사한 구현을 사용하여 CMDIFrameWnd
에 쐐기를 넣으려고했지만 성공하지 못했습니다 (도움말 메뉴 항목과 다른 항목이 여기에 구현되어 잘 작동 함). 내 자신의 사용자 지정 도움말 기능에 연결하기 위해 필요한 모든 아이디어?
당신이 ID_HELP 다른 곳에서 처리되지 확실해? 귀하의 애플 리케이션은 일반적으로 명령 메시지를 얻을 수있는 마지막 것입니다. http://msdn.microsoft.com/en-us/library/shfzay75(v=vs.90).aspx –
다른 메뉴 항목을 추가하십시오. ID_HELP2, 시도하고 함정. 그게 작동하면 뭔가 다른 ID_HELP를 가로 채고 있습니다. – snowdude