摘自网络:

MFC 中 Tooltip 实现的几种方式

方法一: 利用CWnd本身自身支持的tooptip来实现,这种方法适用给控件增加tooltip,非常方便和简单方法如下: 1、在窗口中增加消息映射ON_NOTIFY_EX(TTN_NEEDTEXT, 0, SetTipText) SetTipText是个回调函数,名字叫什么无所谓,符合原型就行了,原型下面会说。    2、EnableToolTips(TRUE),使用这个方法调用这个函数是必不可少的.建议在CDialog::OnInitDialog调用。

3、在窗口中增加一个函数用于动态提供显示内容,其原型为 BOOL SetTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult),下面的代码可以根据传入的参数判定应该显示的内容。   BOOL CWndYour::SetTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult)   {    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;            UINT nID = pTTTStruct->idFrom;   //得到相应窗口ID,有可能是HWND      //表明nID是否为HWND  if (pTTT->uFlags & TTF_IDISHWND)    {   //从HWND得到ID值,当然你也可以通过HWND值来判断   nID = ::GetDlgCtrlID((HWND)nID);   if (NULL == nID)    return FALSE;

switch(nID)   {   case(IDC_YOUR_CONTROL1)                      strcpy(pTTT->lpszText, your_string1);        break;     case(IDC_YOUR_CONTROL2)      //设置相应的显示字串      break;     default:    break;   }

return TRUE;  }    return FALSE;   }

4、很重要的一点,要显示的控件必须设置notify属性,否则收不到notify消息,自然也就显示不了tooltip。

方法二: 使用MFC中封装好的CToolTipCtrl类,步骤如下: 1、定义全局变量 CToolTipCtrl  m_tooltip和CWnd* pwnd,pwnd用来指定要显示控件的指针 2、在窗体的OnInitDialog()中或OnShowWindow()中创建m_tooltip。

//创建m_tooltip  m_tooltip.Create(pwnd);

//将CToolTipCtrl与相应的控件对应起来  m_tooltip.AddTool(pwnd, TTS_ALWAYSTIP);

//设定文字的颜色  m_tooltipSetTipTextColor(RGB(0,0,255));    //设定提示文字在控件上停留的时间  m_tooltip.SetDelayTime(150);

3、重载PreTranslateMessage(MSG* pMsg)函数,增加如下代码:  if(m_tooltip.m_hWnd!=NULL)    m_tooltip.RelayEvent(pMsg);

4、捕获主窗口的WM_MOUSEMOVE消息,在OnMouseMove(UINT nFlags, CPoint point)函数中增加如下代码:

//鼠标在相应的控件上移动时显示提示文字  m_tooltip.UpdateTipText("怎么样",pwnd);

5、说明 其实上面的第四步可以不要,就是在AddTool时,就可以将它的第二个参数就设置为提示文字,至于风格可以在Create的时候设置。

方法三: 自己封装SDK中的这个控件,难度是大点,但是可控性和适用性都可以大大提高。

e.g.

// 常量定义 // tooltip #define TTS_BALLOON  0x40 #define TTS_CLOSE  0x80 #define TTS_NOFADE  0x20

m_tooltip.Create(this, TTS_BALLOON | TTS_ALWAYSTIP | TTS_CLOSE | TTS_NOFADE);  m_tooltip.Activate(TRUE);  m_tooltip.AddTool(this, DEFINE_INFO_FLOATTIP);  m_tooltip.SetTipTextColor(RGB(0, 0, 255));  m_tooltip.SetTipBkColor(RGB(255,0,255));  m_tooltip.SetDelayTime(150);

假设在CDlg**中有一控件IDC_EDIT_A,想要鼠标指向该控件时提示,步骤如下:1、CDlg**头文件中声明成员变量 CToolTipCtrl m_tooltip;2、CDlg***::OnInitDialog() 中创建并设置参数 m_tooltip.Create(this);//CToolTipCtrl与控件关联 m_tooltip.AddTool(GetDlgItem(IDC_EDIT_A), TTS_ALWAYSTIP);//当鼠标指向IDC_EDIT_A控件显示提示 //若如是句柄可以用FromHandle(hwnd)替换 GetDlgItem(IDC_EDIT_A)//文字颜色 m_tooltip.SetTipTextColor(RGB(0,0,255));//鼠标指向多久后显示提示,毫秒 m_tooltip.SetDelayTime(TTDT_INITIAL, 10); //鼠标保持指向,提示显示多久,毫秒 m_tooltip.SetDelayTime(TTDT_AUTOPOP, 30000); //设定显示宽度,超长内容自动换行 m_tooltip.SetMaxTipWidth(200);3、重写PreTranslateMessage,增加以下内容: if(m_tooltip.m_hWnd!=NULL)  {  m_tooltip.RelayEvent(pMsg); }4、在需要的地方动态更新tip内容 m_tooltip.UpdateTipText(str, FromHandle(hwnd));

http://blog.csdn.net/xgx198831/article/details/6719459

MFC添加鼠标移动到控件上时的提示信息

首先在对话框的头文件中加入初始化语句:private:下,加入:CToolTipCtrl     m_Mytip; 然后在初始化对话框函数(OnInitDialog)中加入: m_Mytip.Create(this);  m_Mytip.AddTool( GetDlgItem(IDC_LIST), "你想要添加的提示信息" ); //IDC_BUTTON为你要添加提示信息的LISTBOX的ID m_Mytip.SetDelayTime(200); //设置延迟 m_Mytip.SetTipTextColor( RGB(0,0,255) ); //设置提示文本的颜色 m_Mytip.SetTipBkColor( RGB(255,255,255)); //设置提示框的背景颜色 m_Mytip.Activate(TRUE); //设置是否启用提示

然后在类向导中添加PreTranslateMessage消息响应函数 BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg) {    if(pMsg->message==WM_MOUSEMOVE /*&& pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->GetSafeHwnd())*/)    m_Mytip.RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg); } 注:如果要为多个按钮添加功能提示只需在 m_Mytip.AddTool( GetDlgItem(IDC_LIST), "你想要添加的提示信息" ); 的下面再加上类似语句,如 m_Mytip.AddTool( GetDlgItem(IDC_LIST1), "你想要添加的提示信息1" ); m_Mytip.AddTool( GetDlgItem(IDC_LIST2), "你想要添加的提示信息2" );

转载于:https://www.cnblogs.com/haoyuanyuan/archive/2013/01/28/2879822.html

添加鼠标悬浮在控件上的提示信息 很齐全各种方法 MFC ToolTipCtl相关推荐

  1. 判断鼠标不在控件上_基础设施:一套基本控件

    类可以把需要重复使用的代码封装到一起多次使用, 但这样的代码仍不能被不同的程序使用. 把自己常用的代码编到一起,打包成库的话,就能制成一套自用工具库作为基础设施. 这里常用的部分,首先就是界面控件. ...

  2. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法

    WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 原文:WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法 问题描 ...

  3. C#中,当鼠标移动到控件上,动态显示提示内容 - 用代码操作ToolTip

    [背景] 写了个C#的小程序,其中在Settings窗体中有些配置参数,希望在鼠标移动到对应的配置选项上,动态显示相关的说明解释内容. [解决过程] 1.原先就已经知道,有些控件,是带ToolTipT ...

  4. C#窗体Winform,鼠标悬停在控件上,提示框,显示信息。

    文章开始之前,先看下一个简短的录频效果. 实现原理: 他是鼠标悬停在控件上方后,弹出另一个窗体,该窗体可以展示不同的自定义组件,达到显示不同的各种需求的目的. 一.先制作容器窗体 using Syst ...

  5. 判断鼠标不在控件上_VB常用控件属性讲解单选按钮、复选框总结

    1 单选按钮.复选框做为VB编程中的选择性控件,在实际程序中有着广泛的应用,所以熟练掌握其特殊属性的用法就很重要了! 单选按钮.复选框的实际应用图 复选框(CheckBox)控件 属性 说明 Name ...

  6. 鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件

    默认情况下当鼠标移出控件外部后控件将获取不到WM_LBUTTONUP消息. 以下通过SetCapture函数实现获取. SetCapture 函数功能: 该函数在属于当前线程的指定窗口里设置鼠标捕获. ...

  7. C#中在鼠标经过Button控件时显示提示信息(弹出气泡提示框)

    C#有个ToolTip的控件是弹出气泡提示框的,在界面上放一个ToolTip1控件,可以在所有需要弹出气泡的控件的属性中的"toolTip1的ToolTip"填写需要提示的信息就行 ...

  8. VisualStudio如何添加使用自定义皮肤控件Cskin

    VisualStudio如何添加使用自定义皮肤控件Cskin 工具/原料 Visual Studio 2013 方法/步骤 工具箱中右键 选择项 点击 浏览 选择控件 点击 是 开始加载 加载完毕后 ...

  9. qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...

  10. MFC/VC++中怎样将一个位图添加到数据库中并且将其读出来到指定的Picture控件上

    看这篇文章之前建议先看一下下面这篇文章: VC下显示位图的几种方法   http://blog.chinaunix.net/uid-607545-id-2088102.html或  http://bl ...

最新文章

  1. 华南师范大学计算机学院重修,为什么说本科绩点低毁一生 大学重修可以刷绩点吗...
  2. java设计模式之设计原则④接口隔离原则
  3. autowired的对象为null_spring-为什么我的@Autowired对象为null?
  4. vs2015 html预览,Blend for Visual Studio 2015 预览版
  5. spark Transformations算子
  6. 【问题解决方案】Markdown正文中慎用星号否则容易变斜体
  7. windows 2003 server安装iis6,附下载文件
  8. 366万常用的中 txt 网盘_人间值得 – 中村恒子 pdf+azw3+epub+mobi+txt+docx|百度网盘资源分享...
  9. 【雕爷学编程】Arduino动手做(84)---DS1307时钟模块
  10. hadoop面试题(全)
  11. 4选1数据选择器程序及testbench文件,给出仿真波形,分析
  12. 国密算法分类及介绍(sm系列密码算法)
  13. 前端开发工程师,CSS盒子模型居中方法
  14. Java POI PPT 转 PNG 图片设置背景色失效
  15. 什么是 Razor?
  16. (2) Hive安装
  17. 什么是html超文本语言,什么是超文本?HTML超文本标记语言怎么学?
  18. OpenShift 4 - 在单机版 OpenShift Local 中运行 OpenShift Virtualization(视频)
  19. 及时总结工作中的经验是个人成长的关键
  20. 构造器(有参、无参)

热门文章

  1. Spring Boot项目中使用 TrueLicense 生成和验证License(服务器许可)
  2. 26. Postpone variable definitions as long as possible
  3. MySQL 索引底层实现原理(B-tree、B+tree)
  4. PageHelper测试分页插件
  5. td中文字间距_怎么做?文字编排创意的小心思
  6. 写bat脚本--2021年5月18日
  7. python函数的使用
  8. date类before()方法的主要作用是_过程(Sub)、函数(Function)、集合(Collection)作用范围...
  9. SQL:mysql将datetime类型数据格式化
  10. VScode:创建用户代码片段