首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理CMFCPropertySheet / CMFCPropertyPage上的“帮助”按钮?

如何处理CMFCPropertySheet / CMFCPropertyPage上的“帮助”按钮?
EN

Stack Overflow用户
提问于 2017-07-23 16:36:22
回答 1查看 90关注 0票数 0

根据MSDN:

CPropertySheet中的帮助仅由F1键和帮助按钮支持。默认情况下,帮助按钮将出现在应用程序框架中。用户无需进行任何干预。当用户为属性表中的每个页面添加帮助信息时,帮助机制会在单击“帮助”按钮时自动显示该页的帮助。

我认为CMFCPropertySheet也是如此。因此,我首先开始尝试处理WM_HELPINFO处理程序:

代码语言:javascript
复制
void COtherSettingsEmailInfoPage::HtmlHelp(DWORD_PTR dwData, UINT nCmd)
{
    HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.html"), HH_DISPLAY_TOPIC);

    //CMFCPropertyPage::HtmlHelp(dwData, nCmd);
}

没起作用。然后我添加了一个IDHELP按钮单击处理程序:

代码语言:javascript
复制
void COtherSettingsEmailInfoPage::OnHelp()
{
    HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.html"), HH_DISPLAY_TOPIC);
}

没起作用。

那么,当用户按下工作表上的“帮助”按钮时,应该如何显示正确的帮助主题呢?迷惑了。

更新

我在纸上和纸上都试过这个--不起作用:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-23 18:25:52

最后把这件事解决了。

首先,OI在我的应用程序中遇到了一个小问题,CWinApp使用了错误的文件名。这是在我对应用程序进行更改时造成的。所以我在InitInstance里修正了这个

代码语言:javascript
复制
CString strHelp = GetProgramPath();
strHelp += _T("MeetSchedAssist.CHM");
free((void*)m_pszHelpFilePath);
m_pszHelpFilePath = _tcsdup(strHelp);

接下来,我必须向CMFCPropertySheet类添加一个通知处理程序:

报头

代码语言:javascript
复制
afx_msg void OnPsnHelp(NMHDR* hdr, LRESULT* res);   // Our help button message handler

代码语言:javascript
复制
ON_NOTIFY(PSN_HELP, 0, &COtherSettingsEmailInfoPage::OnPsnHelp)

...
...

void COtherSettingsEmailInfoPage::OnPsnHelp(NMHDR* hdr, LRESULT* res)
{
    HtmlHelp((DWORD_PTR)_T("HelpOptionsEmail.htm"), HH_DISPLAY_TOPIC);
}

现在,它正确地显示了帮助主题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45267445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档