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. 百度编辑器ueditor简单易用

    最近刚刚被分配任务给一个新闻发布,它采用了富文本编辑器.本人也被用于,只是这一次我选择了百度的富文本编辑器ueditor1_4_3-utf8-jsp版. 事实上看ueditor功能非常强大,只是百度的 ...

  2. Repeater控件

    一:http://www.cnblogs.com/foolin/archive/2011/08/31/2161342.html 二:http://www.cnblogs.com/shipfi/arch ...

  3. C中的链接属性及作用域

    如果相同的标识符出现在几个不同的源文件中时,它们是表示相同的实体,还是不同的实体.标识符的链接属性决定如何处理在不同文件中出现的标识符.标识符的作用域与它的链接属性有关. 链接属性一般有三种:exte ...

  4. HDOJ 1005

    Input The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a ...

  5. 通过xml生成word文档

    Xml生成word总结 使用xml生成word的基本步骤在<使用xslt转化xml数据形成word文档导出.doc>中说明比较清楚了.但是其中的细节并未说到,因此自己折腾了两天总算成功了. ...

  6. silentScroll() 滚屏

    jQuery.mobile.silentScroll( yPos ) 滚动到一个特定的Y坐标位置,没有触发涡旋的事件监听器 yPos:Y坐标.类型:数字.默认值: //滚屏到y 100px处 $.mo ...

  7. Jquery学习笔记:利用parent和parents方法获取父节点

    通过选择器一般只能获取指定标识的节点,或者获取子节点. 有些场景下,往往需要根据当前节点找到满足条件的父节点.这个可以通过相应的方法来实现. 1.parent方法 该方法可以获取元素的直接父节点. 我 ...

  8. Codeforces 468D Tree

    题目 给出一棵带边权的树,求一个排列\(p\),使得\(\sum_{i=1}^{n}{dis(i, p_i)}\)的值最大,其中\(dis(v, u)\)表示\(v\)到\(u\)的距离. 算法 这题 ...

  9. ARM相关知识

    ARM7采用冯·诺依曼(Von-Neumann)结构,数据存储器和程序存储器重合在一起.    同时,此结构也被大多数计算机所采用. ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW ...

  10. 第14周 项目三-OOP版电子词典

    做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对比的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词.显示词性和中文释义. ...