最近工作中需要让CTreeCtrl控件的每一项都有提示信息,于是谷歌百度,爬山涉水,结果是…………。在CodeProject里找到一篇文章是把CTreeCtrl派生出新类,重载一些函数自定义内容。使用的时候添加这个类,创建树控件。觉得十分麻烦,看懂都够费劲了。琢磨了一段时间,找出一个简单的实现方法,还没发现有什么漏洞,如果你们有什么问题,可以提出来,十分感谢。下面进入正题:

1、拖一个树控件到对话框中,绑定一个变量,风格随你喜好。

2、在头文件里添加一个CToolTipCtrl变量

3、在OnInitDialog()中给树添加一些项。

4、创建CToolTipCtrl对象,把树控件添加到对象中,具体代码眼睛请往下走。

5、重载PreTranslateMessage(MSG* pMsg),截获鼠标移动消息,根据光标位置,确定光标是否是在树的一个项上,从而得到这个项,添加对应要显示的提示信息。整个过程就是这样,下面附上代码。

OnInitDialog()里的代码

	HTREEITEM root1,root2,midroot1,midroot2;

	root1=m_Tree.InsertItem(_T("树根1"));

	midroot1=m_Tree.InsertItem(_T("第1棵中树"),root1);
m_Tree.InsertItem(_T("第11棵小树"),midroot1);
m_Tree.InsertItem(_T("第12棵小树"),midroot1);
m_Tree.InsertItem(_T("第13棵小树"),midroot1);
m_Tree.Expand(midroot1,TVE_EXPAND); midroot2=m_Tree.InsertItem(_T("第2棵中树"),root1);
m_Tree.InsertItem(_T("第11棵小树"),midroot2);
m_Tree.InsertItem(_T("第12棵小树"),midroot2);
m_Tree.InsertItem(_T("第13棵小树"),midroot2);
m_Tree.Expand(midroot2,TVE_EXPAND); m_Tree.InsertItem(_T("第3棵中树"),root1);
m_Tree.Expand(root1,TVE_EXPAND); root2=m_Tree.InsertItem(_T("树根2")); m_Tree.InsertItem(_T("第1棵中树"),root2);
m_Tree.InsertItem(_T("第2棵中树"),root2);
m_Tree.InsertItem(_T("第3棵中树"),root2);
m_Tree.Expand(root2,TVE_EXPAND); m_ToolTip.CreateEx(this,TTS_ALWAYSTIP);
CRect rect,rect1;
m_Tree.GetClientRect(&rect); //获取树控件的客户区矩形
m_ToolTip.AddTool(GetDlgItem(IDC_TREE1),_T("我的树"),&rect,IDC_TREE1);

BOOL CTreeCtrlDemoDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_MOUSEMOVE){
CPoint pt=pMsg->pt;
m_Tree.ScreenToClient(&pt); //转换成控件客户区的坐标
UINT uFlags;
HTREEITEM item;
item=m_Tree.HitTest(pt,&uFlags); //测试这个点 具体用法参看MSDN
if(item!=NULL && (uFlags&TVHT_ONITEMLABEL)){
//更新提示信息 内容可自定
m_ToolTip.UpdateTipText(m_Tree.GetItemText(item),GetDlgItem(IDC_TREE1),IDC_TREE1);
m_ToolTip.RelayEvent(pMsg);
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}

不用派生CTreeCtrl不用繁琐的过程 教你如何让CTreeCtrl的每一项有ToolTip提示的更多相关文章

  1. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  2. EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)

    自己写实体可以完美解决这个问题.(支持时间格式自定义) 用匿名类型也可以. 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled ...

  3. 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序

    一般我们写好了应用程序想要部署发布它,要么发布到物理机,要么发布到虚拟机,要么发布到容器来运行它.现在有了Azure应用服务,我们可以完全不用管这些东西,只管写好自己的代码,然后使用VisualStu ...

  4. Jetty直接调试,不用部署,不用弄一些杂七杂八的设置

    以前调试web程序的,搭建Tomcat实在是费劲,就想找一个比较简单的方式,我就想调试一下我写的某一个servlet形式,看到<how Tomcat works>这本书,才明白确实可以,不 ...

  5. 【从汉字中提取数字】不用公式,不用VBA,如此简单的方法你是否用过?

    转自:http://huaban.com/pins/19664410 具体操作过程请看附图动画:

  6. YiluPHP是如何做到不用配置、不用注入就能直接使用所有的类?

    使用过YiluPHP的人都会发现,不管是模型类还是逻辑类.辅助类还是工具类,使用所有类都不需要在配置文件中设置加载或注入,也不需要在页面中使用 include 或 require 或 use ,直接使 ...

  7. 教你一招:解决安装或卸载office时 提示错误2503 2502 发生了内部错误

    问题重现: 解决办法:使用软件卸载工具 Uninstall Tool 3.5.1 中文破解版强制删除文件,非常暴力,完美解决. 解决过程一览: 工具下载地址: 软件卸载工具 Uninstall Too ...

  8. 教你一招:解决u盘插入计算机时提示格式化,如何恢复u盘中的文件

    1.插入U盘时,计算机提示格式化 看到这里,到底是格不格呢?别怕,随便你了. 2.查看U盘属性,发现都为零 怎么办呢?u盘上面有很多重要文件啊!别急,继续往下看. 3.解决办法 (1)下载DiskGe ...

  9. 教你一招:解决Win 10安装软件时提示:文件系统错误 (-1073740940)

    1.win+R输入 gpedit.msc 2.左边计算机配置 windows设置——安全设置——本地策略——安全选项 3.在安全选项右边选择 用户账户控制:管理员批准模式中管理员的提升权限提示的行为, ...

随机推荐

  1. jquery1.9学习笔记 之选择器(基本元素三)

    标签选择器("element") 描述: 选择所有与给出标签名相匹配的元素. 同功能的JS原生方法:getElementByTagName() 例子:  查找每个div元素. &l ...

  2. 程序被送入后台后,向 iOS 借时间,完成长期任务-备

    12.2.2. 方案 使用UIApplication的beginBackgroundTaskWithExpirationHandler: 实例方法.在你完成任务后,调用UIApplication的en ...

  3. FJ省队集训DAY2 T1

    思路:转换成n条三维空间的直线,求最大的集合使得两两有交点. 有两种情况:第一种是以某2条直线为平面,这时候只要统计这个平面上有几条斜率不同的直线就可以了 还有一种是全部交于同一点,这个也只要判断就可 ...

  4. 面试题 43 n 个骰子的点数

    ; void printfProbability(int number) { ) return; ]; p[] = ]; p[] = ]; memset(p[], , )); memset(p[], ...

  5. VS2010 Command Prompt Error:Cannot determine the location of the VS Common Tools folder

    就在VS2010 Command Prompt 用vcvarsall.bat x64重新设置环境变量的时候,出现了标题中的错误.原因就在参考链接中 References: http://stackov ...

  6. 如何使用git创建项目,创建分支

    git config -global user.name "Your name" git config -global user.email "you@example.c ...

  7. 【转】解决java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题

    原文网址:http://blog.csdn.net/ueryueryuery/article/details/20607845 我写了一个Dialog,Dialog中有一个ListView,想要点Li ...

  8. 【转】Excel快捷键大全

    原文网址:http://www.bm8.com.cn/keyboard/excel.asp 显示和使用"Office 助手"注意 若要执行以下操作,"Microsoft ...

  9. poj 2112 Optimal Milking (二分图匹配的多重匹配)

    Description FJ has moved his K ( <= K <= ) milking machines <= C <= ) cows. A ..K; the c ...

  10. hdu 5422 Rikka with Graph(简单题)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...