改变
CListCtrl
中某行的颜色的方法
如果此
List
是继承于
CListCtrl
的
CColorListCtrl
则直接用以下代码即可实现改变行颜色
m_listNcrTask.SetItemColor(1,RGB(12,153 ,0));
但是如果此
List
是可以编辑的
CComboListCtrl
类,且继承于
CListCtrl
则采用以下方法:
首先是添加以下消息
BEGIN_MESSAGE_MAP(CXXDlg, CDialog)
END_MESSAGE_MAP()
中加入以下代码,注意将
IDC_LIST1
修改为对应的表格名字即可
ON_NOTIFY( NM_CUSTOMDRAW, IDC_LIST1, OnDrawColorForMyList )
//
为改变颜色添加的消
息
再添加类成员函数
,
就
OK
了
:
在
CXXDlg
类中手动添加
OnDrawColorForMyList
函数
//
改变
m_List
控件单行的颜色
void CXXDlg::OnDrawColorForMyList( NMHDR *pNmHdr, LRESULT *pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNmHdr );
*pResult = CDRF_DODEFAULT;
if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
COLORREF clrNewTextColor, clrNewBkColor;
int
nItem = static_cast( pLVCD->nmcd.dwItemSpec );
//
显示字体为红色
s
clrNewTextColor = RGB( 255, 0, 0 );
//
设置背景色