`
yingyingol
  • 浏览: 739408 次
文章分类
社区版块
存档分类
最新评论

对话框控件的提示功能

 
阅读更多

按照下面的步骤去做:
1、在头文件中添加消息响应函数的申明 afx_msg BOOL OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult);
2、在CPP文件中加入消息映射 ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTip)
3、在CPP文件中的OnInitDialog()函数内加入 EnableToolTips(TRUE);
4、在CPP文件中添加OnToolTip函数
BOOL CDialogBar::OnToolTip(UINT id,NMHDR * pNMHDR,LRESULT * pResult)
{
TOOLTIPTEXT * pTTT=(TOOLTIPTEXT *)pNMHDR;
UINT uID = pNMHDR->idFrom;
if(pTTT->uFlags & TTF_IDISHWND)
uID = ::GetDlgCtrlID((HWND)uID);
if(uID == NULL) return FALSE;
switch(uID)
{
case IDC_TIP:
pTTT->lpszText="添加你的提示内容";
break;
}
return TRUE;
}
这样就可以了。
其实,上面的方法可以为任何控件添加tip提示。

MFC对TOOL TIP的支持不错的.缺省情况CFrameWnd支持很好.然后是CWnd.主要体现在TTN_NEEDTEXT消息的支持和OnToolHitTest的支持.TTN_NEEDTEXT是在CFrameWnd中支持的.OnToolHitTest是在CWnd中支持的.有了这些支持,可以在框架窗口中很好实现ToolBar的TIP.和在一个对话框中很好实现一个控件的TOOL TIP.

举例.在对话框中实现TOOL TIP.

1.EnableToolTips( TRUE )是不可少的.建议在:CDialog::OnInitDialog 调用吧.

2.ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnNeedText ).OnNeedText实现了TOOL TIP的文字.传入的参数idFrom是控件的ID,根据控件ID得到相应的TIP文字

就这么简单的两步,就实现了对话框中的TOOL TIP.其实不只对话框,任何窗口都可以用上面的方法实现自己的子窗口控件的TIP.但前提是必须是CWnd的派生类.

然后在PreTranslateMessage中转发消息,帮助CToolTipCtrl正确显示TIP.

而CFrameWnd是实现了TTN_NEEDTEXT的响应,帮助子窗口实现TIP.

其实我们也可以不要这些缺省实现,自己用CToolTipCtrl搞定,做法一样:

1.CToolTipCtrl::Create创建Tool Tip

2.AddTool增加一个TOOL,这里的TOOL就是需要显示TIP的一个区域或一个子窗口.如果对AddTool使用有不清楚的地方,建议查看源程序.可能会觉得直接使用TTM_ADDTOOL更方便.

3.在PreTranslateMessage中调用CToolTipCtrl::RelayMessage

4.如果在AddTool中,文字是用回调函数实现,那就要处理TTN_NEEDTEXT消息.

其实自己创建CToolTipCtrl和MFC做的一样.只是不需要在OnToolHitTest中给出需要显示TIP的窗口或者区域.

如果给子窗口用TIP.就用MFC最简单.如果给自己呢?

设置TOOLINFO中的uFlags = TTF_IDISHWND,然后设置uId为窗口句柄,hWnd为窗口句柄就可以了.

写了这么多,有不对的地方还请和我联系一下,帮助我改正错误.

只是有个问题还没搞明白.就是为什么MFC把CToolTipCtrl放在了pThreadState中.难道是为了用一个TOOL TIP为该线程的所有窗口服务吗?难道是一种节约资源的表现.这点还需要研究.如果哪位朋友知道答案,还希望能不吝赐教.谢谢

//头文件加入
CToolTipCtrl m_tooltip;
//主窗口初始化时加入
m_tooltip.Create(this);
m_tooltip.Activate(TRUE);
m_tooltip.AddTool(GetDlgItem(IDC_>name<), ">text<");
//IDC_>name<为你控件的ID,>text<为显示的内容

利用ClassWizard建立PreTranslateMessage
BOOL CTest5Dlg::PreTranslateMessage(MSG* pMsg)
{
m_tooltip.RelayEvent(pMsg); //你加入的代码
return CDialog::PreTranslateMessage(pMsg);
}


分享到:
评论

相关推荐

    一个带动画效果的VB帮助对话框控件实例.rar

    一个带动画效果的VB帮助对话框控件实例,这个帮助对话框控件您可以改造的更漂亮,单击任意位置隐藏对话框,这个帮助仅仅是一个示例程序,检查框在全局程序中没有任何作用,不需要一行代码就可实现的帮助信息提示,...

    在对话框的工具栏上,添加提示显示

    也可在控件资源里设置提示信息。 程序关键点: 1、函数:CAboutDlg::OnToolTipText() 2、事件响应:ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipText ) 前提: 1、对话框里加好工具栏:CAboutDlg::OnInitDialog()

    Component Toolbox 6 OCX控件(注册版本)

    ctMEdit -可进行隐藏编辑的文本输入对话框控件; ctMenu -不可见的菜单通告对象; ctMeter -增强的可视化标尺式进度条; ctMonth -支持定制的月份浏览控件; ctMove -动画按钮或多状态按钮控件; ctNavBar -XP...

    WinForm第三方控件(LiuZhenHong.Controls 2.0)

    2.TBMessageBox提示对话框。 LiuZhenHong.Controls.WFNew.View目录尝试推荐的控件有: 1.ViewItemListBox视图列表控件; 2.NodeViewTree节点视图树控件。 LiuZhenHong.Controls.WFNew目录主推的控件有: 1....

    仿中关村在线参数修改弹出对话框 v1.1源码

    3.CSS实现的对话框控件必须在当前页面上最好不要在ascx控件页面上实现因为不能从一个button事件中调用另一个button事件, 如果在ascx控件页面上实现则对话框控件中执行的操作太多并且可能在ascx控件页面实例化多个...

    asp.net常用Web服务器控件

    实例 删除GridView控件行信息弹出确认提示框 实例 在GridView控件中实现自动编号 实例 GridView控件实现主细表 实例 查看当前页详细信息 实例 单元格中指定字符串固定长度 实例 供求信息网审核发布信息 实例 根据...

    WinForm第三方控件(LiuZhenHong.Controls 2.0.6.15)

    2.TBMessageBox 提示对话框。 LiuZhenHong.Controls.WFNew.View目录尝试推荐的控件有: 1.ViewItemListBox 视图列表控件; 2.NodeViewTree节 点视图树控件。 LiuZhenHong.Controls.WFNew目录主推的控件有: 1....

    54个VB OCX控件

    asBubbleForm.ocx 显示图片信息提示的窗体控件,外形似帮助提示,弹出气泡式对话框 2.2.分隔条类 splitbar.ocx 窗口分割控件 2.3.工具条类 vbalExpBar6.ocx 不明,没用过 2.4.按钮类 CurtButton.ocx ...

    c#等待提示对话框,防止界面假死

    呵呵,关键自己程序里要用到 所以开发了这个小功能 很多地方很粗糙,俺菜鸟,高手们就别贬我了。 使用的时候把2个dll放到你的程序目录,在资源管理器引用LOADing.dll 就可以了,DevComponents.DotNetBar2.dll为确定...

    第6章 界面编程4-控件

    在上一章的“输入学生信息”对话框中所用到的静态文本框和文本编辑框,就是典型的常用控件,前者用于显示提示文本信息,后者用于接收用户的文本输入。单选钮、复选框、列表框和组合框等控件都用于获取用户的选择,而...

    Android自定义控件实现万能的对话框

    自定义控件有段时间没更新了,今天给大家带来一个新的对话框样式,本着用更少的代码实现更丰富的功能。 由于对话框对用户的操作有影响,所以目前app上的对话框用的已经比较少了,但还是有一些比较重要的信息提示需要...

    asp.net 使用控件

    6 AutoCompleteExtender 自动的提示功能,在Google和丁丁地图中都用实现效果,不错的哦 7 CalendarExtender 日历控件 8 CascadingDropDown 级联下拉菜单 9 CollapsiblePanelExtender 点击某个控件,显示一个特定...

    功能测试用例大全1500条

    提示功能检查 26 并发功能 27 导出功能 28 导入功能 28 多币别测试 29 打印功能 29 日志检查 29 导航相关检查 30 返回功能检查 30 重置检查 30 PDF测试 30 发送邮件 31 扫描枪 31 安装测试 31 卸载测试 32 更新 33 ...

    网页消息提示控件,支持多种风格!

    超棒的网页消息提示控件,支持多种风格! 举例: 弹出一个对话框(其中handler为灵活多变的回调函数): ymPrompt.confirmInfo('信息确认框功能测试',null,null,null,handler)

    SpellCheckasp.net拼写检查小控件v1.0

    将页面的文本框内容,通过ajax的方式,采用代理类的方式,发送给Google的接口,接口会返回拼写结果,如果没有拼写错误,浏览器端就直接执行提交操作,如果有错误,弹出一个Spell Check Error的对话框,提示用户进行...

    vc实例精通源码,windows基本控件的使用Demo

    07_PreviewFileDlg_Demo 为打开文件对话框增加预览功能。 08_InputDlg_Demo 从内存创建对话框。 第6章(\ Chapter06) 示例描述:本章介绍Windows应用程序消息循环的原理和消息处理技巧。 01_PeekMsgDemo 传递...

    第7章 数据绑定控件

    实例233 开发针对DataList控件分页功能的 用户控件 368 实例234 使用DataList删除数据(支持批量 删除) 370 实例235 利用DataList控件智能化查看详细 信息 371 实例236 编辑绑定在DataList控件中的商品 信息 373 ...

    Winform的HTML编辑控件Zeta HTML Edit Control.zip

    对其所有英文的菜单、工具栏、对话框、提示内容等资源进行中文化后,并在工具栏中增加插入图片、打印功能后,界面如下所示。2、控件的使用控件的一些功能是可以通过配置屏蔽或者显示的,默认它的初始化代码如下所示...

    SpellCheck拼写检查小控件源码

    将页面的文本框内容,通过ajax的方式,采用代理类的方式,发送给Google的接口,接口会返回拼写结果,如果没有拼写错误,浏览器端就直接执行提交操作,如果有错误,弹出一个Spell Check Error的对话框,提示用户进行...

Global site tag (gtag.js) - Google Analytics