`

设置ListCtrl列表控件其中某一行的字体和背景颜色

 
阅读更多

设置ListCtrl列表控件其中某一行的字体和背景颜色,可以最终达到如下效果:

操作步骤如下所示:

1.先添加一个自定义消息

ON_NOTIFY ( NM_CUSTOMDRAW,IDC_V_H264_NALLIST, OnCustomdrawMyList )

 

 

注:在BEGIN_MESSAGE_MAP()和END_MESSAGE_MAP()之间。第二个参数是LIstCtrl的ID,第三个参数是消息响应函数。

2.下面是具体的函数。根据表格内容的不同,设置不同的背景颜色。

比如:“NAL负载类型”为SLICE的时候,背景为青色;为SPS的时候,背景为黄色;为PPS的时候,背景为咖啡色。

 

//ListCtrl加颜色
void CSpecialVH264Dlg::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
{
	//This code based on Michael Dunn's excellent article on
	//list control custom draw at http://www.codeproject.com/listctrl/lvcustomdraw.asp


	NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );


	// Take the default processing unless we set this to something else below.
	*pResult = CDRF_DODEFAULT;


	// First thing - check the draw stage. If it's the control's prepaint
	// stage, then tell Windows we want messages for every item.
	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 clrNewTextColor, clrNewBkColor;


		int    nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );


		CString strTemp = m_vh264nallist.GetItemText(nItem,2);
		if(strcmp(strTemp,"SLICE")==0){
			clrNewTextColor = RGB(0,0,0);		//Set the text 
			clrNewBkColor = RGB(0,255,255);		//青色
		}
		else if(strcmp(strTemp,"SPS")==0){
			clrNewTextColor = RGB(0,0,0);		//text 
			clrNewBkColor = RGB(255,255,0);		//黄色
		}
		else if(strcmp(strTemp,"PPS")==0){
			clrNewTextColor = RGB(0,0,0);		//text
			clrNewBkColor = RGB(255,153,0);		//咖啡色
		}else if(strcmp(strTemp,"SEI")==0){
			clrNewTextColor = RGB(0,0,0);		//text
			clrNewBkColor = RGB(255,66,255);			//粉红色
		}else if(strcmp(strTemp,"IDR_SLICE")==0){
			clrNewTextColor = RGB(0,0,0);		//text
			clrNewBkColor = RGB(255,0,0);			//红色
		}else{
			clrNewTextColor = RGB(0,0,0);		//text
			clrNewBkColor = RGB(255,255,255);			//白色
		}


		pLVCD->clrText = clrNewTextColor;
		pLVCD->clrTextBk = clrNewBkColor;




		// Tell Windows to paint the control itself.
		*pResult = CDRF_DODEFAULT;




	}
}



 

分享到:
评论

相关推荐

    MFC中改变list control满足条件的某一行的背景颜色

    本文将详细讲解如何在MFC中针对特定条件改变List Control中的某一行的背景颜色。 首先,我们需要了解List Control的基本概念。它是MFC对Windows API中的ListView控件的封装,支持多种视图模式,如图标、报告(列表...

    重绘MFC列表控件(ListCtrl)字体 表头和行高度 行颜色等

    本篇文章将详细探讨如何重绘MFC ListCtrl控件的字体、表头高度、行高度以及行颜色。 首先,要改变ListCtrl的字体,你需要使用`SetFont`函数。这个函数接受一个`CFont`对象作为参数,该对象代表你希望设置的新字体。...

    改变listctrl 单元格背景及文字颜色(非重写控件)

    标题“改变listctrl 单元格背景及文字颜色(非重写控件)”指的是在不重新定义或重载`CListCtrl`类原有功能的情况下,实现对列表视图控件中单个单元格的背景色和文字颜色的自定义。这通常涉及到低级绘图技术,如消息...

    设置ListCtrl背景色

    在某些情况下,我们可能需要自定义控件的样式,比如改变某一行或某些行的背景颜色和文字颜色。标题“设置ListCtrl背景色”和描述中提到的就是如何实现这一功能。 在提供的代码片段中,我们看到了一个名为 `...

    自绘ListCtrl列表控件

    在Windows编程领域,ListCtrl控件是经常被用于展示数据列表的一种GUI元素,它提供了类似电子表格的功能。本文将深入探讨如何实现自绘ListCtrl列表控件,以及如何通过单击按钮来动态添加记录。 首先,我们要理解List...

    ListCtrl设置单元格颜色

    在编程领域,尤其是在GUI(图形用户界面)设计中,`ListCtrl` 是一个常见的控件,主要用于展示列表形式的数据。`ListCtrl` 常见于像wxPython、MFC (Microsoft Foundation Classes) 和wxWidgets等库中。本篇文章将...

    list control 改变某一行颜色

    在某些情况下,我们可能需要根据特定条件改变List Control中某一行的颜色,以突出显示某些信息或者提供视觉反馈。这个过程通常涉及到自定义绘制(custom drawing)。下面将详细解释如何实现这一功能。 首先,我们...

    改变控件字体颜色\ListCtrl

    要控制列表控件中每一行的颜色显示,我们需要理解MFC中ListCtrl的相关API和机制。本文将深入探讨如何实现这一功能。 首先,了解MFC中的CListCtrl类,它是对Windows API中的ListView控件的封装。这个类提供了丰富的...

    列表框控件改变行字体颜色

    在默认情况下,ListCtrl控件的绘制工作由系统自动完成,但为了自定义其外观,如改变某一行的字体颜色,我们需要重载`OnCustomDraw`消息处理函数。`OnCustomDraw`是ListCtrl控件在需要绘制时发送给父窗口的消息,允许...

    【最新】MFC, CListCtrl 自定义字体、颜色和背景

    5. **自定义绘制**:为了实现更复杂的样式,如不同颜色的条纹背景、高亮行等,需要重载CListCtrl的`OnDrawItem`和`OnDrawSubItem`函数,利用CDC对象提供的绘图方法来绘制每一行和每一列。这涉及到GDI(Graphics ...

    改变ListCtrl字体和颜色

    下面是一个具体的示例,展示了如何改变`ListCtrl`中某一行的字体和颜色。 ```cpp void CListCtrlColor::OnCustomMyList(NMHDR* pNMHDR, LRESULT* pResult) { NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)pNMHDR; ...

    自绘ListCtrl控件

    本示例“自绘ListCtrl控件”着重讲解如何利用MFC(Microsoft Foundation Classes)库来实现一个具有可变高列表头、可设置单元格文字颜色和背景颜色的自定义列表视图控件。 ListCtrl是MFC中的一个类,它是Windows...

    List Ctrl 控件总结

    ListCtrl控件提供了多种显示样式,包括大图标、小图标、列表和详细报告,以适应不同的用户界面需求。 在MFC中创建ListCtrl控件时,需要使用`Create`函数,通过指定窗口样式`dwStyle`,例如`LVS_ICON`、`LVS_...

    VC/MFC之ListCtrl控件使用经验总结

    在VC/MFC编程中,ListCtrl控件是一个非常常用且功能强大的组件,它允许开发者以多种方式展示数据,包括图标、小图标、列表和报告视图。以下是对ListCtrl控件使用的一些关键知识点的详细说明: 1. **CListCtrl风格**...

    listctrl 扩展类,字体颜色,行列背景色,整体行高度等都可以修改

    在Windows编程中,ListCtrl是MFC(Microsoft Foundation Classes)框架提供的一种用于显示列表数据的控件,通常用于实现如文件浏览器、联系人列表等功能。本主题将详细讲解如何使用扩展ListCtrl(CListCtrl)类来...

    高效的虚ListCtrl,丰富的颜色设置功能,自绘,适合显示行情

    ListCtrl的自绘允许开发者对控件的外观进行精细控制,包括但不限于奇偶行颜色、指定列颜色、指定行颜色以及单元格的文本和背景颜色。自绘过程通常涉及以下步骤: 1. 注册自绘:通过调用`SetWindowLong`或`...

    好看,好用的ListCtrl控件

    本教程将深入探讨如何利用VC++的ListCtrl控件创建一个既美观又实用的界面。 ListCtrl控件在Windows应用程序中通常用于数据展示,它可以支持多列、排序、图标和自定义视图等特性。为了使ListCtrl看起来“好看”并...

    MFC在ListCtrl中加入Button

    2. **添加列表项**:使用InsertItem()函数向ListCtrl中插入一行数据,确保在每个需要按钮的单元格中分配足够的空间。 3. **设置Owner Draw**:为ListCtrl设置LVS_OWNERDRAWFIXED或LVS_OWNERDRAWVARIABLE样式。这...

    ListCtrl控件拓展功能

    在MFC中,ListCtrl控件是一个非常实用的组件,用于显示列式数据,类似于电子表格。在这个VS2010版本的压缩包中,我们找到了一个对ListCtrl控件的拓展版,它增加了许多原生控件不具备的高级功能。 ListCtrl控件的...

    VC6修改CListCtrl中的字体颜色

    总的来说,修改CListCtrl的字体颜色和背景颜色涉及到MFC的消息处理、控件样式以及自定义绘制。这需要对Windows API和MFC有一定的理解和实践,但一旦掌握,就可以创建具有个性化视觉效果的Windows应用程序。

Global site tag (gtag.js) - Google Analytics