CListCtrl 交替行绘制不同背景色(转)

此响应WM_ERASEBKGND消息
BOOL MyList::OnEraseBkgnd(CDC*pDC)
{
 // TODO:在此添加消息处理程序代码和/或调用默认值
  
  CRect rect;
  GetClientRect(rect);

  POINTmypoint; 
 
  CBrush brush0(m_colRow1);
  CBrush brush1(m_colRow2);

 
 int chunk_height=GetCountPerPage();
 pDC->FillRect(&rect,&brush1);
 for (inti=0;i<=chunk_height;i++)
 {
  
 
 GetItemPosition(i,&mypoint);
 rect.top=mypoint.y ;
 GetItemPosition(i+1,&mypoint);
 rect.bottom =mypoint.y;
 pDC->FillRect(&rect,i %2 ? &brush1 :&brush0);

 }
 brush0.DeleteObject();
  brush1.DeleteObject();
  return FALSE;
}
 
此响应消息NM_CUSTOMDRAW
void MyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT*pResult)
{
  *pResult =0;   
  LPNMLVCUSTOMDRAW  lplvcd =(LPNMLVCUSTOMDRAW)pNMHDR;
  int iRow = lplvcd->nmcd.dwItemSpec;
  switch(lplvcd->nmcd.dwDrawStage)
  {
      caseCDDS_PREPAINT :
      {
          *pResult = CDRF_NOTIFYITEMDRAW;
          return;
      }
      //Modify item text and or background
      caseCDDS_ITEMPREPAINT:
      {
          lplvcd->clrText = RGB(0,0,0);
          // If you want the sub items the same as the item,
          // set *pResult to CDRF_NEWFONT
          *pResult = CDRF_NOTIFYSUBITEMDRAW;
          return;
      }
      //Modify sub item text and/or background
      caseCDDS_SUBITEM | CDDS_PREPAINT | CDDS_ITEM:
      {
   
              if(iRow %2){
                lplvcd->clrTextBk = m_colRow2;
              }
              else{
                  lplvcd->clrTextBk = m_colRow1;
              }
   
              *pResult = CDRF_DODEFAULT;
              return;
      }
  }
}
转自:http://blog.sina.com.cn/s/blog_4ad18f56010006s8.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值