1. 程式人生 > >clistctrl改變單元格的背景顏色

clistctrl改變單元格的背景顏色

void CDiskDlg::OnCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)

{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
// TODO: Add your control notification handler code here
//*pResult = 0;
NMLVCUSTOMDRAW* nmcd=(NMLVCUSTOMDRAW*)pNMHDR;
*pResult=CDRF_DODEFAULT;


int row;
int col;


switch(nmcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
//if(m_bCustomDraw)
*pResult=CDRF_NOTIFYITEMDRAW; // else CDRF_DODEFAULT which stops notyfication messages
return;


case CDDS_ITEMPREPAINT:
*pResult=CDRF_NOTIFYSUBITEMDRAW;
return;


case CDDS_SUBITEM|CDDS_ITEMPREPAINT:
{
*pResult=0;
row=nmcd->nmcd.dwItemSpec;
col=nmcd->iSubItem;


CString str=mList.GetItemText(row,col);


CRect rect;
CDC* pDC=CDC::FromHandle(nmcd->nmcd.hdc);


if(col>0)
mList.GetSubItemRect(row,col,LVIR_BOUNDS,rect);
else
mList.GetItemRect(row,&rect,LVIR_LABEL);


UINT uCode=DT_LEFT;


if(row == 1&& col == 1)//設定第2行第2列單元格顏色
{
COLORREF kolor=0xffb010;


if(GetFocus()==this)
kolor=0x000000;


CBrush brush(kolor);
pDC->FillRect(&rect,&brush);
}


rect.OffsetRect(5,0);
pDC->DrawText(str,&rect,uCode);
*pResult=CDRF_SKIPDEFAULT;
break;
}
}
}