FAQ:WinAPI VCPP:закрасить фон окна CWnd
Материал из Весельчак У
Как закрасить фон окна CWnd?
Нужно добавить обработчик сообщения WM_CTLCOLOR.
class CMyDialog : public CDialog
{
//
CBrush m_back_brush;
...
...
};
//конструктор
CMyDialog::CMyDialog(): CDialog(CMyDialog::IDD)
{
//создаём кисть фона
m_back_brush.CreateSolidBrush(RGB(192,186,207));
}
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
switch(nCtlColor)
{
//CStatic-контрол
case WM_CTLCOLORSTATIC:
{
//у статиков делаем прозрачный фон
pDC->SetBkMode(TRANSPARENT);
//и красный цвет текста
pDC->SetTextColor(RGB(255,0,0));
//надо же что-то вернуть :)
return (HBRUSH) (m_back_brush.m_hObject);
}
break;
//диалог
case WM_CTLCOLORDLG:
{
//возвращаем хендл кисти нужного фона
return (HBRUSH) (m_back_brush.m_hObject);
}
break;
}
//фон по умолчанию
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}