根据MSDN:
CPropertySheet中的帮助仅由F1键和帮助按钮支持。默认情况下,帮助按钮将出现在应用程序框架中。用户无需进行任何干预。当用户为属性表中的每个页面添加帮助信息时,帮助机制会在单击“帮助”按钮时自动显示该页的帮助。
我认为CMFCPropertySheet也是如此。因此,我首先开始尝试处理WM_HELPINFO处理程序:
void COtherSettingsEmailInfoPage::HtmlHelp(DWORD_PTR dwData, UINT nCmd)
{
HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.html"), HH_DISPLAY_TOPIC);
//CMFCPropertyPage::HtmlHelp(dwData, nCmd);
}没起作用。然后我添加了一个IDHELP按钮单击处理程序:
void COtherSettingsEmailInfoPage::OnHelp()
{
HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.html"), HH_DISPLAY_TOPIC);
}没起作用。
那么,当用户按下工作表上的“帮助”按钮时,应该如何显示正确的帮助主题呢?迷惑了。
更新
我在纸上和纸上都试过这个--不起作用:
BOOL COtherSettingsEmailInfoPage::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
LPPSHNOTIFY lppsn = (LPPSHNOTIFY)lParam;
if (lppsn->hdr.code == PSN_HELP)
{
AfxMessageBox(_T("Boo2"));
}
return CMFCPropertyPage::OnNotify(wParam, lParam, pResult);
}发布于 2017-07-23 18:25:52
最后把这件事解决了。
首先,OI在我的应用程序中遇到了一个小问题,CWinApp使用了错误的文件名。这是在我对应用程序进行更改时造成的。所以我在InitInstance里修正了这个
CString strHelp = GetProgramPath();
strHelp += _T("MeetSchedAssist.CHM");
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath = _tcsdup(strHelp);接下来,我必须向CMFCPropertySheet类添加一个通知处理程序:
报头
afx_msg void OnPsnHelp(NMHDR* hdr, LRESULT* res); // Our help button message handler源
ON_NOTIFY(PSN_HELP, 0, &COtherSettingsEmailInfoPage::OnPsnHelp)
...
...
void COtherSettingsEmailInfoPage::OnPsnHelp(NMHDR* hdr, LRESULT* res)
{
HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.htm"), HH_DISPLAY_TOPIC);
}现在,它正确地显示了帮助主题。
https://stackoverflow.com/questions/45267445
复制相似问题