为您的应用程序添加上下文帮助






4.77/5 (10投票s)
2004年6月7日
2分钟阅读

89837
本文档简要演示了为您的应用程序添加上下文帮助的功能。
引言
为您的应用程序添加上下文帮助可以扩展其用途并提升用户体验。上下文帮助可以通过与问号相关的箭头光标来识别。支持此功能的对话框可以通过对话框右上角的“?”图标来识别。如何安装 Microsoft HTML Help 1.4 SDK… 请阅读 Microsoft 上的相关内容。
用户增强
如果用户难以理解某些控件的功能,解决方案是单击该图标,将光标移动到问题控件中,然后单击鼠标左键。另一种方法是,对于具有输入焦点但未生成命令消息的控件(例如编辑控件),只需按下 F1 键即可达到相同的效果。一个弹出窗口将出现,其中包含您声明的帮助文本。
四个步骤
使用 HTML 弹出窗口添加上下文帮助可以描述为四个步骤
- 在“对话框属性”的“扩展样式”页面中启用对话框的上下文帮助。
- 在您的“字符串表”中为控件分配帮助文本。
- 在对话框类中捕获
WM_HELPINFO
消息。 - 将下面的代码复制粘贴到您想要的类中。
BEGIN_MESSAGE_MAP(CDlg, CDialog) ON_WM_HELPINFO() END_MESSAGE_MAP()
重要的是,您在字符串表中使用的 ID 与您命名的控件名称相同,请尝试使用“字符串属性”对话框中的组合框。
准备好消息处理程序
WM_HELPINFO
消息的消息处理程序如下所示
afx_msg BOOL OnHelpInfo(HELPINFO* pHelpInfo); BOOL CDlg::OnHelpInfo(HELPINFO* pHelpInfo) { // This method does all the work ShowContextHelp(CWnd::FromHandle((HWND)pHelpInfo->hItemHandle), pHelpInfo->MousePos, pHelpInfo->iCtrlId); // We will proceed the message, so skip the base class // return CDialog::OnHelpInfo(pHelpInfo); return TRUE; }
如注释中所述,ShowContextHelp(...)
是引起我们注意的方法。该方法接受三个参数:指向窗口的指针、发生帮助请求的 POINT
结构以及控件的标识符。
void CDlg::ShowContextHelp(CWnd* pWnd, POINT pt, int iCtrlID) { CString s; // Load help text from String Table if(s.LoadString(iCtrlID)) { HH_POPUP hPop; // HTML Help popup structure // Initialize structure to NULLs memset(&hPop, 0, sizeof(hPop)); // Set size of structure hPop.cbStruct = sizeof(hPop); // Yellow background color hPop.clrBackground = RGB(255, 255, 208); hPop.clrForeground = -1; // Font color hPop.rcMargins.left = -1; hPop.rcMargins.bottom = -1; hPop.rcMargins.right = -1; hPop.pt = pt; hPop.pszText = s; // Message from String Table hPop.pszFont = NULL; // Font HtmlHelp(pWnd->GetSafeHwnd(), NULL, HH_DISPLAY_TEXT_POPUP, (DWORD)&hPop); } // End if found a help string for this request } // End ShowContextHelp(...)
HH_POPUP
结构用于在弹出窗口中显示上下文帮助。该结构具有用于设置前景色/背景色的成员,用于调整弹出窗口的显示位置,以及用于选择要使用的字体。如果您跳过第一个参数,输入 NULL
,您会发现弹出窗口的行为类似于无模式对话框,这并非您的意图。
HtmlHelp(...)
方法的第二个参数指向一个文件对象,字符串资源也可以放置在该对象中。
希望对您有所帮助。