FAQ:WinAPI VCPP:закрасить фон окна CWnd — различия между версиями
Материал из Весельчак У
(Новая: Как закрасить фон окна CWnd? Нужно добавить обработчик сообщения WM_CTLCOLOR class CMyDialog : public CDialog { // CBrush m_back_br...) |
RXL (обсуждение | вклад) |
||
(не показано 14 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
− | Как закрасить фон окна CWnd? | + | ===Как закрасить фон окна CWnd?=== |
− | + | ||
− | class CMyDialog : public CDialog | + | Нужно добавить обработчик сообщения WM_CTLCOLOR. |
+ | |||
+ | <syntaxhighlight lang="cpp"> | ||
+ | class CMyDialog : public CDialog | ||
{ | { | ||
// | // | ||
Строка 16: | Строка 18: | ||
m_back_brush.CreateSolidBrush(RGB(192,186,207)); | m_back_brush.CreateSolidBrush(RGB(192,186,207)); | ||
} | } | ||
+ | </syntaxhighlight> | ||
+ | <syntaxhighlight lang="cpp"> | ||
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) | HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) | ||
{ | { | ||
Строка 25: | Строка 29: | ||
{ | { | ||
//у статиков делаем прозрачный фон | //у статиков делаем прозрачный фон | ||
− | pDC- | + | pDC->SetBkMode(TRANSPARENT); |
//и красный цвет текста | //и красный цвет текста | ||
− | pDC- | + | pDC->SetTextColor(RGB(255,0,0)); |
− | + | ||
− | //надо же что-то вернуть :) | + | //надо же что-то вернуть :) |
return (HBRUSH) (m_back_brush.m_hObject); | return (HBRUSH) (m_back_brush.m_hObject); | ||
} | } | ||
break; | break; | ||
− | + | ||
//диалог | //диалог | ||
case WM_CTLCOLORDLG: | case WM_CTLCOLORDLG: | ||
Строка 42: | Строка 46: | ||
break; | break; | ||
} | } | ||
− | + | ||
//фон по умолчанию | //фон по умолчанию | ||
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | ||
} | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | [[Category:FAQ:WinAPI VCPP]] [[Category:FAQ:MFC]] |
Текущая версия на 22:13, 3 октября 2009
Как закрасить фон окна 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); }