MFC——Listcontrol 添加背景颜色
来源:互联网 发布:升级淘宝网新版本 编辑:程序博客网 时间:2024/06/06 17:55
在MFC中,我们经常会需要给自己的Listcontrol 添加背景颜色,下面便是如何添加的详细过程。首先需要你的程序有一个ListCtrl在对话框上,并且这个ListCtrl处于Report和多列模式。
Custom draw可以被想象成一个轻量级的,容易使用的重绘方法(重绘方法还有几种,例如Owner Draw等)。这种容易来自于我们只需要处理一个消息(
NM_CUSTOMDRAW
),就可以让Windows为你干活了,你就不用被逼去处理"重绘过程"中所有的脏活了。 Custom draw 的消息映射入口:
Custom draw 是一个类似于回调的处理过程,Windows在绘制List Ctrl的某个时间点上通过 Notification 消息通知你的程序,你可以选择忽略所有的通知(这样你就会看到标准的ListCtrl),或者处理某部分的绘制(实现简单的效果),甚至整个的控件都由你来绘制(就象使用Owner-Drawing一样)。这个机制的真正卖点是:你只需要实现一些你需要的,其余的可以让Windows为你代劳。
使用Custom draw:
首先添加一个消息映射:
1.在工程的.cpp文件中的BEGIN_MESSAGE_MAP下添加,其中IDC_LIST1是CListCtrl控件的ID
即:ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomdrawList)
2.在工程的.h文件类的声明内添加:
3.在工程的.cpp中写函数实现:
void CMyChattingroom_clientDlg::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 ){COLORREF crText,crBk;//奇偶判断if ( (pLVCD->nmcd.dwItemSpec % 2) == 0 ){crText = RGB(0,0,0);//RGB(32,32,255);crBk =RGB(229,232,239);}else if ( (pLVCD->nmcd.dwItemSpec % 2) == 1 ){crText = RGB(0,0,0);crBk = RGB(240,247,249);}else{crText = RGB(0,0,0);crBk = RGB(0,0,126);}pLVCD->clrText = crText;pLVCD->clrTextBk = crBk;//设置选择项的颜色if( this->mylistcontrol.GetItemState(pLVCD->nmcd.dwItemSpec, CDIS_SELECTED) ){crBk =RGB(75, 149, 229);//itunes//RGB(10, 36, 106);//RGB(0, 0, 64);crText = RGB(255,255,255);pLVCD->clrText = crText;pLVCD->clrTextBk = crBk;*pResult = CDRF_NEWFONT;}if(LVIS_SELECTED == mylistcontrol.GetItemState(pLVCD->nmcd.dwItemSpec,LVIS_SELECTED)){//清除选择状态,如果不清除的话,还是会显示出蓝色的高亮条BOOL b = mylistcontrol.SetItemState(pLVCD->nmcd.dwItemSpec,0,LVIS_SELECTED); pLVCD->clrText = crText;pLVCD->clrTextBk = crBk;*pResult = CDRF_NEWFONT;return;}*pResult = CDRF_NEWFONT;}}
经过以上几步就完成了Custom draw消息的添加,可以实现一些简单的美化效果。 0 0
- MFC——Listcontrol 添加背景颜色
- MFC控件—ListControl
- MFC—— 背景添加
- mfc中设置listcontrol某一行的背景和文字颜色
- MFC给对话框添加背景颜色
- listcontrol行背景颜色改变方法
- MFC——ListControl控件的使用
- MFC——设置控件文本字体、大小、颜色、背景
- VC/MFC——如何设置对话框背景颜色
- MFC对话框修改背景颜色或添加背景图片、控件背景与字体颜色的修改
- mfc改变背景颜色
- 设置MFC背景颜色
- MFC背景颜色
- MFC ListControl
- MFC ListCOntrol
- MFC ListControl
- cocos2dx添加背景颜色
- atom添加背景颜色
- 强行删除文件
- 计算机中数据的存储形式
- 算法---合并排序
- 傅里叶变换
- 机器学习常用数学公式
- MFC——Listcontrol 添加背景颜色
- 数模设计和GND的分割设计
- 【Java8源码分析】集合框架-LinkedList
- RabbitMQ学习
- 矩阵——vijos1049送给圣诞夜的礼品
- ceph相关命令介绍
- 串口打印Uncompressing Linux..... done, booting the kernel后不再打印
- Windows Server 2016 关闭Internet Explorer增强的安全配置
- 查找数字字符串中每个数字出现的次数