动态改变listctrl 单元格背景及文字颜色

m_listshow.InsertColumn( 0, "ID", LVCFMT_LEFT, 40 );//插入列
m_listshow.InsertColumn( 1, "NAME", LVCFMT_LEFT, 50 );
int nRow = m_listshow.InsertItem(0, "11");//插入行
m_listshow.SetItemText(nRow, 1, "jacky");//设置数据

CListCtrl 类里面没有直接改变单元格背景及文字颜色的成员函数,只有改变整个背景的颜色。我有时候只是需要把某个单元格的颜色改变来突出显示就可以了:

我们可以通过重载ListCtrl控件的Customdraw 消息,然后在里面写一些代码就可以了;

void CGPRSDlg::OnNMCustomdrawListshow(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = CDRF_DODEFAULT;

if ( CDDS_PREPAINT ==pLVCD->nmcd.dwDrawStage )
    {
        *pResult = CDRF_NOTIFYITEMDRAW;
    }
    else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
    {
        // This is the notification message for an item. We'll request
        // notifications before each subitem's prepaint stage.
  
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
    }
    else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
    {
        COLORREF clrNewTextColor, clrNewBkColor;
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
CString strTemp=m_listshow.GetItemText(nItem,pLVCD->iSubItem ); 
switch(pLVCD->iSubItem)
{
         case 11:    
case 12:
case 13:     
case 14:     
case 15:      
         { 
             if(strcmp(strTemp,"ON")==0)
      {
               clrNewTextColor = RGB(0,255,0);
        clrNewBkColor = RGB(255,255,255);
      }
      if(strcmp(strTemp,"OFF")==0)
      {
                clrNewTextColor = RGB(122,122,122);
         clrNewBkColor = RGB(255,255,255);
      }
              pLVCD->clrText =clrNewTextColor;
       pLVCD->clrTextBk =clrNewBkColor;
       *pResult = CDRF_DODEFAULT;
       break;
   }    
default:
pLVCD->clrText = RGB(0,0,0);
pLVCD->clrTextBk = RGB(255,255,255);
*pResult = CDRF_DODEFAULT;
break;
    } 
}
上面的代码中pLVCD->nmcd.dwItemSpec : 意思是listctrl 第几行的索引值;

pLVCD->iSubItem :意思是某行的某列的索引值,通过这两个值我们就可以知道,现在要改的是哪个单元格了。

然后pLVCD->clrText 是这个单元格的文本颜色;

pLVCD->clrTextBk是这个单元格的背景颜色;

我们是如果这个是我们需要改的我们就给它一个新值,如果不是我们要改的我们就给他默认值。这样就

可以改变我们的单元格的颜色了。

下面我们可以给一个实际的例子,比如我们的ListCtrl是一个显示某台设备的参数的值,这些参数我们接收过来后,我们可以做一个判断,如果某项参数超过我们设定的报警值我们可以改变它的颜色来突出显示这个参数,这样岂不更直观;

。。。。。。

case 7:
      {
       if(strTemp>paravalue1 || strTemp<paravalue2)
       {
             clrNewTextColor = RGB(255,0,0);
               clrNewBkColor = RGB(255,255,255);
       }
       else
       {
              clrNewTextColor = RGB(0,0,0);
              clrNewBkColor = RGB(255,255,255);
       }
          pLVCD->clrText =clrNewTextColor;
           pLVCD->clrTextBk =clrNewBkColor;
        *pResult = CDRF_DODEFAULT;
             break;
      }

。。。。。。

当我们接受的一项参数在我们设置的报警值范围我们就把这个参数用红色字体显示出来。Ok这样就可以动态显示了;如果觉得这样还不方便,我们可以重写CListCtrl类,然后里面增加一个改变单元格颜色的成员函数,就可以更方便了;

 
from:hi.baidu.com/hyzbahkkhecpuxe/item/fcdafeeda7df23aac00d75ae

CListCtrl颜色设置的更多相关文章

  1. [转]保护眼睛的Windows和IE、Firefox、谷歌等浏览器颜色设置

    保护眼睛的Windows和IE.Firefox.谷歌等浏览器颜色设置  长时间在电脑前工作,窗口和网页上的白色十分刺眼,眼睛很容易疲劳,也容易引起头痛,其实我们可以通过设置Windows窗口和软件的颜 ...

  2. 在Visual Studio 2012 Blue theme下使用Dark theme的文本编辑器颜色设置

    Visual Studio 2012 默认提供了3种color theme: blue,light,和dark.其中dark的文本编辑器颜色设定很爽,可是整个菜单项加上一些小的窗口如Find Resu ...

  3. Win7下如何设置护眼的电脑豆沙绿界面?保护眼睛的颜色设置教程

    关爱心灵的窗户——眼睛! 随着科技发展,使用电脑的人越来越多,由于使用电脑时间过长,我们的眼睛也越发容易疲劳,干燥.如何才能使电脑对人眼的伤害减小到最 小. 小编建议大家可以把窗口背景色设置成护眼色. ...

  4. UITableViewCell的选中时的颜色设置

    转自:http://hi.baidu.com/zhu410289616/item/0de0262910886011097508c2 1.系统默认的颜色设置 //无色 cell.selectionSty ...

  5. python终端颜色设置

    1.颜色定义说明 格式:\033[显示方式;前景色;背景色m   前景色 背景色 颜色 --------------------------------------- 30 40  黑色 31 41 ...

  6. 【转】iOS开发UITableViewCell的选中时的颜色设置

    原文网址:http://mobile.51cto.com/hot-404900.htm 1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSe ...

  7. IOS开发之——颜色设置

    颜色设置: 指定RGB,參数是:红.绿.黄.透明度,范围是0-1 + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(C ...

  8. iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)

    新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> # ...

  9. 超链接字体颜色设置(通过html/css的设置方法)

    超链接字体颜色设置是通过css来设置,a链接的颜色设置常用的有以下两种,1.超链接a的初始状态颜色,2.超链接字体的鼠标滑过颜色,还有两种病不常用:3.超链接字体的已访问颜色,4.超链接字体在按下鼠标 ...

随机推荐

  1. python中取整数的几种方法

    1.向下取整: int() >>> a = 14.38 >>> int(a) 2.向上取整:ceil() 使用ceil()方法时需要导入math模块,例如 > ...

  2. zabbix使用自动发现监控esxi的磁盘存储storage

    zabbix使用自动发现监控esxi的磁盘存储storage 在任意一台可以访问vcenter的zabbix-agent服务器上添加exsi的磁盘监控模板即可 创建模板过程: custom.esxi. ...

  3. java---- XMLEncoder 和 XMLDecoder 和 xSteam工具使用

    XMLEncoder: 将对象写入XML数据中 import org.dom4j.DocumentException; import java.beans.XMLEncoder; import jav ...

  4. AI数据分析(三)

    见笔记本 通用函数

  5. Go的sort接口实现

    package main import ( "fmt" "sort" "time" ) type Track struct { Title ...

  6. Python协程与asyncio

    asyncio(解决异步io编程的一整套解决方案,它主要用于异步网络操作.并发和协程)协程(Coroutine一种用户态的轻量级微线程,它是程序级别的,在执行过程中可以中断去执行其它的子程序,别的子程 ...

  7. 用Jmeter进行接口测试

    一.Jmeter 的使用步骤 打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可. 在下图打开的Jmeter 页面中,右键[“测试计划” -& ...

  8. P1516 青蛙的约会

    P1516 青蛙的约会x+mt-p1L=y+nt-p2L(m-n)t+L(p2-p1)=y-x令p=p2-p1(m-n)t+Lp=y-x然后套扩欧就完事了 #include<iostream&g ...

  9. mysql 正则表达式问号

    MySQL 中,用正则表达式匹配?,需要使用两个转义字符   \\? 因使用一个被坑了很久.

  10. 数据挖掘算法——Apriori算法

    Apriori算法  首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法. 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: ...