FAQ:WinAPI VCPP:закрасить фон окна CWnd — различия между версиями
Материал из Весельчак У
| Строка 20: | Строка 20: | ||
{ | { | ||
| − | switch(nCtlColor) | + | switch(nCtlColor) |
| − | { | + | { |
| − | //CStatic-контрол | + | //CStatic-контрол |
case WM_CTLCOLORSTATIC: | case WM_CTLCOLORSTATIC: | ||
{ | { | ||
| Строка 46: | Строка 46: | ||
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | return CDialog::OnCtlColor(pDC, pWnd, nCtlColor); | ||
| + | |||
}</pre> | }</pre> | ||
<br> | <br> | ||
Версия 20:41, 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);
}