listctrl 控件就是来显示每个成员的名字和余额的。今天想到应该把余额小于 0 的用红色凸显
出来。
其实实现也不难,网上有很多参考的代码。大致思路如下:
1、为 NM_CUSTOMDRAW 增加一条消息映射,关联 OnCustomDraw 函数
[cpp] view plaincopyprint?
1. ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomDraw)
2、重写 OnCustomDraw 函数,实现对某些行的赋颜色值。主要用到
LPNMLVCUSTOMDRAW 参数实现颜色的赋值。
[cpp] view plaincopyprint?
1. void Ctest2Dlg::OnCustomDraw(NMHDR *pnotify, LRESULT *result)
2. {
3. LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pnotify;
4.
5. if(lplvcd->nmcd.dwDrawStage == CDDS_PREPAINT)
6. *result = CDRF_NOTIFYITEMDRAW;
7.
8. if(lplvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
9. {
10. CString strBalance = m_listctrl.GetItemText(lplvcd->nmcd.dwItemSp
ec, 1); //获取当前行的余额值
11. double dblBalance = atof((_bstr_t)strBalance);
12. if(dblBalance <= 0)
13. lplvcd->clrText = RGB(255, 0, 0);
14. else
15. lplvcd->clrText = RGB(0, 0, 255);
16. *result = CDRF_DODEFAULT;
17. }
18. }