관리 메뉴

History

[MFC] WM_CTLCOLOR 메시지 처리 코드(Static, Edit) 본문

MFC/개념 정리

[MFC] WM_CTLCOLOR 메시지 처리 코드(Static, Edit)

luckybee 2022. 10. 26. 17:16
728x90
반응형

1. 대화 상자 헤더에서 HBRUSH 브러시 선언

//컨트롤의 배경색상으로 사용할 브러시
HBRUSH mh_edit_bk_brush;

2. 대화 상자 생성자에서 브러시 선언

 //컨트롤의 배경색으로 사용할 브러시를 생성한다.
mh_edit_bk_brush = ::CreateSolidBrush(RGB(37, 40, 56));

3. OnCtlColor 함수에서 Static, Edit 컨트롤 관련 색상 변경 코드 추가

    if (nCtlColor == CTLCOLOR_STATIC) {  // Static 컨트롤의 색상
        if (pWnd != NULL && pWnd->GetDlgCtrlID() == IDC_OUTPUT_EDIT) {
            // 에디트 컨트롤이지만 읽기 속성인 경우 Static과 함께 분류됨
            pDC->SetTextColor(RGB(255, 255, 255));  // Edit 문자열 색상
            pDC->SetBkColor(RGB(0, 0, 0));  // Edit 배경 색상
            return (HBRUSH)::GetStockObject(BLACK_BRUSH);  // Edit 배경색 반환
        } else pDC->SetTextColor(RGB(228, 228, 228));  // static 문자열 색상
    } else if (nCtlColor == CTLCOLOR_EDIT) {  // Edit 컨트롤의 색상
        pDC->SetTextColor(RGB(255, 255, 255));  // Edit 문자열 색상
        pDC->SetBkColor(RGB(37, 40, 56));   // Edit 배경 색상
        return mh_edit_bk_brush;  // Edit  배경색 반환
    }

4. Destory 함수에서 버 브러시 객체 삭제

// 컨트롤의 배경으로 사용하던 브러시 제거
::DeleteObject(mh_edit_bk_brush);

 

728x90
반응형
Comments