CEdit 컨트롤의 색상을 변경하기 위해서는 WM_CTLCOLOR을 이용한다.
일단 전역변수로 CBrush 와 COLORREF 변수를 선언해준다.
그리고 나서 클래스 위저드에서 다이얼로그 자체의 WM_CTLCOLOR을 생성해준다.
이 녀석은 그리기 전에 메시지를 가로채서 색상을 설정해주는 역활을 한다고 한다.
OnInitDialog() 에서
m_redcolor=RGB(255,0,0); // red
m_bluecolor=RGB(0,0,255); // blue
m_textcolor=RGB(255,255,255); // white text
m_redbrush.CreateSolidBrush(m_redcolor); // red background
m_bluebrush.CreateSolidBrush(m_bluecolor); // blue background
이런식으로 브러시와 색상을 미리 설정해준다.
그 다음에, OnCtlColor에서 GetDlgCtrlID()에 의해 분기를 쳐주면서
원하는 컨트롤의 ID에 연결해주면 원하는 색상으로 그려진다.
pDC->SetBkColor(m_bluecolor);
pDC->SetTextColor(m_textcolor);
hbr = (HBRUSH) m_bluebrush;
m_redcolor=RGB(255,0,0); // red
m_bluecolor=RGB(0,0,255); // blue
m_textcolor=RGB(255,255,255); // white text
m_redbrush.CreateSolidBrush(m_redcolor); // red background
m_bluebrush.CreateSolidBrush(m_bluecolor); // blue background
이런식으로 브러시와 색상을 미리 설정해준다.
그 다음에, OnCtlColor에서 GetDlgCtrlID()에 의해 분기를 쳐주면서
원하는 컨트롤의 ID에 연결해주면 원하는 색상으로 그려진다.
pDC->SetBkColor(m_bluecolor);
pDC->SetTextColor(m_textcolor);
hbr = (HBRUSH) m_bluebrush;
위의 내용을 사용하면되며,
SetBKColor()은 배경색상(기본값은 흰색)
SetTextColor()은 글씨색상(기본값은 검은색)
을 변경해주게 된다.
브러시를 리턴함으로, 이 브러시를 이용하여 실제로 변경한 색상으로 그려주게 된다.
아래는 OnCtlColor의 기본 템플릿이다.
클래스위저드가 생성하면 // TODO 사이의 내용이 없으므로 불편하다.
[링크 : http://www.codeguru.com/Cpp/controls/editctrl/backgroundcolor/article.php/c3929/#more]
[링크 : http://mind444.tistory.com/64]
SetBKColor()은 배경색상(기본값은 흰색)
SetTextColor()은 글씨색상(기본값은 검은색)
을 변경해주게 된다.
브러시를 리턴함으로, 이 브러시를 이용하여 실제로 변경한 색상으로 그려주게 된다.
아래는 OnCtlColor의 기본 템플릿이다.
클래스위저드가 생성하면 // TODO 사이의 내용이 없으므로 불편하다.
HBRUSH CBarcodeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch(nCtlColor) { case CTLCOLOR_EDIT: case CTLCOLOR_MSGBOX: switch (pWnd->GetDlgCtrlID()) { default: break; } break; case CTLCOLOR_STATIC: switch (pWnd->GetDlgCtrlID()) { default: break; } break; default: break; } // TODO: Return a different brush if the default is not desired return hbr; }
[링크 : http://www.codeguru.com/Cpp/controls/editctrl/backgroundcolor/article.php/c3929/#more]
[링크 : http://mind444.tistory.com/64]
'Programming > C Win32 MFC' 카테고리의 다른 글
2차원 배열 (0) | 2009.10.27 |
---|---|
윈도우 프로그램에서 폴더 생성하기 (0) | 2009.10.09 |
다이얼로그 박스 초기화 중에 종료하기 (0) | 2009.08.25 |
PreTranslateMessage 주의사항 (0) | 2009.08.25 |
CFile read시 "이름없는 파일에 대한 엑세스가 거부되었습니다" 에러발생 (0) | 2009.08.20 |