1. BEGIN_MESSAGE_MAP(CTipListCtrl, CListCtrl)
  2. //{{AFX_MSG_MAP(CTipListCtrl)
  3. ON_WM_MOUSEMOVE()
  4. ON_WM_DESTROY()
  5. //}}AFX_MSG_MAP
  6. END_MESSAGE_MAP()
  7. /////////////////////////////////////////////////////////////////////////////
  8. // CTipListCtrl message handlers
  9. void CTipListCtrl::OnMouseMove(UINT nFlags, CPoint point)
  10. {
  11. // TODO: Add your message handler code here and/or call default
  12. if(m_bEnableTips)
  13. {
  14. CString str;
  15. LVHITTESTINFO lvhti;
  16. // 判断鼠标当前所在的位置(行, 列)
  17. lvhti.pt = point;
  18. SubItemHitTest(&lvhti);
  19. // 如果鼠标移动到另一个单元格内, 则进行处理; 否则, 不做处理
  20. if((lvhti.iItem != m_nItem) || (lvhti.iSubItem != m_nSubItem))
  21. {
  22. // 保存当前鼠标所在的(行,列)
  23. m_nItem = lvhti.iItem;
  24. m_nSubItem = lvhti.iSubItem;
  25. // 如果鼠标移动到一个合法的单元格内,则显示新的提示信息
  26. // 否则, 不显示提示
  27. if((m_nItem != -1) && (m_nSubItem != -1))
  28. {
  29. // @@@@@@@@ 在这里修改要显示的提示信息
  30. // 这里仅仅是一个例子---获得当前单元格的文字信息, 并设置为新的提示信息
  31. str = GetItemText(m_nItem ,m_nSubItem);
  32. m_toolTip.AddTool(this, str);
  33. // 显示提示框
  34. m_toolTip.Pop();
  35. }
  36. else
  37. {
  38. m_toolTip.AddTool(this, _T("双击记录可查看人员详细信息并对其修改"));
  39. // 显示提示框
  40. m_toolTip.Pop();
  41. }
  42. }
  43. }
  44. CListCtrl::OnMouseMove(nFlags, point);
  45. }
  46. BOOL CTipListCtrl::PreTranslateMessage(MSG* pMsg)
  47. {
  48. // TODO: Add your specialized code here and/or call the base class
  49. if(::IsWindow(m_toolTip.GetSafeHwnd()))
  50. {
  51. m_toolTip.RelayEvent(pMsg);
  52. }
  53. return CListCtrl::PreTranslateMessage(pMsg);
  54. }
  55. void CTipListCtrl::OnDestroy()
  56. {
  57. CListCtrl::OnDestroy();
  58. // TODO: Add your message handler code here
  59. // listctrl销毁时, 同时销毁 tooltipctrl
  60. m_toolTip.DestroyWindow();
  61. m_toolTip.Detach();
  62. }
  63. BOOL CTipListCtrl::EnableTips()
  64. {
  65. EnableToolTips(TRUE);
  66. // 创建tooltip控件
  67. m_bEnableTips = m_toolTip.Create(this, TTS_ALWAYSTIP);
  68. if(m_bEnableTips)
  69. {
  70. m_toolTip.Activate(TRUE);
  71. m_toolTip.SetDelayTime(TTDT_INITIAL, 0);
  72. }
  73. return m_bEnableTips;
  74. }

VC/MFC 在ListCtl 控件中随鼠标移动提示单元格信息的更多相关文章

  1. VC MFC工具栏(CToolBar)控件

    一.工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创 ...

  2. VC MFC工具栏(CToolBar)控件(转)

    工具栏 工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建, ...

  3. vc++,MFC,组合框控件设置时0xC0000005: 读取位置 0x00000020 时发生访问冲突

    511.exe 中的 0x78bb5dec (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突 _AFXWIN_INLINE int ...

  4. 在WPF的WebBrowser控件中屏蔽脚本错误的提示

    在WPF中使用WebBrowser控件显示网页时,经常会报脚本错误的提示,如何屏蔽掉这些错误提示呢.方法是定义如下方法: public void SuppressScriptErrors(WebBro ...

  5. [c#]如何在form的webbrowser控件中获得鼠标坐标

    如图这样,其实是要插入一个time的控件,这样才能使得坐标值会根据鼠标的移动而不停变化.time插件中写private void timer1_Tick(object sender, EventArg ...

  6. 帆软中使用switch将控件的显示值“传递”给单元格

    如下图,控件的实际值和显示值是我们自定义的. 当我们选择控件时,想要在某个单元格内显示控件的显示值.一般我们在单元格内直接 $控件名  可以获得控件值.比如当我们选择事故数时,我们自然不能在单元格内直 ...

  7. 在TextBox控件中禁用鼠标右键

    实现效果: 知识运用: MouseEventArgs类的Button属性     TextBox控件的ContextMenu属性 实现代码: private void textBox1_MouseDo ...

  8. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

  9. 转:c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index  ...

随机推荐

  1. 常见makefile写法

    原文地址:blog.csdn.net/ghostyu/article/details/7755177 1.目标名称,摆脱手动设置目标名称 TARGET = $(notdir $(CURDIR)) al ...

  2. 当webview遇到了Slidingmenu,webView出现卡白,解决方案

    先介绍一下什么是SlidingMenu: Sliding Menu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.如Evernote.Google+.F ...

  3. signal()函数说明

    表头文件#include<signal.h> 功 能:设置某一信号的对应动作 函数原型:void (*signal(int signum,void(* handler)(int)))(in ...

  4. .NET截断字符串

    /// <summary> /// 截断字符串 /// </summary> /// <param name="s">要截断的字符串</p ...

  5. Vmware Briged方式使虚拟机上网

    1.禁用掉在网络连接VMware Network Adapter VMnet1和VMware Network Adapter VMnet8 (在bridged这种方式下不需要这两个连接,如下图) 2. ...

  6. 三个API:开启、关闭、关闭线程重定向

    C:\Windows\sysnative\ 这个目录是作什么用的?来源:互联网 责任编辑:小易 时间:2015/11/13 0:17:19用户提出问题:C:\Windows\sysnative\ 这个 ...

  7. JAVA刚碰见的问题( java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer)

    原文:刚碰见的问题 1.  failed to load the jni shared library jre bin server jvm.dll 解决:这个主要是eclipse的版本和安装的jdk ...

  8. cocos2d-x游戏开发系列教程-坦克大战游戏之子弹和地图碰撞

    上篇文章实现了坦克与地图碰撞的检测, 这篇我们继续完成子弹和地图的碰撞检测. 1.先设计一个子弹类Bullet,如下所示: class Bullet : public CCSprite { publi ...

  9. 设置MAVEN_OPTS环境变量

    运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行mvn命令时可用.这个时候,MAVEN_OPTS环境变量就能派上用场. 通常需要设置MAVE ...

  10. use EXPORT和use EXPORT_OK

    我不明白 use EXPORT和use EXPORT_OK的区别,大多数资料提到了一些: @Export 允许 导出模块的函数和变量到用户的名字空间使用标准的导入方法. 这种方式,我们不需要创建模块的 ...