1. 程式人生 > >VC listview控制元件設定條目的背景色

VC listview控制元件設定條目的背景色

 

1、新增訊息

在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間新增訊息對映

ON_NOTIFY(NM_CUSTOMDRAW,IDC_LIST_SHOWSTATE,OnCustomdrawList)

2、新增宣告

在標頭檔案AFX_MSG之間新增

afx_msg void OnCustomdrawList(NMHDR*,    LRESULT*);

3、新增實現程式碼

在窗體類的實現檔案新增

void CYourDlg::OnCustomdrawList(NMHDR* pNMHDR,LRESULT* pResult)
{
NMLVCUSTOMDRAW*    pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult    =    0;   

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)
{
   int nItemSpec = pLVCD->nmcd.dwItemSpec;
   int nSubItem = pLVCD->iSubItem;
  
   //根據nItemSpec ,nSubItem 分別處理
   //設定背景色呼叫pLVCD->clrTextBk=RGB(?,?,?);
   //例如隔行換色
   if(nItemSpec %2)
     pLVCD->clrTextBk=RGB(255,0,0);
   else
     pLVCD->clrTextBk=RGB(0,255,0);

   *pResult=CDRF_DODEFAULT;
}

}