参考自(http://blog.csdn.net/ribut9225/article/details/6720639)

1.首先从CListCtrl 继承一个类,命名为CListCtrlCl

在头文件中加摸板

CMap<DWORD, DWORD&, COLORREF, COLORREF&> MapItemColor;好在这里查找你的修改的颜色。

CListCtrlCl.h如下:

#pragma once
// CListCtrlCl class CListCtrlCl : public CListCtrl
{
CMap<DWORD, DWORD&, COLORREF, COLORREF&> MapItemColor;
DECLARE_DYNAMIC(CListCtrlCl) public: CListCtrlCl();
virtual ~CListCtrlCl(); protected:
DECLARE_MESSAGE_MAP()
afx_msg void OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult);
public:
afx_msg void SetItemColor(DWORD iItem, COLORREF color);
afx_msg void SetAllItemColor(DWORD iItem,COLORREF TextBkColor);
};

2.自己写个消息映射,可能添加不上,要自己写。OnNMCustomdraw 为实现函数

 

BEGIN_MESSAGE_MAP(CListCtrlCl, CListCtrl)
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)
// ON_WM_SIZE()
END_MESSAGE_MAP()

3.写OnNMCustomdraw函数。 

void CListCtrlCl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
*pResult = CDRF_DODEFAULT;
NMLVCUSTOMDRAW * lplvdr=(NMLVCUSTOMDRAW*)pNMHDR;
NMCUSTOMDRAW &nmcd = lplvdr->nmcd;
switch(lplvdr->nmcd.dwDrawStage)//判断状态
{
case CDDS_PREPAINT:
{
*pResult = CDRF_NOTIFYITEMDRAW;
break;
}
case CDDS_ITEMPREPAINT://如果为画ITEM之前就要进行颜色的改变
{
COLORREF ItemColor;
if(MapItemColor.Lookup(nmcd.dwItemSpec, ItemColor))
// 根据在 SetItemColor(DWORD iItem, COLORREF color) 设置的
// ITEM号和COLORREF 在摸板中查找,然后进行颜色赋值。
{
//lplvdr->clrText = RGB(0,0,0);//ItemColor;
//lplvdr->clrTextBk = ItemColor;
lplvdr->clrText = ItemColor;
*pResult = CDRF_DODEFAULT;
}
}
break;
}
}

4. 修改指定一行的颜色。

void CListCtrlCl::SetItemColor(DWORD iItem, COLORREF color)
{
// m_iCurrentItem = iItem;
// m_CurrentColor = color; MapItemColor.SetAt(iItem, color);//设置某行的颜色。
this->RedrawItems(iItem, iItem);//重新染色 //this->SetCheck(iItem,1);
this->SetFocus(); //设置焦点
UpdateWindow();
}

5.修改全部行的颜色。

void CListCtrlCl::SetAllItemColor(DWORD iItem,COLORREF TextBkColor)
{
//INT_PTR ncount = this->GetItemCount();
if(iItem > 0)
{
for(DWORD numItem = 0; numItem < iItem ;numItem ++)
{
//iItem = i;
MapItemColor.SetAt(numItem, TextBkColor);
this->RedrawItems(numItem, numItem);
}
} return; }

6.

1)在自己项目dialog中加入列表控件,先定义普通列表控件,关联变量(如ObjectList)

2)然后在对应的头文件,将CListCtrlCl ObjectList; 改为 CXListCtrl m_list,

3)注意要包括自写类的头文件,头文件中加入   #include "ListCtrlCl.h" 

cpp文件中调用相应函数

		if(lw_all_wz[i].CompareNoCase(L"无裂纹: ")==0)
ObjectList.SetItemColor(i,RGB(255,255,255));//白色
else{
ObjectList.SetItemColor(i,RGB(255,0,0));//红色
}

  i对应的从0行开始

 另外还参考MSDN(https://msdn.microsoft.com/en-us/library/ms364048(VS.80).aspx#customdraw_topic4 )

                        (http://blog.sina.com.cn/s/blog_7b053996010183u1.html)

 

MFC列表控件更改一行的字体颜色的更多相关文章

  1. mfc 列表控件

    经常使用的mfc控件:list control,记录下   首先将list control拖入到对话框中,然后命名ID,通过类向导,类型为control,控件变量名(m_showlist),  vie ...

  2. MFC 列表控件List Control

    一般用带有表头的报表模式,所以属性:View设为Report // OnInitDialog()中 CString str[] = {TEXT("姓名"),TEXT("性 ...

  3. Visual studio C++ MFC之列表控件CListCtrl Control

    背景 本篇旨在MSDN帮助文档下总结列表控件CListCtrl Control的使用,并列出碰到的具体问题. 正文 列表型控件List Control的类是ClistCtrl,具体成员对象详见链接,以 ...

  4. 高级列表控件ListCtrl关联的MFC中的类:CListCtrl

    高级列表控件ListCtrl关联的MFC中的类:CListCtrl■ 报表样式ListCtrl常用操作:1.添加列标题头:InsertColumn2.获取与设置列宽:GetColumnWidth.Se ...

  5. 【VS开发】MFC CListCtrl列表控件的消息响应

    MFC里的CListCtrl选中一行,消息是哪个.实在想不起来了.找了一篇文章,比较有用: http://www.cnblogs.com/hongfei/archive/2012/12/25/2832 ...

  6. 列表控件ListBox关联的MFC中的类:CListBox

    列表控件ListBox关联的MFC中的类:CListBox ######################################################## 1.在列表的结尾添加一项: ...

  7. MFC可视化 列表控件的使用

    1.应该加入头文件   #include <Atlbase.h>   2.示例     类向导给列表控件绑定变量m_list DWORD   dwExStyle=LVS_EX_FULLRO ...

  8. MFC常用控件之列表视图控件(List Control)

    近期学习了鸡啄米大神的博客,对其中的一些知识点做了一些自己的总结.不过,博客内容大部分来自鸡啄米.因此,这个博客算是转载博客,只是加了一些我自己的理解而已.若想学习鸡啄米大神的博客总结,请点击连接:h ...

  9. VC/MFC ListCtrl 控件功能使用汇总(转)

    以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SDK:以 “ListView_”开头的一些宏.如 ListView_InsertCol ...

随机推荐

  1. 使用xheditor时 cloneRange错误 ext.net

    使用ext.net 加  xheditor时,一直报 cloneRange错误. 于是 按照说明但独使用xheditor  ,检查无错,正常使用, 因此排除版本问题. <ext:panel ru ...

  2. Spring boot 线上部署

    1.修改Spring Boot 1.添加:spring-boot-maven-plugin 插件 <build> <plugins> <plugin> <gr ...

  3. Windows自定义运行命令

    1 打开注册表regedit 2 找到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths 3 新增项,自己运 ...

  4. 从创业者角度看《印度合伙人 Padman》后的一点感受

    最近对印度电影颇有兴趣,周末在家看了<印度合伙人 Padman>.本文试着从一名创业者视角,谈谈个人的一点看法. 0.故事简介 引用自 https://movie.douban.com/s ...

  5. python之路——20

    学习内容 1.序列化——数据类型转向字符串数据类型 反序列化——字符串转向数据类型2.序列化模块 json模块 通用序列化格式 弊端:只有少部分数据类型可通过json转化 pickle模块 所有的py ...

  6. AX2012 ERP 维度相关表数据关系图

    AX2012比AX2009可怜的几个维度来说,太丰富了,可以无数个啊.维度多了,如何使用以及管理是个问题.这个需要在做调研时,充分分析讨论确定.以下为维度表关联关系,在做SQL取值时需要了解下,比如在 ...

  7. C语言排序算法学习笔记——交换类排序

    交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们 ...

  8. Git世界历险记

    Git-版本管理器 Git  ||属于分散型版本管理系统,是为版本管理而而设计的软件.(Linux的创始人Linus Torvalds在2005年开发了Git的原型程序,在此之前人们大多选用Subve ...

  9. css选择器区别

    空格选择器 ul li 选择ul 下面的所有li 元素 大于号选择器  ul>li 选择ul 下面的直接子元素 只能是儿子辈的 不能是孙子辈的

  10. 走进HashMap

    1.手写实现HashMap 2.解析代码并阐述HashMap1.7到1.8的变化 3.HashMap的遍历方式 4.HashMap与HashSet,Hashtable,ConcurrentHashMa ...