1. Dialog 의 Window Message 중 WM_CTLCOLOR 을 Enable 한다.
2. OnCtlColor 함수가 자동으로 생긴다.
3. OnCtlColor 함수는 Control이 보여주는 이벤트가 생길 때(Test 를 쓰거나 등) 불리게 된다. (참조: Link)
4. OnCtlColor 함수를 적어준다. (참조: Link)
5. 내가 원하는 특정 Control 만을 변경시키고 싶으면 각 case 안 해당 코드에 if 를 넣어주면 된다.
No 4
HBRUSH Cxxxxxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch(nCtlColor){
case CTLCOLOR_DLG: /// 다이얼로그 배경색을 white로.
{ return (HBRUSH)GetStockObject(WHITE_BRUSH);
break;
break;
}
case CTLCOLOR_BTN : // 버튼의 배경색을 투명으로...
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
case CTLCOLOR_STATIC:
{
pDC->SetTextColor(RGB(0,255,255)); // static text 글자색 변경
pDC->SetBkMode(TRANSPARENT); // static text 배경색 투명
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
}
// TODO: Return a different brush if the default is not desired
return hbr;
}