首页 > 其他分享 >【MFC】CListCtrl 如何设置单元格颜色?

【MFC】CListCtrl 如何设置单元格颜色?

时间:2023-08-07 17:02:29浏览次数:44  
标签:Head MFC CListCtrl 单元格 Cols Add 设置

CListCtrl默认可设置的内容很少,如单元格颜色默认无法设置。若想设置单元格颜色,需要对CListCtrl进行拓展,已有老外为我们写好demo,这里对其中原理、设置方法进行一个解析。

其原理是:设置CListCtrl控件的OwerDraw属性为true,然后使用GDI画图函数进行各种自定义绘制。

拓展的类为CColorListCtrl,必需引入的代码:ColorListCtrl.zip(4个文件)

将源码引入工程,#include "ColorListCtrl.h",将CListCtrl换成CColorListCtrl,构造函数中指定CColorListCtrl对象的列数(这里假定CListCtrl你已经会用了)。


部分代码如下:

//设置列是否有竖线隔开
m_ColListCtrl.SetColumnType(FALSE);
//设置选中行是否是实线边框
m_ColListCtrl.SetFocusType(FALSE);

//设置表头
CStringArray Head;
CByteArray   Cols;
Head.Add("Item");
Cols.Add(40);       //40%
Head.Add("Sub1");
Cols.Add(30);       //70%
Head.Add("Sub2");
Cols.Add(30);       //100%
m_ColListCtrl.InitCtrl(&Head, &Cols);

//添加数据
CString Linetitle;
int pos=0;
for (int x=0; x<10;x++)
{
	Head.RemoveAll();
	Linetitle.Format("Line %d",x);
	Head.Add(Linetitle);
	Linetitle.Format("SubLine %d-1",x);
	Head.Add(Linetitle);
	Linetitle.Format("SubLine %d-2",x);
	Head.Add(Linetitle);
	pos=m_ColListCtrl.AddItem(&Head);
	if (pos!=LISTCTRL_ERROR) ;
}

//设置背景色、前景色
m_ColListCtrl.SetItemBackgndColor(ITEM_COLOR(BackColIndex), int (m_IntItemPos), int (m_IntItemSubPos) );
m_ColListCtrl.SetItemTextColor(ITEM_COLOR(TextColIndex), int (m_IntItemPos), int (m_IntItemSubPos) );
	
//设置焦点、选择状态
m_ColListCtrl.SetItemState( int(m_IntItemStatePos), LVIS_SELECTED , LVIS_SELECTED|LVS_EX_FULLROWSELECT);
m_ColListCtrl.SetItemState( int(m_IntItemStatePos), LVIS_FOCUSED  , LVIS_FOCUSED|LVS_EX_FULLROWSELECT);

最后附上整个源demo工程的源码:coloredlistctrl.zip

效果截图:

标签:Head,MFC,CListCtrl,单元格,Cols,Add,设置
From: https://www.cnblogs.com/RioTian/p/17611870.html

相关文章

  • ABAP ALV 单元格按钮
    本文转自:https://blog.csdn.net/JZYDDFZJ/article/details/132101267一、介绍具体方法如下:1.提前给想要变成按钮的单元格赋值图标代码;2.在ALV数据输出表定义field_style参考表类型LVC_T_STYL(单元格的类型表)主要是放入控制单元格的状态的一些参数;3.把想编辑处理的字段名称放......
  • excel 合并单元格内容数据写入
    youcanusethiscodetoopen(test.xlsx)fileandmodifyA1cellandthensaveitwithanewnameimportopenpyxlxfile=openpyxl.load_workbook('test.xlsx')sheet=xfile.get_sheet_by_name('Sheet1')sheet['A1']='hel......
  • 使用Activate和Select方法选中单元格的异同
    尽管使用Activate方法和Select方法都能选中指定的单元格区域,但这两种方法并不完全相同。例如,选中A1:F5单元格区域后,再分别用两种方法选中B5单元格,我们可得: 选中单元格区域后,再使用Activate方法激活该区域里的一个单元格,该区域依然呈选中状态,只改变活动单元格为激活的单元格。如......
  • 关于union和合并单元格的区别
    选择与单元格A1中的值相等的所有单元格SubselectSameCells()DimgoalRangeAsRange,indexCellAsRangeSetgoalRange=Range("A1")ForEachindexCellInRange("A1:B5")IfindexCell.Value=Range("A1").ValueThen......
  • MFC-数学函数
     sin正弦函数FLOATpi=3.1415926;FLOATf=sin(pi/2);//正弦函数/*参数:FLOAT以弧度为单位返回值:FLOAT*/       ......
  • itextpdf5单元格中的段落没有行间距
    关于对表格中的段落没有行间距的解决方式:通过观察和推测的结论:itextpdf对一些属性,只会对最外层元素的属性进行接收处理,如行间距。例:Paragraphp=newParagraph(10,c);p.setLeading(p.getTotalLeading()+40);table.addCell(newParagraph(value+":",textFont));table.addCell(p......
  • 《Ext详解与实践》节选:自定义单元格的显示格式
    有时候,需要在Grid中显示一个链接,或根据数字的大小显示不同的颜色,又或者使用固定格式显示记录编号等,这就需要自定义单元格的显示格式。在Ext的Grid可以很容易的实现自定义单元格的显示格式。在定义Grid的ColumnModel的时候,在需要自定义显示格式的列中加入参数renderer,该参数指向一个......
  • 《MFC篇》悬浮button
    要在MFC中设置悬浮按钮,你可以按照以下步骤进行操作:首先,在你的对话框资源中创建一个普通的按钮控件,将其属性中的"Flat"设置为True,这将使按钮显示为一个扁平化的样式。在你的对话框类中添加按钮控件的成员变量。你可以使用类向导或手动添加。在对话框的OnInitDialog函数中,......
  • 官网解决-找不到mfc140u.dll,无法继续执行代码
    问题:找不到mfc140u.dll,无法继续执行代码原因:一般都是电脑缺少或丢失了dll,或者没安装对应版本的vc运行库解决:直接去官网下载vc运行库,安装即可直接上Microsoft官网链接:https://answers.microsoft.com/zh-hans/windows/forum/all/%E5%BE%AE%E8%BD%AF%E5%B8%B8%E7%94%A8%E8%BF%90......
  • 【MFC】CSingleLock的使用
    转载文章:CSingleLock的使用//先看看其代码://声明classCSingleLock{//Constructorspublic:CSingleLock(CSyncObject*pObject,BOOLbInitialLock=FALSE);//Operationspublic:BOOLLock(DWORDdwTimeOut=INFINITE);BOOLUnlock(......