显示区分上下文的帮助
区分上下文的帮助,在本讨论中,引用的帮助涉及在对话框中的控件支持该用户访问:
通过按 F1 键。
通过右击控件 (这是什么? 帮助)。
使用问题标记指针 (这是什么? 帮助指针)。
对于每个控件要支持区分上下文的帮助,设置 HelpID 属性设置为 True。
如有必要,请添加 htmlhelp.lib 到 附加依赖项 属性,在 链接器 文件夹 Input 属性页在项目中 属性页 对话框中。
区分上下文的帮助的源消息在将 HTML 帮助项目中包含的 .txt 文件中。
创建区分上下文的帮助文本文件
使用文本编辑器创建 .txt 文件。
设置主题如下所示:
.topic 1
help text for control 1
.topic 2
help text for control 2
备注
有关更多信息,请参见“模型区分上下文的帮助”中的 HTML 帮助的联机帮助。从 帮助 菜单 (在 HTML help workshop),选择 帮助主题。
在创建 .txt 文件后,请将它添加到您的 .hhp 文件的 [文件] 部分。
若要支持资源的帮助在对话框中,必须创建一个二维数组映射控件 ID 帮助 ID (主题数字)。
创建二维数组
在 .cpp 文件中,表示对话框的每个选件类中,添加一个二维数组到选件类的末尾。 例如:
static DWORD myarray[] = { IDC_CHECK1, 1, IDC_BUTTON1, 2, IDC_EDIT1, (DWORD)-1, 0,0 };
在这个二维数组的每个匹配一个对话框控件的资源 ID 与主题编号从区分上下文的帮助文本文件。 如果不希望特定资源具有什么是为? 帮助,请使用– 1。 最后此数组对应为 0,0。
F1 到区分上下文的帮助的访问意味着用户可以按 F1,则控件具有焦点访问帮助时。
启用 F1 到区分上下文的帮助的访问
实现 WM_HELPINFO 消息处理程序 (在要 F1 到区分上下文的帮助的访问) 的各对话框选件类并实现处理程序的以下代码:
BOOL CMyDlg::OnHelpInfo(HELPINFO* pHelpInfo) { BOOL bRet = TRUE; if (pHelpInfo->iContextType == HELPINFO_WINDOW) { HWND hwnd = ::HtmlHelp( (HWND)pHelpInfo->hItemHandle, _T("my_chm.chm::/ctrlhlp.txt"), HH_TP_HELP_WM_HELP, (DWORD)(LPVOID)myarray); bRet = (NULL != hwnd); } return bRet; }
这是什么? 当用户右击控件时,帮助显示控件的帮助。
实现右击什么是为?帮助
实现一个处理程序 (请参见 映射到功能的消息) 在所需的每个对话框选件类的 WM_CONTEXTMENU 消息的哪些为? 帮助 (对于对话框中选择 ID 从对象 ID 列表)。 实现处理程序的以下代码:
void CMyDlg::OnContextMenu(CWnd* pWnd, CPoint point) { UNREFERENCED_PARAMETER(point); ::HtmlHelp( pWnd->GetSafeHwnd(), _T("my_chm.chm::/ctrlhlp.txt"), HH_TP_HELP_CONTEXTMENU, (DWORD)(LPVOID)myarray); }
当指定 .chm 文件时,预期位置是项目工作目录。 为工作目录参见 属性页 对话框的 调试 选项 (默认情况下,项目目录的位置)。 当您在包含该上下文相关帮助的 .chm 时指定文本文件,必须指定位置信息与为 .txt 文件指定在 .chm .hhp 文件。
如果已经实现 F1 到区分上下文的帮助的访问,可以轻松启用什么是为? 指针,使一个问号出现在标题栏,在对话框的右上角。
启用什么是为?帮助问题标记指针
- 选择对话框上属性的 Extended Styles 选项的 上下文帮助 复选框。