[MFC] listctrl控件实现对某一行指定颜色

来源:互联网 发布:鸟哥的linux私房菜 编辑:程序博客网 时间:2024/05/20 01:37

好久没有来博客了,不进则退哎。。。

最近在自己写一个简单的财务管理系统,公司同事一起在来必堡吃午饭,后来人越来越多了,每顿饭的财务管理用excel搞起来很麻烦,干脆自己写个简单的系统来管理。

listctrl控件就是来显示每个成员的名字和余额的。今天想到应该把余额小于0的用红色凸显出来。

其实实现也不难,网上有很多参考的代码。大致思路如下:

1、为NM_CUSTOMDRAW增加一条消息映射,关联OnCustomDraw函数

ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomDraw)         


2、重写OnCustomDraw函数,实现对某些行的赋颜色值。主要用到LPNMLVCUSTOMDRAW参数实现颜色的赋值。

void Ctest2Dlg::OnCustomDraw(NMHDR *pnotify, LRESULT *result){LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pnotify;if(lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)*result = CDRF_NOTIFYITEMDRAW;if(lplvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT){CString strBalance = m_listctrl.GetItemText(lplvcd->nmcd.dwItemSpec, 1);   //获取当前行的余额值double dblBalance = atof((_bstr_t)strBalance);if(dblBalance <= 0)lplvcd->clrText = RGB(255, 0, 0);elselplvcd->clrText = RGB(0, 0, 255);*result = CDRF_DODEFAULT;}}


 

 

 

原创粉丝点击