C++,MFC重绘listcontrl,单行设置颜色,每行不同颜色展示
1.在消息映射中END_MESSAGE_MAP()之前添加如下代码
ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomdrawList)
IDC_LIST1为list控件的ID根据实际情况更改。
2.在工程.h文件中添加以下代码
afx_msg void OnCustomdrawList(NMHDR*,LRESULT*);
函数名称可根据喜好自己定义,要与消息映射中函数名一致。
3.工程.cpp文件中添加以下函数
void CRealPlayDlg::OnCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); *pResult = 0; if(CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYITEMDRAW; } else if(CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage) { //列表每行一种颜色,共3种颜色 if(pLVCD->nmcd.dwItemSpec % 3 == 1) pLVCD->clrTextBk = RGB(255, 0, 0); else if(pLVCD->nmcd.dwItemSpec % 3 == 2) pLVCD->clrTextBk = RGB(101, 147, 74); if (pLVCD->nmcd.dwItemSpec % 3 == 0) pLVCD->clrTextBk = RGB(244, 208, 0); *pResult = CDRF_DODEFAULT; } }
4.运行即可
对向list表中读写数据,以后有时间再写。如有兴趣可留言一起探讨交流。