Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, <Аноним>, Вы писали:
K>1. Создаю визардом MFC/SDI проект без поддержки Doc/View.
K>2. Переопределяю метод OnEraseBkgnd для моего класса CChildView производного от CWnd следующим образом:
K>K>BOOL CChildView::OnEraseBkgnd(CDC* pDC)
K>{
K> CBrush backBrush(RGB(0, 128, 128));
K> CBrush* pOldBrush = pDC->SelectObject(&backBrush);
K> CRect rect;
pDC->>GetClipBox(&rect);
pDC->>PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->>SelectObject(pOldBrush);
K> return TRUE;
K>}
K>
K>Опять всё работает. Что опять же логично.
У меня не работает. Делаю вот так:
Вот мое определение класса CChildView
class CChildView : public CWnd
{
// Construction
public:
CChildView();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CChildView)
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CChildView();
// Generated message map functions
protected:
//{{AFX_MSG(CChildView)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
Вот описание функции CChildView::OnEraseBkgnd:
BOOL CChildView::OnEraseBkgnd(CDC* pDC)
{
// Set brush to desired background color
CBrush backBrush(RGB(0, 255, 255));
// Save old brush
CBrush* pOldBrush = pDC->SelectObject(&backBrush);
CRect rect;
pDC->GetClipBox(&rect); // Erase the area needed
pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
pDC->SelectObject(pOldBrush);
return TRUE;
}
Не работает.

Фон окна остается белым. При попытке привязать class wizard'ом сообщение WM_ERASEBKGND к функции CChildView::OnEraseBkgnd вижу, что оное сообщение отсутствует в списке доступных для привязывания. Что я делаю не так? У меня VS6SP5.
Всего.