에디트박스, 리스트박스, Static Text 등 각종 컨트롤의 배경색을 변경하는 방법입니다.
클래스 위저드에서 WM_CTLCOLOR 메세지맵을 추가하고, 아래처럼 코딩합니다.
HBRUSH CSTrakDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
CRect rect;
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(nBkMode)
pDC->SetTextColor(RGB(0, 0, 0)); //text color
pDC->SetBkColor(0xffffff);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
pDC->SetBkMode(nBkMode)의 nBkMode 대신 OPAQUE와 TRANSPARENT 중 원하는 값을 넣으세요.
nCtlColor의 종류는 아래와 같습니다.
#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
단, 버튼에는 적용되지 않으니 유의하세요.
클래스 위저드에서 WM_CTLCOLOR 메세지맵을 추가하고, 아래처럼 코딩합니다.
HBRUSH CSTrakDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
CRect rect;
switch(nCtlColor)
{
case CTLCOLOR_STATIC:
pDC->SetBkMode(nBkMode)
pDC->SetTextColor(RGB(0, 0, 0)); //text color
pDC->SetBkColor(0xffffff);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
break;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
pDC->SetBkMode(nBkMode)의 nBkMode 대신 OPAQUE와 TRANSPARENT 중 원하는 값을 넣으세요.
nCtlColor의 종류는 아래와 같습니다.
#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
단, 버튼에는 적용되지 않으니 유의하세요.