MFC 控制列表控件文本颜色显示

MFC 控制CListCtrl 变换横行文本颜色

1、添加列表变量。

    CListCtrl m_ListCtrl;

2、定义颜色枚举。

    enum COLOR
    {
    	COLOR_RED, 
    	COLOR_GREEN,
    	COLOR_BLUE
    };

3、关键设置函数。

	m_ListCtrl.SetItemData(i, COLOR_RED + i);

4、初始化列表数据,并设置行数据颜色。

    void CListEditComboxDlg::Init()
    {
    	m_Edit.ShowWindow(SW_HIDE);
    	m_ComboBox.ShowWindow(SW_HIDE);
    	m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    	m_ListCtrl.InsertColumn(0, _T("姓名"), LVCFMT_CENTER, 100);
    	m_ListCtrl.InsertColumn(1, _T("性别"), LVCFMT_CENTER, 80);
    	m_ListCtrl.InsertColumn(2, _T("年龄"), LVCFMT_CENTER, 80);
    
    	SetListText();
    }
    
    void CListEditComboxDlg::SetListText()
    {
    	int nRowIdx = m_ListCtrl.GetItemCount();
    	for (int i = nRowIdx; i < nRowIdx + 3;i++)
    	{
    		m_ListCtrl.InsertItem(i, "");
    		m_ListCtrl.SetItemData(i, COLOR_RED + i);
    		m_ListCtrl.SetItemText(i, 0, "赵321");
    		m_ListCtrl.SetItemText(i, 1, "男");
    		m_ListCtrl.SetItemText(i, 2, "16");
    	}
    }

5、响应列表事件NM_COSTOMDRAW。

  void CListEditComboxDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMTVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMTVCUSTOMDRAW>(pNMHDR);
    	NMCUSTOMDRAW nmCustomDraw = pNMCD->nmcd;
    	switch (nmCustomDraw.dwDrawStage)
    	{
    	case CDDS_ITEMPREPAINT:
    	{
    							  if (COLOR_RED == nmCustomDraw.lItemlParam)
    							  {
    								  pNMCD->clrTextBk = RGB(255, 0, 0);
    								  pNMCD->clrText = RGB(255, 255, 255);
    							  }
    							  else if (COLOR_GREEN == nmCustomDraw.lItemlParam)
    							  {
    								  pNMCD->clrTextBk = RGB(0, 255, 0);		
    								  pNMCD->clrText = RGB(255, 255, 255);
    							  }
    							  else if (COLOR_BLUE == nmCustomDraw.lItemlParam)
    							  {
    								  pNMCD->clrTextBk = RGB(0,0,255);
    								  pNMCD->clrText = RGB(255,255,255);
    							  }
    							  else
    							  {
    							  }
    							  break;
    	}
    	default:
    	{
    			   break;
    	}
    	}
    	*pResult = 0;
    	*pResult |= CDRF_NOTIFYPOSTPAINT;
    	*pResult |= CDRF_NOTIFYITEMDRAW;
    	return;
    }

6、效果。
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值