<
br>
,我在我的MFC应用程序实施上下文敏感的帮助,并一如既往地与Windows编程,这是不是很简单,因为我们想它。
我发现,要得到我想要的行为,我不得不在一个小的对话框和属性表调整的消息处理。
结果是,我创建为我所有的对话框和属性表的基类。
这些都是 CHelpDlg
和 CHelpPrSheet
。
您应该能够使用这些在您的应用程序,以及
IDHELP
的。
当创建Visual Studio项目,确保检查上下文敏感的帮助在应用程序向导。 我假设你有点熟悉MFC提供上下文敏感的帮助与支持。 如果没有,请阅读MSDN上TN028。
IDHELP
。 CDialog的
的派生。 CHelpDlg
的基类,而不是
CDialog的
的。
注意:您必须更换所有文献 CDialog的>与 CHelpDlg
。
的CPropertyPage >像往常一样。
- 使用类向导,创建一个新类
CPropertySheet的
的所得。
- 编辑 H 和。CPP 的文件,使
CHelpPrSheet
的基类,而不是 CPropertySheet的
。
注意您必须更换所有文献 CPropertySheet的> CHelpPrSheet
。
有2这里的主要招数。
首先,是处理 WM_HELPINFO
的消息。
默认的处理程序,MFC的供应不会做正确的事上下文帮助。
下面是处理程序的样子:
布尔CHelpDlg:OnHelpInfo(HELPINFO * pHelpInfo)
{
/ / TODO:在此处添加消息处理程序代码和/或调用默认
(pHelpInfo - GT; iContextType == HELPINFO_WINDOW){
AfxGetApp()- GT的WinHelp(pHelpInfo - GT; dwContextId,HELP_CONTEXTPOPUP);
} 返回(TRUE);
}
其他的诀窍是搞清楚什么你想做的事与F1和Shift F1。
我的解决办法是捕获一个神奇神秘的无证MFC味精0x4d 的PreTranslateMessage处理
的如下所示:
布尔CHelpDlg:的PreTranslateMessage(MSG * PMSG)
{
span> 60; OnCommandHelp(0,0); < /span>" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor}