Добавим еще один класс наследник от нашего базового класса. Почему я там его назвал, не знаю, где-то видел похожую цветовую раскраску.
Все, что нужно сделать - это перегружать функции рисования.
#include "CustomDrawDialog.h" #define BASE_COLOR RGB(155,155,155) class CLunixDialog : public CCustomDrawDialog { public: CLunixDialog(); virtual ~CLunixDialog(); void DrawBottom(CRect cr,CDC *dc); void DrawLight(CRect cr,CDC *dc); void DrawLeft(CRect cr,CDC *dc); void DrawCaption(CRect cr,CDC *dc); };
И реализация:
void CLunixDialog::DrawBottom(CRect cr,CDC *dc) { CBrush tempBrush1; tempBrush1.CreateSolidBrush(BASE_COLOR); dc->FillRect(&cr,&tempBrush1); } void CLunixDialog::DrawLight(CRect cr,CDC *dc) { CBrush tempBrush1; tempBrush1.CreateSolidBrush(BASE_COLOR); dc->FillRect(&cr,&tempBrush1); } void CLunixDialog::DrawLeft(CRect cr,CDC *dc) { CBrush tempBrush1; tempBrush1.CreateSolidBrush(BASE_COLOR); dc->FillRect(&cr,&tempBrush1); } void CLunixDialog::DrawCaption(CRect cr,CDC *dc) { CBrush tempBrush1; tempBrush1.CreateSolidBrush(BASE_COLOR); dc->FillRect(&cr,&tempBrush1); }
В принципе очень удобно, мы уже ничего не должны знать и думать только о том, как сделать отображение нужного прямоугольника. Осталось только наш класс применить. Подключаем описание.
///////////////////////// // CTestPaintDlg dialog #include "LunixDialog.h" class CTestPaintDlg : public CDialog .........
И используем:
void CTestPaintDlg::DrawWindowArea( BOOL b) { CLunixDialog cl; cl.Draw(this); }
При этом нет разницы, то ли диалог вызывается из программы, то ли это программа на базе диалогового окна. Необходимые OGX файлы в проекте.