给控件添加自绘制消息 NM_CUSTOMDRAW

 

这种效果可以通过发送 一个NM_CUSTOMDRAW 消息就能够轻松解决。

 

class CMemWatchListCtrl : public CListCtrl 

{

//

void OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult);//用于重绘制

//

}

//ON_NOTIFY_REFLECT 是因为这是从CListCtrl继承的一个类

BEGIN_MESSAGE_MAP(CMemWatchListCtrl, CListCtrl)
  ON_NOTIFY_REFLECT( NM_CUSTOMDRAW , OnCustomDraw )    //消息映射     
END_MESSAGE_MAP()

View Code
 1 void CMemWatchListCtrl::OnCustomDraw(NMHDR *pNMHDR, LRESULT *pResult) 
 2 {  
 3     //类型安全转换 
 4     NMLVCUSTOMDRAW* pDraw = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); 
 5         *pResult = 0;   //指定列表项绘制前后发送消息
 6     if(CDDS_PREPAINT == pDraw->nmcd.dwDrawStage)  
 7     {   
 8         *pResult = CDRF_NOTIFYITEMDRAW; 
 9     }  else if( CDDS_ITEMPREPAINT == pDraw->nmcd.dwDrawStage ) 
10     {   //奇数行   
11         if(pDraw->nmcd.dwItemSpec % 2)   
12             pDraw->clrTextBk = ODD;    
13 
14         else
15             pDraw->clrTextBk = EVEN;
16         *pResult = CDRF_DODEFAULT;  
17     }
18 }

这样就可以实现该功能

 

 

转载于:https://www.cnblogs.com/kissshare/archive/2012/12/05/2802989.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值