设置列表控件(ListCtrl)各种颜色

2023-11-01 03:32

本文主要是介绍设置列表控件(ListCtrl)各种颜色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码下载:ListCtrlColor.Zip

公开接口:

[cpp] view plain copy print ?
  1. //设置奇数行背景颜色  
  2. void SetOddItemBkColor(COLORREF color,BOOL bDraw);  
  3. //设置偶数行背景颜色  
  4. void SetEvenItemBkColor(COLORREF color,BOOL bDraw);  
  5. //设置热点行背景颜色  
  6. void SetHoverItemBkColor(COLORREF color,BOOL bDraw);  
  7. //设置选中行背景颜色  
  8. void SetSelectItemBkColor(COLORREF color,BOOL bDraw);  
  9. //设置奇数行文本颜色  
  10. void SetOddItemTextColor(COLORREF color,BOOL bDraw);  
  11. //设置偶数行文本颜色  
  12. void SetEvenItemTextColor(COLORREF color,BOOL bDraw);  
  13. //设置热点行文本颜色  
  14. void SetHoverItemTextColor(COLORREF color,BOOL bDraw);  
  15. //设置选中行文本颜色  
  16. void SetSelectItemTextColor(COLORREF color,BOOL bDraw);  
实现源码:

[cpp] view plain copy print ?
  1. // MyListCtrl.cpp : 实现文件  
  2.   
  3. IMPLEMENT_DYNAMIC(CMyListCtrl, CListCtrl)  
  4.   
  5. CMyListCtrl::CMyListCtrl()  
  6. {  
  7.     m_OddItemBkColor=0xFEF1E3;//奇数行背景颜色  
  8.     m_EvenItemBkColor=0xFFFFFF;//偶数行背景颜色  
  9.     m_HoverItemBkColor=0xFF;//热点行背景颜色  
  10.     m_SelectItemBkColor=GetSysColor(COLOR_HIGHLIGHT);//选中行背景颜色  
  11.     m_OddItemTextColor=GetSysColor(COLOR_BTNTEXT);//奇数行文本颜色  
  12.     m_EvenItemTextColor=GetSysColor(COLOR_BTNTEXT);//偶数行文本颜色  
  13.     m_HoverItemTextColor=GetSysColor(COLOR_HIGHLIGHTTEXT);//热点行文本颜色  
  14.     m_SelectItemTextColor=GetSysColor(COLOR_BTNTEXT);//选中行文本颜色  
  15.     m_nHoverIndex=-1;  
  16.     m_bTracking=FALSE;  
  17. }  
  18.   
  19. CMyListCtrl::~CMyListCtrl()  
  20. {  
  21. }  
  22.   
  23.   
  24. BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)  
  25.     ON_WM_MOUSEMOVE()  
  26.     ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)  
  27.     ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, &CMyListCtrl::OnNMCustomdraw)  
  28. END_MESSAGE_MAP()  
  29.   
  30.   
  31.   
  32. // CMyListCtrl 消息处理程序  
  33.   
  34.   
  35. void CMyListCtrl::SetOddItemBkColor(COLORREF color,BOOL bDraw)//设置奇数行背景颜色  
  36. {  
  37.     m_OddItemBkColor=color;  
  38.     if(bDraw)InvalidateRect(NULL);  
  39. }  
  40. void CMyListCtrl::SetEvenItemBkColor(COLORREF color,BOOL bDraw)//设置偶数行背景颜色  
  41. {  
  42.     m_EvenItemBkColor=color;  
  43.     if(bDraw)InvalidateRect(NULL);  
  44. }  
  45. void CMyListCtrl::SetHoverItemBkColor(COLORREF color,BOOL bDraw)//设置热点行背景颜色  
  46. {  
  47.     m_HoverItemBkColor=color;  
  48.     if(bDraw)InvalidateRect(NULL);  
  49. }  
  50. void CMyListCtrl::SetSelectItemBkColor(COLORREF color,BOOL bDraw)//设置选中行背景颜色  
  51. {  
  52.     m_SelectItemBkColor=color;  
  53.     if(bDraw)InvalidateRect(NULL);  
  54. }  
  55. void CMyListCtrl::SetOddItemTextColor(COLORREF color,BOOL bDraw)//设置奇数行文本颜色  
  56. {  
  57.     m_OddItemTextColor=color;  
  58.     if(bDraw)InvalidateRect(NULL);  
  59. }  
  60. void CMyListCtrl::SetEvenItemTextColor(COLORREF color,BOOL bDraw)//设置偶数行文本颜色  
  61. {  
  62.     m_EvenItemTextColor=color;  
  63.     if(bDraw)InvalidateRect(NULL);  
  64. }  
  65. void CMyListCtrl::SetHoverItemTextColor(COLORREF color,BOOL bDraw)//设置热点行文本颜色  
  66. {  
  67.     m_HoverItemTextColor=color;  
  68.     if(bDraw)InvalidateRect(NULL);  
  69. }  
  70. void CMyListCtrl::SetSelectItemTextColor(COLORREF color,BOOL bDraw)//设置选中行文本颜色  
  71. {  
  72.     m_SelectItemTextColor=color;  
  73.     if(bDraw)InvalidateRect(NULL);  
  74. }  
  75.   
  76.   
  77. void CMyListCtrl::OnMouseMove(UINT nFlags, CPoint point)  
  78. {  
  79.     int nIndex=HitTest(point);  
  80.     if(nIndex!=m_nHoverIndex){  
  81.         int nOldIndex=m_nHoverIndex;  
  82.         m_nHoverIndex=nIndex;  
  83.         CRect rc;  
  84.         if(nOldIndex!=-1){  
  85.             GetItemRect(nOldIndex,&rc,LVIR_BOUNDS);  
  86.             InvalidateRect(&rc);  
  87.         }         
  88.         if(m_nHoverIndex!=-1){  
  89.             GetItemRect(m_nHoverIndex,&rc,LVIR_BOUNDS);  
  90.             InvalidateRect(&rc);  
  91.         }  
  92.     }  
  93.     //=====================================================  
  94.     if(!m_bTracking)   
  95.     {   
  96.         TRACKMOUSEEVENT   tme;   
  97.         tme.cbSize   =   sizeof(tme);   
  98.         tme.hwndTrack   =   m_hWnd;   
  99.         tme.dwFlags   =   TME_LEAVE;//   |   TME_HOVER;   
  100.         tme.dwHoverTime   =   1;   
  101.         m_bTracking   =   _TrackMouseEvent(&tme);   
  102.     }   
  103.     CListCtrl::OnMouseMove(nFlags, point);  
  104. }  
  105. LRESULT CMyListCtrl::OnMouseLeave(WPARAM wParam, LPARAM lParam)  
  106. {  
  107.     m_bTracking=FALSE;  
  108.       
  109.     if(m_nHoverIndex!=-1){  
  110.         CRect rc;  
  111.         GetItemRect(m_nHoverIndex,&rc,LVIR_BOUNDS);  
  112.         m_nHoverIndex=-1;  
  113.         InvalidateRect(&rc);  
  114.     }  
  115.     return 0;  
  116. }  
  117. void CMyListCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)  
  118. {  
  119.     LPNMLVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);  
  120.     *pResult = 0;  
  121.     int nItemIndex=pNMCD->nmcd.dwItemSpec;  
  122.     if (pNMCD->nmcd.dwDrawStage==CDDS_PREPAINT){  
  123.         *pResult = CDRF_NOTIFYITEMDRAW;  
  124.     }else{  
  125.         if(nItemIndex==m_nHoverIndex){ //热点行  
  126.             pNMCD->clrTextBk=m_HoverItemBkColor;  
  127.             pNMCD->clrText=m_HoverItemTextColor;  
  128.         }else if(GetItemState(nItemIndex,LVIS_SELECTED) == LVIS_SELECTED){ //选中行  
  129.             pNMCD->clrTextBk=m_SelectItemBkColor;  
  130.             pNMCD->clrText=pNMCD->clrFace=m_SelectItemTextColor;  
  131.             ::SetTextColor(pNMCD->nmcd.hdc,m_SelectItemTextColor);  
  132.         }else if(nItemIndex % 2==0){//偶数行 比如 0、2、4、6  
  133.             pNMCD->clrTextBk=m_EvenItemBkColor;  
  134.             pNMCD->clrText=m_EvenItemTextColor;  
  135.         }else{  //奇数行 比如 1、3、5、7  
  136.             pNMCD->clrTextBk=m_OddItemBkColor;  
  137.             pNMCD->clrText=m_OddItemTextColor;  
  138.         }  
  139.         *pResult = CDRF_NEWFONT;  
  140.     }  
  141. }  

这篇关于设置列表控件(ListCtrl)各种颜色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320182

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau