Application/MFC

[MFC] CListCtrl 배경색 & 글자색 변경

devsalix 2023. 2. 9. 17:00
728x90

CListCtrl 컨트롤의 배경색 혹은 글자색을 변경하려면

 

컨트롤의 이벤트에서 NM_CUSTOMDRAW 를 추가한 후

 

해당 함수 내 소스를 변경하면 쉽게 처리가 가능합니다

 

특정 칼럼의 값에 따라 변경 하고 싶다면

 

void CWinshieldManagerDlg::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
	NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)pNMHDR;
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	*pResult = 0;

	WCHAR szValue[MAX_PATH];

	switch(pLVCD->nmcd.dwDrawStage)
	{
	case CDDS_ITEMPREPAINT:
		m_ListCtrlClient.GetItemText((int)pLVCD->nmcd.dwItemSpec, 0, szValue, sizeof(szValue));

		if(wcscmp(szValue, _T("1")) == 0)
		{
			//빨간색
			if(pLVCD->clrTextBk != RGB(255, 0, 0))
			{
				pLVCD->clrTextBk = RGB(255, 0, 0);
			}
		}
		else if(wcscmp(szValue, _T("2")) == 0)
		{
			//녹색
			if(pLVCD->clrTextBk != RGB(0, 255, 0))
			{
				pLVCD->clrTextBk = RGB(0, 255, 0);				
			}
			
		}
		else
		{
			//파란색
			if(pLVCD->clrTextBk != RGB(0, 0, 255))
			{
				pLVCD->clrTextBk = RGB(0, 0, 255);
			}
		}
		break;
	default:
		break;
	}
}

 

위와 같이 작성하면 컬럼의 첫 번째 값에 따라 해당 셀의 배경색이 변경됩니다

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형