C++ListControl颜色控制

转载 2015年11月19日 17:40:54

1. 在头文件中加入

afx_msg void OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult );

2.在源文件中BEGIN_MESSAGE_MAP()  END_MESSAGE_MAP()中间加入

ON_NOTIFY (NM_CUSTOMDRAW,IDC_LIST, OnCustomdrawList)  
<pre name="code" class="cpp">NM_CUSTOMDRAW 为消息类型, IDC_LIST为列表框ID, <span style="font-family: Arial, Helvetica, sans-serif;">OnCustomdrawList 是实现函数;</span>

3.实现部分

void CListControlBkColorDlg::OnCustomdrawList (NMHDR* pNMHDR, LRESULT* pResult)
{
	NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR ); 
	*pResult = CDRF_DODEFAULT; 

	    if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )  
    {  
        *pResult = CDRF_NOTIFYITEMDRAW;  
    }  
    else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)  
    {  
        // This is the notification message for an item.  We'll request  
        // notifications before each subitem's prepaint stage.  
		*pResult = CDRF_NOTIFYSUBITEMDRAW;  
    }  
    else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )  
    {
		COLORREF crText, crBk;
		int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);
		DWORD itemData = m_list.GetItemData(nItem);
		if(itemData==0)
			crBk = RGB(125,125,125);
		else
			crBk = RGB(0,0,65);

		if( (pLVCD->nmcd.dwItemSpec % 3)==0 )
			crText = RGB(255,0,0);
		else if( (pLVCD->nmcd.dwItemSpec % 3)==1 )
			crText = RGB(0,255,0);
		else
			crText = RGB(0,0,255);

		pLVCD->clrText = crText;
		pLVCD->clrTextBk = crBk;
		// Tell Windows to paint the control itself.  
        *pResult = CDRF_DODEFAULT;  
    }
}


示例图片:



Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

mfc中设置listcontrol某一行的背景和文字颜色

MFC中用到listcontrol控件,可能会根据内容显示颜色。本文提供一种方式: listcontrol设置为report格式,根据内容设置某一行的背景和文字颜色。具体用listcontrol的S...

mfc中CImageList的使用

图像列表控件(CImageList)是相同大小图像的一个集合,每个集合中均以0为图像的索引序号基数,(可以把这些图标看成是以数组方式存储的),图像列表通常由大图标或位图构成,其中包含透明位图模式(实际...

在ListCtrl中插入图标(II)

CImageList m_ImageList; m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSE...

MFC——Listcontrol 添加背景颜色

在MFC中,我们经常会需要给自己的Listcontrol 添加背景颜色,下面便是如何添加的详细过程。首先需要你的程序有一个ListCtrl在对话框上,并且这个ListCtrl处于Report和多列模式...

C++控件:ListControl列表控件的使用方法

C++控件:ListControl列表控件的使用方法  (2010-09-19 18:49:14) 转载▼ 标签:  liatcontrol   lvcol...

Advanced C++ Listcontrol

  • 2012年08月08日 10:36
  • 55KB
  • 下载

C++颜色调配.

  • 2013年04月20日 18:58
  • 1.8MB
  • 下载

C++图像处理 -- 图像颜色混合(上)

阅读提示:    《C++图像处理》系列以代码清晰,可读性为主,全部使用C++代码。    《Delphi图像处理》系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM。    尽可能保持...
  • maozefa
  • maozefa
  • 2011年07月05日 12:29
  • 10871
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ListControl颜色控制
举报原因:
原因补充:

(最多只允许输入30个字)