65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (10投票s)

2004年6月7日

2分钟阅读

viewsIcon

89837

本文档简要演示了为您的应用程序添加上下文帮助的功能。

Sample Image - ContextHelp.gif

引言

为您的应用程序添加上下文帮助可以扩展其用途并提升用户体验。上下文帮助可以通过与问号相关的箭头光标来识别。支持此功能的对话框可以通过对话框右上角的“?”图标来识别。如何安装 Microsoft HTML Help 1.4 SDK… 请阅读 Microsoft 上的相关内容。

用户增强

如果用户难以理解某些控件的功能,解决方案是单击该图标,将光标移动到问题控件中,然后单击鼠标左键。另一种方法是,对于具有输入焦点但未生成命令消息的控件(例如编辑控件),只需按下 F1 键即可达到相同的效果。一个弹出窗口将出现,其中包含您声明的帮助文本。

四个步骤

使用 HTML 弹出窗口添加上下文帮助可以描述为四个步骤

  1. 在“对话框属性”的“扩展样式”页面中启用对话框的上下文帮助。
  2. 在您的“字符串表”中为控件分配帮助文本。
  3. 在对话框类中捕获 WM_HELPINFO 消息。
  4. 将下面的代码复制粘贴到您想要的类中。
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(...) 方法的第二个参数指向一个文件对象,字符串资源也可以放置在该对象中。

希望对您有所帮助。

© . All rights reserved.