CLIstCtrl更改行颜色!

 

void   CListCtrlPro::DrawItem(LPDRAWITEMSTRUCT   lpDrawItemStruct)  
  {  
  //得到dc  
  LPDRAWITEMSTRUCT   lpDIS   =   lpDrawItemStruct;  
  CDC*   pDC   =   CDC::FromHandle(lpDIS->hDC);  
   
  LVITEM   lvi   =   {0};  
  lvi.mask   =   LVIF_STATE;//|LVIF_IMAGE;  
  lvi.stateMask   =   LVIS_FOCUSED   |   LVIS_SELECTED   ;  
  lvi.iItem   =   lpDIS->itemID;  
  BOOL   bGet   =   GetItem(&lvi);  
   
  BOOL   bHighlight   =((lvi.state   &   LVIS_DROPHILITED)||  
                                      (   (lvi.state   &   LVIS_SELECTED)   &&    
                    (  
          (GetFocus()   ==   this)||   (GetStyle()   &   LVS_SHOWSELALWAYS)  
            )  
              )  
            );  
   
  //   画文本背景  
  CRect   rcBack   =   lpDIS->rcItem;  
  CMemDC   dc(pDC,rcBack);  
  dc.SetBkMode(TRANSPARENT);  
  if(   bHighlight   )  
  {  
  dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));  
  dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));  
   
  dc.FillRect(rcBack,   &CBrush(::GetSysColor(COLOR_HIGHLIGHT)));  
  }  
  else  
  {  
  dc.SetTextColor(0x0C0F80);  
  if   (lpDIS->itemID%2   ==0)  
  dc.FillRect(rcBack,   &CBrush(0xEEF1E3));  
  else  
  dc.FillRect(rcBack,   &CBrush(0xE3e3e3));  
  }  
   
  //设置字体颜色  
  CString   str;  
   
  //得到焦点大小  
  CRect   rcFocus   =   lpDIS->rcItem;  
  rcFocus.DeflateRect(1,1,1,1);  
   
  if   (lpDIS->itemAction   &   ODA_DRAWENTIRE)  
  {  
  //写文本  
  CString   szText;  
      //设置字体  
      //返回当前选择的CFont的指针,获得Windows默认的字体  
  CFont*   font   =   CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT));  
  CFont*   pOldFont   =   dc.SelectObject(font);  
  /*  
  font.DeleteObject();  
  LOGFONT   lf={0};  
  pDC->GetCurrentFont()->GetLogFont(&lf);  
  lf.lfHeight   =13;//   -13;//14;  
  //与Windows字体关联  
  font.CreateFontIndirect(&lf);  
  */  
  for   (int   i   =   0;   i   <   GetColumnCount();   i++)  
  {   //循环得到文本  
  CRect   rcItem;  
  if   (   !GetSubItemRect(lpDIS->itemID,   i,   LVIR_LABEL,   rcItem   ))  
  continue;  
  szText   =   GetItemText(   lpDIS->itemID,   i   );  
   
  rcItem.left   +=   5;   rcItem.right   -=   1;  
  dc.DrawText(szText,   lstrlen(szText),   &rcItem,   DT_VCENTER|DT_NOPREFIX|DT_SINGLELINE);  
  }  
  dc.SelectObject(pOldFont);  
  }      
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值