返回首页


< br>




简介


,我在我的MFC应用程序实施上下文敏感的帮助,并一如既往地与Windows编程,这是不是很简单,因为我们想它。 我发现,要得到我想要的行为,我不得不在一个小的对话框和属性表调整的消息处理。 结果是,我创建为我所有的对话框和属性表的基类。 这些都是 CHelpDlg CHelpPrSheet 。 您应该能够使用这些在您的应用程序,以及


特点



  1. F1 按下对话框提供一般帮助。
  2. 提供具有焦点的背景下,当移位F1 按下控制帮助。 (另一种方法是显示浮动指针时移位F1 是按下。如何做到这一点,请参阅代码。)
  3. 提供上下文敏感的帮助控制在你的对话框。
  4. (对话框只)对话框提供一般的帮助,如果你包括一个ID按钮= IDHELP 的。

要求


当创建Visual Studio项目,确保检查上下文敏感的帮助在应用程序向导。 我假设你有点熟悉MFC提供上下文敏感的帮助与支持。 如果没有,请阅读MSDN上TN028。

对话框



  1. 建立像往常一样使用资源编辑器对话框。
  2. 如果你想上下文敏感的帮助,请确保您检查上下文帮助复选框在更多样式资源编辑器"选项卡。
  3. 对于任何想要上下文敏感的帮助控制,确保您检查帮助ID 复选框一般资源编辑器"选项卡。
    如果你想帮助
  4. 在你的对话框中的按钮,与ID有= IDHELP
  5. 使用类向导,并从 CDialog的的派生。
  6. 编辑 。H 。CPP 的文件,使 CHelpDlg 的基类,而不是 CDialog的的。 注意:您必须更换所有文献 CDialog的与 CHelpDlg

属性表



  1. 对于任何想要上下文敏感的帮助控制,确保您检查帮助ID 复选框一般资源编辑器"选项卡。
  2. 使用类向导和来自的CPropertyPage 像往常一样。
  3. 使用类向导,创建一个新类 CPropertySheet的的所得。
  4. 编辑 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)
{
 60; OnCommandHelp(0,0); < /span>" onmouseover="this.style.backgroundColor='#ebeff9'" onmouseout="this.style.backgroundColor}

回答

评论会员:游客 时间:2011/11/17
DougVC
我与MFC程序与HTML帮助工作。 虽然F1键正常工作之前的MDI子窗口中有一个打开的文件,当文件已经打开的F1总是显示"无法启动帮助"的消息。 它可以正常工作,如果下拉菜单选择。 是否有办法解决这个问题呢? 我一直没能找到任何净指导。 感谢
评论会员:游客 时间:2011/11/17
Lucecilla
我需要使用F1键呼叫帮助,但出现错误messagge,我怎么能解决这个问题呢??
评论会员:游客 时间:2011/11/17
JKJKJK
检查后的第一个"编译问题",一看便知,P
评论会员:游客 时间:2011/11/17
OLIS
我运行您的演示,当我按下"帮助"按钮时,我得到 以下错误消息"无法找到的D:\我的项目\ CodeGuru \ MFCHelp_demo \ HelpTest \发布\ HelpTest.HLP文件你想自己查找此文件?"。 目录路径为"D:\我的项目\ CodeGuru \ MFCHelp_demo \ HelpTest"。示范项目目录

NBSP;

你能否给我一些技巧来解决这个问题呢?

NBSP;

预先感谢您的,

评论会员:游客 时间:2011/11/17
jkaspzyk
我也已经运行到这个问题。 从未有一个答案吗?
评论会员:游客 时间:2011/11/17
okline
我找到一种方法来解决这个问题:

1。打开"HLP / HelpTest.hpj",使用文本编辑器"UltraEdit的"

2.look在第三行的最后一行:

包括

更换:路径名的"D \ VisStudio"您安装的Visual Studio在您的计算机

3.recompile的计划,这将是"OK!"

NBSP;

很高兴认识你
评论会员:游客 时间:2011/11/17
!山姆霍布斯
我不知道,但我觉得我实现了一个对话框,上下文敏感的帮助不同。 见我的评论src=http://www.orcode.com/upimg/2011_11_17_23_22_55_0.jpg文章。

NBSP;

有人提到我这篇文章,所以我很抱歉没有时间充分分析是什么在这篇文章中说。

NBSP;

我很高兴我的对话框,按下F1键时显示默认的帮助主题。 我大概可以很容易地实施Shift - F1组合键激活上下文敏感的帮助,但我没有做,还没有。 否则我其他的文章张贴的伟大工程,为我的对话框。 也就是说,当"上下文敏感的帮助"按钮(一个在右上角的"?")按下和上下文敏感的帮助模式是积极的,当点击一个控制 控制对上下文敏感的帮助主题。


评论会员:游客 时间:2011/11/17
dessi
您好

NBSP;

我有一个基于对话框的应用程序,我需要有一个帮助选项。

无论我发现它的SDI / MDI ....所以可以请你告诉我,我是否可以有任何一种基于对话框的应用程序的帮助选项。 若有任何suggestion.any帮助表示赞赏。

NBSP;

vijaya
评论会员:游客 时间:2011/11/17
彼得莫斯
尝试编译的演示项目

NBSP;

入门

帮助文件... ...

HLP \ HelpTest.hpj(1):错误:

微软(R)帮助编译器

HCRTF 4.03.0002

版权所有(c)1990 - 1995微软。 保留所有权利。

helptest.hpj

HC5011:错误:helptest.hpj:

无法打开文件"D:\ VisStudio \ VC98 \ MFC \ \ afxhelp.hm"

编译资源... ...

链接...

NBSP;



评论会员:游客 时间:2011/11/17
巍山
你有替代路径到您的Visual Studio 6.0安装。 在我的机器,它是D:\ VisStudio。 在你的,它可能是不同的。

NBSP;

对不起'回合。
评论会员:游客 时间:2011/11/17
stephangeue
你能告诉我如何"替代路径到您的Visual Studio 6.0安装"? 我明白了。


评论会员:游客 时间:2011/11/17
罗杰艾伦
内找到下载的程序包(子目录HLP)文本格式的文件HelpTest.hpj。 一个可能的替换线来解决这个问题可能是:
#包括lt; C:\ Program Files文件\ Microsoft Visual Studio中\ VC98 \ MFC \ INCLUDE \ afxhelp.hmgt;
然后,它应该工作
NBSP;
斯蒂芬