반응형

출처: http://crowback.tistory.com/36


Bool 처럼 어떤 값을 받으면 색을 바꾸는 코드를 만들고 싶었다.

그래서 찾다보니 WM_CTCOLOR라는 메시지가 있었다.

이 메시지를 처리하기 위한 핸들러를 추가하면 다음과 같은 코드가 생성된다.

그러면 switch 이하 구문을 이용하여 특정 컨트롤의 배경색을 변경할 수 있다..

HBRUSH CSpeedometerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	switch (nCtlColor)
	{
	case CTLCOLOR_STATIC: // 컨트롤의 구분타입이 Static인 경우
		if (pWnd->GetDlgCtrlID() == IDC_Verify) {
			// 컨트롤 윈도우에 있는 컨트롤 중 
			// ID가 IDC_Verify인 경우 처리하는 구문
		}
		break;
	}
	return hbr;
}

주의할 점은 Edit Control의 색 변경 시 Read Only 속성이라면

CTCOLOR_EDIT으로 찾는 게 아니라  CTCOLOR_STATIC으로 찾아야 한다.

반응형
Posted by 애콜라이트
l

free counters