MFC - 리스트 컨트롤 (List control) 라인별 색상 지정

2014. 3. 20. 18:07Programing/MFC

1. 해더에 추가 

   afx_msg void OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult); 

 

2. Message Map 등록

    IDC_XXXX 는 컨트롤러 아이디를 적으시면 되요

    BEGIN_MESSAGE_MAP(CSIMDecoderV10View, CFormView)
       ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_SIM_INFO, OnCustomdrawList)
       ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST_RW_RESULT, OnCustomdrawList)

    END_MESSAGE_MAP()

 

3. 함수 추가

void CSIMDecoderV10View::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 )
 {
  if( (pLVCD->nmcd.dwItemSpec % 2)== 0  )
  {
   pLVCD->clrText     = RGB(0,     0,      0);            
   pLVCD->clrTextBk = RGB(219, 239, 252);
  }
  else
  {
   pLVCD->clrText     = RGB(0,     0,     0);          
   pLVCD->clrTextBk = RGB(255, 255, 255);
  }

  *pResult = CDRF_DODEFAULT;
 }
}