设置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中的某一行的背景颜色。 首先,我们需要了解List Control的基本概念。它是MFC对Windows API中的ListView控件的封装,支持多种视图模式,如图标、报告(列表...
本篇文章将详细探讨如何重绘MFC ListCtrl控件的字体、表头高度、行高度以及行颜色。 首先,要改变ListCtrl的字体,你需要使用`SetFont`函数。这个函数接受一个`CFont`对象作为参数,该对象代表你希望设置的新字体。...
标题“改变listctrl 单元格背景及文字颜色(非重写控件)”指的是在不重新定义或重载`CListCtrl`类原有功能的情况下,实现对列表视图控件中单个单元格的背景色和文字颜色的自定义。这通常涉及到低级绘图技术,如消息...
在某些情况下,我们可能需要自定义控件的样式,比如改变某一行或某些行的背景颜色和文字颜色。标题“设置ListCtrl背景色”和描述中提到的就是如何实现这一功能。 在提供的代码片段中,我们看到了一个名为 `...
在Windows编程领域,ListCtrl控件是经常被用于展示数据列表的一种GUI元素,它提供了类似电子表格的功能。本文将深入探讨如何实现自绘ListCtrl列表控件,以及如何通过单击按钮来动态添加记录。 首先,我们要理解List...
在编程领域,尤其是在GUI(图形用户界面)设计中,`ListCtrl` 是一个常见的控件,主要用于展示列表形式的数据。`ListCtrl` 常见于像wxPython、MFC (Microsoft Foundation Classes) 和wxWidgets等库中。本篇文章将...
在某些情况下,我们可能需要根据特定条件改变List Control中某一行的颜色,以突出显示某些信息或者提供视觉反馈。这个过程通常涉及到自定义绘制(custom drawing)。下面将详细解释如何实现这一功能。 首先,我们...
要控制列表控件中每一行的颜色显示,我们需要理解MFC中ListCtrl的相关API和机制。本文将深入探讨如何实现这一功能。 首先,了解MFC中的CListCtrl类,它是对Windows API中的ListView控件的封装。这个类提供了丰富的...
在默认情况下,ListCtrl控件的绘制工作由系统自动完成,但为了自定义其外观,如改变某一行的字体颜色,我们需要重载`OnCustomDraw`消息处理函数。`OnCustomDraw`是ListCtrl控件在需要绘制时发送给父窗口的消息,允许...
5. **自定义绘制**:为了实现更复杂的样式,如不同颜色的条纹背景、高亮行等,需要重载CListCtrl的`OnDrawItem`和`OnDrawSubItem`函数,利用CDC对象提供的绘图方法来绘制每一行和每一列。这涉及到GDI(Graphics ...
下面是一个具体的示例,展示了如何改变`ListCtrl`中某一行的字体和颜色。 ```cpp void CListCtrlColor::OnCustomMyList(NMHDR* pNMHDR, LRESULT* pResult) { NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)pNMHDR; ...
本示例“自绘ListCtrl控件”着重讲解如何利用MFC(Microsoft Foundation Classes)库来实现一个具有可变高列表头、可设置单元格文字颜色和背景颜色的自定义列表视图控件。 ListCtrl是MFC中的一个类,它是Windows...
ListCtrl控件提供了多种显示样式,包括大图标、小图标、列表和详细报告,以适应不同的用户界面需求。 在MFC中创建ListCtrl控件时,需要使用`Create`函数,通过指定窗口样式`dwStyle`,例如`LVS_ICON`、`LVS_...
在VC/MFC编程中,ListCtrl控件是一个非常常用且功能强大的组件,它允许开发者以多种方式展示数据,包括图标、小图标、列表和报告视图。以下是对ListCtrl控件使用的一些关键知识点的详细说明: 1. **CListCtrl风格**...
在Windows编程中,ListCtrl是MFC(Microsoft Foundation Classes)框架提供的一种用于显示列表数据的控件,通常用于实现如文件浏览器、联系人列表等功能。本主题将详细讲解如何使用扩展ListCtrl(CListCtrl)类来...
ListCtrl的自绘允许开发者对控件的外观进行精细控制,包括但不限于奇偶行颜色、指定列颜色、指定行颜色以及单元格的文本和背景颜色。自绘过程通常涉及以下步骤: 1. 注册自绘:通过调用`SetWindowLong`或`...
本教程将深入探讨如何利用VC++的ListCtrl控件创建一个既美观又实用的界面。 ListCtrl控件在Windows应用程序中通常用于数据展示,它可以支持多列、排序、图标和自定义视图等特性。为了使ListCtrl看起来“好看”并...
2. **添加列表项**:使用InsertItem()函数向ListCtrl中插入一行数据,确保在每个需要按钮的单元格中分配足够的空间。 3. **设置Owner Draw**:为ListCtrl设置LVS_OWNERDRAWFIXED或LVS_OWNERDRAWVARIABLE样式。这...
在MFC中,ListCtrl控件是一个非常实用的组件,用于显示列式数据,类似于电子表格。在这个VS2010版本的压缩包中,我们找到了一个对ListCtrl控件的拓展版,它增加了许多原生控件不具备的高级功能。 ListCtrl控件的...
总的来说,修改CListCtrl的字体颜色和背景颜色涉及到MFC的消息处理、控件样式以及自定义绘制。这需要对Windows API和MFC有一定的理解和实践,但一旦掌握,就可以创建具有个性化视觉效果的Windows应用程序。