다이얼로그 기반으로 프로그램을 하다보면 회색의 우중충한 다이얼로그 색 때문에 내 기분까지 우울해진다...
사실 그렇지는 않지만 언젠가 필요할 다이얼로그의 배경색을 바꾸는 법은 다음과 같이 OnEraseBkgnd() 함수의 재정의를 통해서 가능하다.
BOOL XXXXXXX::OnEraseBkgnd(CDC* pDC)
{
CRect winRC;
GetClientRect(winRC);
CBrush bkBrush(RGB(0, 0, 100));
CBrush* pOldBrush = pDC->SelectObject(&bkBrush);
pDC->Rectangle(winRC);
pDC->SelectObject(pOldBrush);
return TRUE;
}
OnEraseBkgnd()가 Class Wizard의 Message Map에 나타나지 않을 경우에는 맨 뒤의 Class Info 탭의 Advanced Options의 Message filter를 Window로 바꾼 후 다시 Message Map으로 돌아가면 찾을 수 있다.
OnEraseBkgnd()를 추가한 후 위와 같은 코드를 넣어준후 bkBrush()안의 RGB값을 바꾸면 원하는 색깔로 다이얼로그의 배경을 바꿀 수 있다.
주의 할 점은 OnEraseBkgnd()를 추가했을 때 return값이 다음과 같은데
return CDialog::OnEraseBkgnd(pDC);
저 부분을 return TRUE;로 바꾸는 것을 잊지 말자는 것...
사실 그렇지는 않지만 언젠가 필요할 다이얼로그의 배경색을 바꾸는 법은 다음과 같이 OnEraseBkgnd() 함수의 재정의를 통해서 가능하다.
BOOL XXXXXXX::OnEraseBkgnd(CDC* pDC)
{
CRect winRC;
GetClientRect(winRC);
CBrush bkBrush(RGB(0, 0, 100));
CBrush* pOldBrush = pDC->SelectObject(&bkBrush);
pDC->Rectangle(winRC);
pDC->SelectObject(pOldBrush);
return TRUE;
}
OnEraseBkgnd()가 Class Wizard의 Message Map에 나타나지 않을 경우에는 맨 뒤의 Class Info 탭의 Advanced Options의 Message filter를 Window로 바꾼 후 다시 Message Map으로 돌아가면 찾을 수 있다.
OnEraseBkgnd()를 추가한 후 위와 같은 코드를 넣어준후 bkBrush()안의 RGB값을 바꾸면 원하는 색깔로 다이얼로그의 배경을 바꿀 수 있다.
주의 할 점은 OnEraseBkgnd()를 추가했을 때 return값이 다음과 같은데
return CDialog::OnEraseBkgnd(pDC);
저 부분을 return TRUE;로 바꾸는 것을 잊지 말자는 것...