CListCtrl 隔行变色

响应消息

ON_NOTIFY(NM_CUSTOMDRAW, ListCtrl的ID, OnNMCustomdrawList)

实现函数OnNMCustomdrawList

void CFinishWellToFind::OnNMCustomdrawList(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 clrNewTextColor, clrNewBkColor;

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

  POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
  int index = m_ListCtrl.GetNextSelectedItem(pos);

  if (index == nItem)//如果要刷新的项为当前选择的项,则将文字设为白色,背景色设为蓝色
  {
   clrNewTextColor = RGB(255,255,255);        //Set the text to white
   clrNewBkColor = RGB(49,106,197);        //Set the background color to blue
  }
  else if (nItem % 2) //奇偶行隔行变色
  {
   clrNewTextColor = RGB(0,0,0);        //set the text black
   clrNewBkColor = RGB(200,200,220);    //leave the background color white
  }
  else
  {
   clrNewTextColor = RGB(0,0,0);        //set the text black
   clrNewBkColor = RGB(255,255,255);    //leave the background color white
  }

  pLVCD->clrText = clrNewTextColor;
  pLVCD->clrTextBk = clrNewBkColor;

  *pResult = CDRF_DODEFAULT;
 }

}

猜你喜欢

转载自www.cnblogs.com/ye-ming/p/9262802.html
今日推荐