VC/MFC 在ListCtl 控件中随鼠标移动提示单元格信息

简介: [cpp] view plaincopy   BEGIN_MESSAGE_MAP(CTipListCtrl, CListCtrl)       //{{AFX_MSG_MAP(CTipListCtrl)       ON_WM_MOUSEMOVE()       ON_WM...
[cpp]  view plain copy
 
  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. /////////////////////////////////////////////////////////////////////////////  
  9. // CTipListCtrl message handlers  
  10.   
  11. void CTipListCtrl::OnMouseMove(UINT nFlags, CPoint point)   
  12. {  
  13.     // TODO: Add your message handler code here and/or call default  
  14.   
  15.     if(m_bEnableTips)  
  16.     {  
  17.         CString str;  
  18.         LVHITTESTINFO lvhti;  
  19.           
  20.         // 判断鼠标当前所在的位置(行, 列)  
  21.         lvhti.pt = point;     
  22.         SubItemHitTest(&lvhti);  
  23.           
  24.         // 如果鼠标移动到另一个单元格内, 则进行处理; 否则, 不做处理  
  25.         if((lvhti.iItem != m_nItem) || (lvhti.iSubItem != m_nSubItem))  
  26.         {  
  27.             // 保存当前鼠标所在的(行,列)  
  28.             m_nItem = lvhti.iItem;  
  29.             m_nSubItem = lvhti.iSubItem;  
  30.               
  31.             // 如果鼠标移动到一个合法的单元格内,则显示新的提示信息  
  32.             // 否则, 不显示提示  
  33.               
  34.             if((m_nItem != -1) && (m_nSubItem != -1))  
  35.             {  
  36.                 // @@@@@@@@ 在这里修改要显示的提示信息  
  37.                 // 这里仅仅是一个例子---获得当前单元格的文字信息, 并设置为新的提示信息  
  38.                 str = GetItemText(m_nItem ,m_nSubItem);               
  39.                 m_toolTip.AddTool(this, str);  
  40.                 // 显示提示框  
  41.                 m_toolTip.Pop();  
  42.             }  
  43.             else  
  44.             {  
  45.                 m_toolTip.AddTool(this, _T("双击记录可查看人员详细信息并对其修改"));  
  46.                 // 显示提示框  
  47.                 m_toolTip.Pop();  
  48.             }  
  49.               
  50.         }  
  51.     }  
  52.       
  53.     CListCtrl::OnMouseMove(nFlags, point);  
  54. }  
  55.   
  56. BOOL CTipListCtrl::PreTranslateMessage(MSG* pMsg)   
  57. {  
  58.     // TODO: Add your specialized code here and/or call the base class  
  59.     if(::IsWindow(m_toolTip.GetSafeHwnd()))  
  60.     {  
  61.         m_toolTip.RelayEvent(pMsg);  
  62.     }  
  63.       
  64.     return CListCtrl::PreTranslateMessage(pMsg);  
  65. }  
  66.   
  67. void CTipListCtrl::OnDestroy()   
  68. {  
  69.     CListCtrl::OnDestroy();  
  70.       
  71.     // TODO: Add your message handler code here  
  72.     // listctrl销毁时, 同时销毁 tooltipctrl  
  73.     m_toolTip.DestroyWindow();  
  74.     m_toolTip.Detach();  
  75. }  
  76.   
  77. BOOL CTipListCtrl::EnableTips()  
  78. {  
  79.     EnableToolTips(TRUE);  
  80.     // 创建tooltip控件  
  81.     m_bEnableTips = m_toolTip.Create(this, TTS_ALWAYSTIP);  
  82.       
  83.     if(m_bEnableTips)  
  84.     {  
  85.         m_toolTip.Activate(TRUE);  
  86.         m_toolTip.SetDelayTime(TTDT_INITIAL, 0);  
  87.     }  
  88.       
  89.     return m_bEnableTips;  
  90. }  
目录
相关文章
|
API PHP C++
Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
2187 0
|
4月前
|
存储 机器学习/深度学习 人工智能
使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
本文介绍了如何利用LangChain、Higress和Elasticsearch快速构建RAG(检索增强生成)应用,实现企业知识的智能检索与问答。首先通过LangChain解析Markdown文档并写入Elasticsearch,接着部署Higress AI网关并配置ai-search插件以整合私有知识库与在线搜索功能。最后,通过实际案例展示了RAG查询流程及结果更新机制,确保内容准确性和时效性。文章还提供了相关参考资料以便进一步学习。
537 38
|
4月前
|
存储 人工智能 安全
自媒体创作场景实践|通义千问3 + MCP=一切皆有可能
本文介绍了通过MCP(Model Context Protocol)结合通义千问大模型实现跨平台、跨服务的自动化任务处理方案。使用Qwen3-235B-A22B模型,配合ComfyUI生成图像,并通过小红书等社交媒体发布内容,展示了如何打破AI云服务的数据孤岛。具体实践包括接入FileSystem、ComfyUI和第三方媒体Server,完成从本地文件读取到生成图像再到发布的全流程。 方案优势在于高可扩展性和易用性,但也存在大模型智能化不足、MCP Server开发难度较大及安全风险等问题。未来需进一步提升模型能力、丰富应用场景并解决安全挑战,推动MCP在更多领域落地。
1104 27
自媒体创作场景实践|通义千问3 + MCP=一切皆有可能
|
12月前
|
Shell 网络安全 开发工具
git与gitee结合使用,提交代码,文件到远程仓库
本文介绍了如何将Git与Gitee结合使用来提交代码文件到远程仓库。内容涵盖了Git的安装和环境变量配置、SSH公钥的生成和配置、在Gitee上创建仓库、设置Git的全局用户信息、初始化本地仓库、添加远程仓库地址、提交文件和推送到远程仓库的步骤。此外,还提供了如何克隆远程仓库到本地的命令。
git与gitee结合使用,提交代码,文件到远程仓库
|
算法 数据处理 C语言
【数据结构与算法】快速排序(详解:快排的Hoare原版,挖坑法和双指针法|避免快排最坏时间复杂度的两种解决方案|小区间优化|非递归的快排)
【数据结构与算法】快速排序(详解:快排的Hoare原版,挖坑法和双指针法|避免快排最坏时间复杂度的两种解决方案|小区间优化|非递归的快排)
|
SQL 存储 关系型数据库
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
【C/C++ 应用开发 数据库】入门 Qt数据库编程:从基本操作到高级技巧
643 0
|
算法 计算机视觉
【OpenCV】仿射变换中cv2.estimateAffine2D 的原理
【OpenCV】仿射变换中cv2.estimateAffine2D 的原理
857 0
|
监控 算法 Java
sentinel 服务限流工作原理
sentinel 服务限流工作原理
MFC打开控制台的2种方式
MFC打开控制台的2种方式
406 0
|
程序员 C++
C++中第三方库的一般使用方式(libxl库为例)
C++中第三方库的一般使用方式(libxl库为例)
1516 0