返回首页


{S0}简介
添加上下文帮助您的应用程序扩展使用,增强了用户体验。上下文帮助可确认由问号的箭头光标。支持这个对话框可以被认可?图标在右上角的方块的角落。如何安装Microsoft HTML帮助1.4 SDK中... ...读故事。用户增强
如果用户了解一些控制功能有问题,解决的办法是,点击图标,光标移动到控制问题,并左击鼠标。另一种方法是为有输入焦点,而不会产生一个命令消息(如编辑控件)的控制,只需按下F1键具有相同的效果。一个弹出窗口出现,其中包括帮助文本声明。四个步骤
添加上下文帮助使用HTML弹出可描述四个步骤:启用"对话框属性","扩展样式页对话框的上下文帮助。分配帮助控制文本在您的"字符串表"。陷阱在对话框类WM_HELPINFO的信息。复制下面的代码粘贴到你想要的类。 BEGIN_MESSAGE_MAP(CDlg,CDialog的) ON_WM_HELPINFO()END_MESSAGE_MAP()
重要的是,在你的字符串表中使用的ID是相同的命名控制,尽量使用组合框,在"字符串属性"对话框。 消息处理程序准备就绪
WM_HELPINFO消息的消息处理程序是这样的:AFX_MSG布尔OnHelpInfo(HELPINFO * pHelpInfo);BOOL CDlg::OnHelpInfo(HELPINFO * pHelpInfo){ / /此方法做了所有工作 ShowContextHelp(的CWnd::FromHandle((HWND)的pHelpInfo - GT; hItemHandle) pHelpInfo - GT; MousePos,pHelpInfo - GT; iCtrlId); / /我们将继续的消息,所以跳过基类 / /返回CDialog的:OnHelpInfo(pHelpInfo); 返回TRUE;}
在评论中提到,ShowContextHelp (...)方法,我们的注意力。该方法有三个参数:一个窗口的指针,点结构发生请求帮助,并确定control.void CDlg:ShowContextHelp(的CWnd * pWnd,角点,INT iCtrlID){CString的小号; / /从字符串表的负载帮助文本 (s.LoadString(iCtrlID)) { HH_POPUP hPop; / /的HTML帮助弹出式结构 / /初始化结构到的NULL memset的(安培; hPop,0,sizeof(hPop)的); / /设置结构的大小 hPop.cbStruct = SIZEOF(hPop); / /黄色背景 hPop.clrBackground = RGB(255,255,208); hPop.clrForeground = -1; / /字体颜色 hPop.rcMargins.left = -1; hPop.rcMargins.bottom = -1; hPop.rcMargins.right = -1; hPop.pt = PT; hPop.pszText = S / /从字符串表的消息 hPop.pszFont = NULL; / /字体 HTMLHELP(pWnd -> GetSafeHwnd(),NULL HH_DISPLAY_TEXT_POPUP,(DWORD)放大器; hPop); } / /结束,如果找到了此请求帮助字符串} / / ShowContextHelp (...)
HH_POPUP结构是用来显示在弹出窗口中的上下文帮助。结构设置前景/背景颜色,调整的地方会显示弹出的成员,并选择要使用的字体。如果跳过第一个参数,键入NULL,你将体验到,在弹出的窗口就像是一个无模式对话框,这是无意的。
HTMLHELP (...)方法点的第二个参数字符串资源也可以被放置到一个文件对象。
希望你会发现它非常有用。

回答

评论会员:会员3455398 时间:2011/12/02
你或你一直在一个CFormView能够HTMLHELP弹出窗口
我可以使它工作在DialogBox。我能赶上一个CFormView OnHelpHitTest,但我不能帮助弹出实际情况。
如果你已经能够做到这一点,你可以共享的信息呢?

感谢
评论会员:。nompel 时间:2011/12/02
垃圾邮件删除
评论会员:moihere 时间:2011/12/02
显示弹出这样一个简单的和干净的解决方案(SANS CHM文件)在对话框中帮助

显示菜单项的帮助字符串从字符串表也有类似的解决方案呢?状态栏文本已进入对菜单ID字符串表。

评论会员:paulgafa 时间:2011/12/02
您好我有类似项目,但使用​​双显示器时,在主显示屏上的文字总是弹出。任何想法如何解决?

Zippo的
评论会员:barnabe42 时间:2011/12/02
谢谢,我讨厌那些chm文件。
它真的很容易实施方式。
评论会员:含羞草 时间:2011/12/02
您好,
这是一个不错的附加的。如果我还有很长的要显示的文字,我想限制矩形的大小(所以我有一个多行显示的文字),怎么办?

感谢


评论会员:kokholm 时间:2011/12/02
HEJ垫,

感谢你 - 希望这一小段代码,可以增强您的应用程序。 "打破"你的工具提示文本只需添加一个简单的换行符\ n的字符串。




托马斯Kokholm

- 2:36(星期五)第12届2006年5月,
修改
评论会员:Penguen爱芬迪 时间:2011/12/02
我有我的项目的建议。但是,当我运行它,它会弹出上下文帮助提示,并呼吁的。hlp文件immediatelly。我的应用程序,谁知道有什么错?
评论会员:nevedko 时间:2011/12/02
如果我们要指定一个要在我们的弹出式所用的字体呢?我知道从M​​SDN:
hPop.pszFont ="MS无衬线,10,,大胆";
但完整的格式为:
facename [点大小[,字符集[粗体斜体下划线]]
意思是说,我们可以指定我们的字体的字符集。我搜索,但不能找到一个'清单'这个字符集选项。有大量的字符集,希腊,俄罗斯,土耳其等..但这些"字符串"不工作的hPop.pszFont。比方说,我想弹出一个文本在希腊英文Windows。必须在hPop.pszFont的字符集?
是不是有一个完整的列表?
感谢
评论会员:metallman 时间:2011/12/02
不知道我做错了,但之后我复制和粘贴的代码在本教程我的第4步中所述:

testView.cpp(120):错误C2660:'的CWnd::HtmlHelpA":函数不采取4个参数

我缺少的东西吗?任何帮助表示赞赏。
评论会员:Programmer_Chris 时间:2011/12/02
尝试更换HTMLHELP()的调用::HTMLHELP()和危害htmlhelp.lib连接。
评论会员:Penguen爱芬迪 时间:2011/12/02
我无法弄清楚如何连结到htmlhelp.lib,对htmlhelp.lib连接。我搜索,但我无法找到该库。帮助?

克里斯
评论会员:拉维Bhavnani 时间:2011/12/02
确定,首先,你必须去下载HTML Help Workshop的1.3,从微软的下载页面(htmlhelp13.exe - 3.34MB)。安装它。现在去的文件夹"C:\ Program Files文件\的HTML Help Workshop的\"(或您已安装的地方),然后复制文件"htmlhelp.h"到您的项目目录。同样,从文件夹"C:\ Program Files文件\ HTML Help Workshop的\ LIB"复制文件"htmlhelp.lib"再次你的项目目录。在VC中按ALT F7打开项目设置对话框。转到链接的选项卡,选择输入和分类组合在对象/库模块"框中,键入htmlhelp.lib然后单击"确定"。打开您HTMLHELP (...)函数使用的cpp文件。添加#include"htmlhelp.h"#包括其他。这是它..

顺便说一下,这里是我的OnHelpInfo (...)弹出帮助窗口总是需要它的控制之下。当重点控制,鼠标离开某处和用户点击的F1,帮助弹出窗口出现在集中控制rightbottom角落,而不是在鼠标这是离

BOOL CMyDlg::OnHelpInfo(HELPINFO * pHelpInfo)
{
的CWnd * pWnd;
RECT R;
P点; pWnd =的CWnd::FromHandle((HWND)的pHelpInfo> hItemHandle);pWnd -> GetWindowRect(R);
p.x = r.right;
p.y = r.bottom; ShowContextHelp(pWnd,P,pHelpInfo -> iCtrlId);
返回TRUE;}
PS:你可以添加行hPop.rcMargins.top = -1; ShowContextHelp (...)把保证金弹出帮助窗口上方