好久没有来博客了,不进则退哎。。。
最近在自己写一个简单的财务管理系统,公司同事一起在来必堡吃午饭,后来人越来越多了,每顿饭的财务管理用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);
else
lplvcd->clrText = RGB(0, 0, 255);
*result = CDRF_DODEFAULT;
}
}