FAQ:WinAPI VCPP:закрасить фон окна CWnd — различия между версиями
Материал из Весельчак У
Строка 1: | Строка 1: | ||
=== Как закрасить фон окна CWnd? === | === Как закрасить фон окна CWnd? === | ||
− | <br>Нужно добавить обработчик сообщения WM_CTLCOLOR | + | <br>Нужно добавить обработчик сообщения WM_CTLCOLOR |
− | + | <br> | |
− | <pre>class CMyDialog : public CDialog | + | <pre> class CMyDialog : public CDialog |
{ | { | ||
− | + | // | |
CBrush m_back_brush; | CBrush m_back_brush; | ||
... | ... | ||
Строка 28: | Строка 28: | ||
//и красный цвет текста | //и красный цвет текста | ||
pDC->SetTextColor(RGB(255,0,0)); | pDC->SetTextColor(RGB(255,0,0)); | ||
− | //надо же что-то вернуть :) | + | //надо же что-то вернуть :) |
return (HBRUSH) (m_back_brush.m_hObject); | return (HBRUSH) (m_back_brush.m_hObject); | ||
} | } | ||
Строка 42: | Строка 42: | ||
//фон по умолчанию | //фон по умолчанию | ||
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | ||
+ | |||
}</pre> | }</pre> | ||
<br> | <br> |
Версия 20:32, 3 октября 2008
Как закрасить фон окна 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);
}