Edit 컨트롤 색상 변경은 아래와 같습니다.
먼저 WM_CTLCOLOR 메시지 처리기를 추가 후 아래와 같이 소스코드를 추가하면 Edit 컨트롤의 색상을 변경할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | HBRUSH CMFCApplication5Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. if (pWnd->GetDlgCtrlID() == EDIT_CTL) { pDC->SetBkColor(RGB(255, 0, 0)); hbr = ::CreateSolidBrush(RGB(255, 0, 0)); } return hbr; } |
if (pWnd->GetDlgCtrlID() == EDIT_CTL)
컨트롤러 ID 체크.
pDC->SetBkColor(RGB(255, 0, 0));
글자의 배경색을 Red로 변경.
Blue 색상.
예제를 통해서 자세히 알아보겠습니다. 먼저 프로젝트 생성을 하겠습니다.
1. 프로젝트 생성 |
새 프로젝트 만들기를 클릭합니다.
프로젝트 이름과 경로를 설정 후 만들기를 클릭합니다.
대화 상자 기반 어플리케이션을 선택 후 마침을 클릭합니다.
2. 리소스 뷰 설정 |
Ctrl + A를 누른후 Delete키를 눌러 모두 지워줍니다.
Edit 컨트롤을 선택합니다.
Edit 컨트롤을 3개를 만들었습니다. 이름은 간단하게 IDC_EDIT1, IDC_EDIT2, IDC_EDIT3로 설정하였습니다.
3. 변수 추가 |
만들어진 컨트롤러의 변수를 추가해 줍니다. Ctrl + Shift + x를 눌러서 해당 컨트롤러의 변수를 추가해 줍니다.
변수명은 차례대로 m_strEdit1, m_strEdit2, m_strEdit3라고 하겠습니다.
4. 메세지 처리기 추가 |
WM_CTLCOLOR 메시지 처리기 추가를 합니다.
메시지 처리기를 추가하면 위에와 같이 코드가 추가가 됩니다.
5. Edit 컨트롤 색상 변경 예제 |
1) 예제
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
해당 컨트롤러가 맞는지 체크합니다.
pDC->SetBkColor(RGB(255, 0, 0));
글자의 배경색을 Red로 변경합니다.
hbr = ::CreateSolidBrush(RGB(0, 255, 0));
Edit 컨트롤의 배경색을 Green으로 변경합니다.
2) 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | HBRUSH CMFCApplication5Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 여기서 DC의 특성을 변경합니다. if (pWnd->GetDlgCtrlID() == IDC_EDIT1) { pDC->SetBkColor(RGB(255, 0, 0)); hbr = ::CreateSolidBrush(RGB(255, 0, 0)); } if (pWnd->GetDlgCtrlID() == IDC_EDIT2) { pDC->SetBkColor(RGB(0, 255, 0)); hbr = ::CreateSolidBrush(RGB(0, 255, 0)); } if (pWnd->GetDlgCtrlID() == IDC_EDIT3) { pDC->SetBkColor(RGB(0, 0, 255)); hbr = ::CreateSolidBrush(RGB(0, 0, 255)); } // TODO: 기본값이 적당하지 않으면 다른 브러시를 반환합니다. return hbr; } |
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
ID가 IDC_EDIT1인지 체크합니다.
pDC->SetBkColor(RGB(255, 0, 0));
글자의 배경색을 Red로 변경합니다.
hbr = ::CreateSolidBrush(RGB(255, 0, 0));
컨트롤러의 배경색을 Red로 변경합니다.
if (pWnd->GetDlgCtrlID() == IDC_EDIT2)
ID가 IDC_EDIT2인지 체크합니다.
pDC->SetBkColor(RGB(0, 255, 0));
글자의 배경색을 Green으로 변경합니다.
hbr = ::CreateSolidBrush(RGB(0, 255, 0));
컨트롤러의 배경색을 Green으로 변경합니다.
if (pWnd->GetDlgCtrlID() == IDC_EDIT3)
ID가 IDC_EDIT3인지 체크합니다.
pDC->SetBkColor(RGB(0, 0, 255));
글자 배경을 Blue로 변경합니다.
hbr = ::CreateSolidBrush(RGB(0, 0, 255));
컨트롤러의 색상을 Blue로 변경합니다.
만약 Red, Green, Blue가 아닌 다른 색상으로 변경하고 싶으면 적절하게 섞어서 사용하면 됩니다.
https://html-color-codes.info/Korean/
위에 URL에서 컬러 코드를 찾아서 사용하면 됩니다.
2020/02/26 - [프로그래밍/C++] - 프로그래머스 - 완주하지 못한 선수, sort algorithm 정리
2020/06/22 - [프로그래밍/C#] - C# 유튜브 동영상 다운로더 만들기(MP3, MP4)
2020/01/20 - [프로그래밍] - tortoise svn lock 해제 update 매크로
2020/02/26 - [프로그래밍/C++] - 프로그래머스 - 완주하지 못한 선수, sort algorithm 정리
2020/01/11 - [프로그래밍] - 비트맵의 구조, 24비트 비트맵의 구조는 어떻게 될까?
2020/01/05 - [프로그래밍/C] - 이중 연결 리스트(Double linked list), 이중 원형 연결 리스트 예제
'프로그래밍 > MFC' 카테고리의 다른 글
[MFC]CStdioFile 클래스를 이용해 유니코드 텍스트 저장, 불러오기 (0) | 2021.05.30 |
---|