본문 바로가기

Development/C++

ListCtrl 행별 색상 바꾸기

  *. h 파일에서..

    1.  //}}AFX_MSG 다음에
    afx_msg void OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult);    <<-- 추가

*.cpp 에서
  메세지맵에 추가
    ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, OnCustomdrawList)

*실행문에서
void CResultListDlg::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  )     // 바꿀 홀짝으로 색 구분row 와 비교
     {
           pLVCD->clrText   = RGB(0, 0, 0);
           pLVCD->clrTextBk = RGB(240,247,249);
     }
      else    
     {
           pLVCD->clrText   = RGB(0, 0, 0);
           pLVCD->clrTextBk = RGB(229,232,239);
      }

             *pResult = CDRF_DODEFAULT;

        }       

}

자료출처 : 데브피아 - 임상혁 (mdbhyuk)