본문 바로가기

Programming Tips/MFC

다이얼로그의 배경색 바꾸기

다이얼로그 기반으로 프로그램을 하다보면 회색의 우중충한 다이얼로그 색 때문에 내 기분까지 우울해진다...
사실 그렇지는 않지만 언젠가 필요할 다이얼로그의 배경색을 바꾸는 법은 다음과 같이 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;로 바꾸는 것을 잊지 말자는 것...