본문으로 바로가기

[MFC]Edit 컨트롤 색상 변경

category 프로그래밍/MFC 2020. 7. 3. 01:02
반응형

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(25500));
        hbr = ::CreateSolidBrush(RGB(25500));
    }
 
    return hbr;
}
 


if (pWnd->GetDlgCtrlID() == EDIT_CTL)

컨트롤러 ID 체크.


pDC->SetBkColor(RGB(25500));

글자의 배경색을 Red로 변경.


hbr = ::CreateSolidBrush(RGB(25500));
Edit Control의 색상을 Red로 변경.

RGB(25500)
Red 색상.

RGB(02550)
Green 색상.

RGB(00255)

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(25500));

글자의 배경색을 Red로 변경합니다.


hbr = ::CreateSolidBrush(RGB(02550));

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(25500));
        hbr = ::CreateSolidBrush(RGB(25500));
    }
 
    if (pWnd->GetDlgCtrlID() == IDC_EDIT2)
    {
        pDC->SetBkColor(RGB(02550));
        hbr = ::CreateSolidBrush(RGB(02550));
    }
 
    if (pWnd->GetDlgCtrlID() == IDC_EDIT3)
    {
        pDC->SetBkColor(RGB(00255));
        hbr = ::CreateSolidBrush(RGB(00255));
    }
 
    // TODO:  기본값이 적당하지 않으면 다른 브러시를 반환합니다.
    return hbr;
}
 



if (pWnd->GetDlgCtrlID() == IDC_EDIT1)

ID가 IDC_EDIT1인지 체크합니다.


pDC->SetBkColor(RGB(25500));

글자의 배경색을 Red로 변경합니다.


hbr = ::CreateSolidBrush(RGB(25500));

컨트롤러의 배경색을 Red로 변경합니다.


if (pWnd->GetDlgCtrlID() == IDC_EDIT2)

ID가 IDC_EDIT2인지 체크합니다.


pDC->SetBkColor(RGB(02550));

글자의 배경색을 Green으로 변경합니다.


hbr = ::CreateSolidBrush(RGB(02550));

컨트롤러의 배경색을 Green으로 변경합니다.


if (pWnd->GetDlgCtrlID() == IDC_EDIT3)

ID가 IDC_EDIT3인지 체크합니다.


pDC->SetBkColor(RGB(00255));

글자 배경을 Blue로 변경합니다.


hbr = ::CreateSolidBrush(RGB(00255));

컨트롤러의 색상을 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), 이중 원형 연결 리스트 예제

반응형