MFC绘制CListCtrl单元格颜色+重绘窗体背景+电脑桌面绘制图片等

本文介绍了如何在MFC中自定义CListCtrl单元格颜色,根据内容赋予不同颜色,以及如何重绘窗体背景,利用图片资源作为背景。此外,还探讨了在电脑桌面绘制图片的两种方法,包括直接使用桌面CDC和创建透明全屏窗体进行绘制,避免闪屏问题。
摘要由CSDN通过智能技术生成

提示://假设你现在有一个窗体类 CPosition

先给童鞋补一个重写窗体函数的小技巧,以防产生无谓的疑惑:

·打开你的ClassView

·Add Windows Message Handler

·根据你的需要添加tiemrpaintsizeclose ……

·有的童鞋可能删除了某些编译器给你自动生成的配置文件导致以上行为无法实现,不用担心,

那就打开你的ResourceView,打开你的对话框,右键添加类向导,选择添加全部即可恢复。

 

一、设置CListCtrl单元格的颜色

MFCCListCtrl默认的颜色是屎灰色,有时候我们需要表格有不同的颜色表示不同的数据,

让数据有不同的状态或者有其他不同的特性。为了达到这个目的,我们只需要重写函数OnCustomdrawMyList

废话不多说,直接看代码,废话都在代码中的注释里面。

//表格颜色的重绘是按照一次只重绘每一行的每一列来进行的

void  CPosition::OnCustomdrawMyList ( 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 )

        {

        

//这是一个行的通知消息。

 

        *pResult = CDRF_NOTIFYSUBITEMDRAW;

        }

    else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )

        {

              //用例表示字体颜色和背景颜色

COLORREF crText, crBkgnd;

CString strTemp;

//判断买卖

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

CHeaderCtrl* pHeaderCtrl = m_tradelist.GetHeaderCtrl();

 

              //定义五个状态,分别用来判断五列是否存在

int dir =-1; //方向

int hold =-1; //状态1

int holdbyday =-1; //状态2

int holdbytick =-1; //状态3

              //!!!!!!!!!!!!!!!!!!!!!!重要!!!!!!!!!!!!!!!!!!!!!

//这个地方是你需要做的,你需要自己定义上面四个状态,即自己的四列值是否存在,

              //如果确定是存在的,就把这四个值设为对应的列数 1 2 3 4 

              //!!!!!!!!!!!!!!!!!!!!!!重要!!!!!!!!!!!!!!!!!!!!!

 

if(dir != -1&&pLVCD->iSubItem ==dir) //如果存在这一列并且正在绘制这一列

{

strTemp =m_tradelist.GetItemText(nItem,dir);

if(strcmp(strTemp,"") ==0)

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值