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. Event | Beijing Makerspace

    Event | Beijing Makerspace CONTACT INFORMATION 4th Floor, Zhongguancun Dream Lab, Beijing, China Pho ...

  2. Sublime 脚本 配置 (lua 和 JavaScript篇)

    { "cmd" :["C:/Lua/Lua.exe","$file"], "file_regex" :"^(? ...

  3. source insight 中文注释为乱码解决

    1. source insight 中文注释为乱码解决 http://blog.csdn.net/bingfeng1210/article/details/7527059 2. Source Insi ...

  4. GitHub 使用教程图文详解

    大纲: 一.前言 二.GitHub简介 三.注册GitHub账号 四.配置GitHub 五.使用GitHub 六.参与GitHub中其它开源项目 七.总结 注,GitHub官网:https://git ...

  5. 常见LINQ语句学习

    1.读取20条最新留言 public ActionResult Index() { var mostRecentEntries = (from entry in _db.Entries orderby ...

  6. TCP拥塞控制算法内核实现剖析(十)

    内核版本:3.2.12 主要源文件:linux-3.2.12/ net/ ipv4/ tcp_veno.c 主要内容:Veno的原理和实现 Author:zhangskd @ csdn blog 概要 ...

  7. Eclipse用法和技巧二十六:浅谈快捷键

    网络上到处都是eclipse有哪些常用的快捷键,其中还有很多讲得着实不错,这里就不再狗尾续貂而是谈谈别的这段时间的一些思考.最近加入了开发团队,代码量突突的上去了,同时也发现关于快捷键还是有很多细节, ...

  8. telerik 控件 SCRIPT5007: 无法获取未定义或 null 引用的属性“documentElement” (IE 文档模式)

    IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有 ...

  9. javascript笔记整理(对象的继承顺序、分类)

    Object.prototype.say=function(){ alert("我是顶层的方法"); } children.prototype=new parent(); pare ...

  10. ASP.NET - 编写让别人能读懂的代码

    http://www.cnblogs.com/richieyang/p/4840614.html