WM_CTLCOLOR 메시지는 컨트롤이 처음 생성될 때 또는 컨트롤이 다시 그려져야할 필요가 있을 때 컨트롤의 색상을 결정하기 위한 메시지 이다.
이 메시지의 핸들러를 등록하여 컨트롤의 색상을 처리할 수 있다. 파라미터는 다음과 같다.
- pDC : 윈도우에서 그리기 작업에 필요한 모든 정보를 가지고 있는 디바이스 컨텍스트 구조체 포인터
- pWnd : 화면에 그려질 대상 컨트롤에 대한 포인터
- nCtlColor : 컨트롤의 종류에 대한 정수값. 예를들어 에디트 컨트롤이라면 CTLCOLOR_EDIT이고 해당 컨트롤이 읽기 전용이라면 CTLCOLOR_STATIC이 된다.
위 파라미터를 활용하여 특정 컨트롤에 대한 색상 처리를 수행하고 변경된 색상을 나타내는 HBRUSH를 반환하면 된다. 반환된 브러시는 실제 해당 컨트롤을 그릴 때 사용된다.
HBRUSH CRwrDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 여기서 DC의 특성을 변경합니다.
// 컨트롤의 ID가 IDC_EDIT1이고 STATIC인 경우 배경색을 흰색으로 변경
if (pWnd->GetDlgCtrlID() == IDC_EDIT1 && nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkColor(RGB(255, 255, 255));
hbr = CreateSolidBrush(RGB(255, 255, 255));
}
// TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다.
return hbr;
}
'프로그래밍 > MFC (C++)' 카테고리의 다른 글
MFC ] 정적 라이브러리에서 MFC 사용 (0) | 2023.12.15 |
---|---|
MFC ] PeekMessage() / GetMessage()와의 차이 (0) | 2023.11.14 |
Win32 API ] 메시지 루프 (0) | 2023.11.13 |
MFC ] 특정 컨트롤에 포커스 설정하기 (0) | 2023.11.06 |
시스템 종료와 관련된 윈도우 메시지 WM_QUERYENDSESSION, WM_ENDSESSION (0) | 2023.11.02 |