FAQ:WinAPI VCPP:закрасить фон окна CWnd

Материал из Весельчак У
Версия от 20:25, 3 октября 2008; Алексей1153++ (обсуждение | вклад) (Новая: Как закрасить фон окна CWnd? Нужно добавить обработчик сообщения WM_CTLCOLOR class CMyDialog : public CDialog { // CBrush m_back_br...)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Как закрасить фон окна 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); }