设置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;
}
}
分享到:
相关推荐
改变list control满足一定条件的某一行的背景颜色的习例。
如何控制列表控件的一行颜色显示; 如何控制列表控件的一行颜色显示; 如何控制列表控件的一行颜色显示;
【最新】MFC, CListCtrl、CHeaderCtrl , 设置CListCtrl, 每一部分的字体、颜色和背景
程序可以改变listctrl任意一行的颜色,通过重载oncumstomerdraw来实现。
此mfc列表控件美化类包含ListCtrlCl.h,ListCtrlCl.cpp以及一个txt的类使用实例并一行一注解。 ①在工程目录.h文件中添加引用#include “ListCtrlCl.h” 添加实例化CListCtrlCl m_listctrl; 再在某个列表初始化函数中...
动态创建下拉框方案, 实现listcontrol与COmboBox组合
20.zip Display only One Row of Tabs 只显示一行Tab选择(2KB)<END><br>15,21.zip Add a Font Property Page 添加字体属性页(16KB)<END><br>16,22.zip Resizing the Property Sheet 改变属性页...
28.如何使用“颜色”对话框设置颜色 29.如何在“颜色”对话框中显示帮助按钮 30.如何禁止显示“颜色”对话框的自定义颜色 31.如何禁止“颜色”对话框的自定义颜色按钮 32.如何使用“字体”对话框设置字体和颜色 33....
6 <br>0014 如何锁定窗体中的控件 6 <br>0015 统一窗体中控件的字体设置 7 <br>0016 通过“格式”菜单布局窗体 7 <br>0017 起始页中的“Visual Studio开发人员新闻” 7 <br>1.3 MSDN帮助的...
0422 利用Pannel控件显示和隐藏一组控件 233 0423 如何在GridView控件上添加删除确认 234 0424 如何为GridView控件添加编号列 234 0425 FindControl方法的应用 234 0426 如何实现单击表格行打开另一页并...
13) 分行分列、单元格的颜色设置.........................................................................23 14) 点击不同单元格列,执行不同的动作.............................................................
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
第一章 关于本手册........................................................................................................................................ 1 简介 ..........................................
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
将光标放在每一行文字的开头或结尾的位置,按快捷键Ctrl+Shift+L。 C. 打开Text菜单下Align级联菜单Align right命令。 D. 按快捷键Ctrl+Shift+I 45.新增图层的方法有: A. 选择Insert菜单下的Layer命令 B. 按...