Шаг 74 - Свой класс на основе базового

Добавим еще один класс наследник от нашего базового класса. Почему я там его назвал, не знаю, где-то видел похожую цветовую раскраску.

74_1.gif (2477 b)

Все, что нужно сделать - это перегружать функции рисования.

#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); 
}

74_2.gif (2997 b)

При этом нет разницы, то ли диалог вызывается из программы, то ли это программа на базе диалогового окна. Необходимые OGX файлы в проекте.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 06.07.2002