Шаг 153 - Много элипсов шаг 2

Пора встраивать код класса в каркас MFC. Все данные должны храниться в классе документа, он у нас CTestEllipseDoc поэтому в заголовочный файл включаем описание нашего класса.

// TestEllipseDoc.h : interface of the CTestEllipseDoc class
//
///////////////////////////////////////////////////////////////

#if !defined(AFX_TESTELLIPSEDOC_H__304EAAEB_FB25_11D3_B050_000001260696__INCLUDED_)
#define AFX_TESTELLIPSEDOC_H__304EAAEB_FB25_11D3_B050_000001260696__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ContainerEllipce.h"

И переменную класса в классе документа.

class CTestEllipseDoc : public CDocument
{
........
public:
	CContainerEllipce cEllipce;
	virtual ~CTestEllipseDoc();
........

Первое, что делаем это в новом документе обнуляем массив и добавляем новый эллипс.

BOOL CTestEllipseDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	cEllipce.Clear(); 
	cEllipce.Add(CRect(10,10,100,100));

        return TRUE;
}

Зачем я сразу добавляю эллипс ??? Так его можно будет отредактировать потом. А зачем Вам пустой документ ????

Для сохранения документа нужно тоже писать код.

///////////////////////////////////////////////
// CTestEllipseDoc serialization

void CTestEllipseDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		ar << cEllipce.GetSize(); 
		for (int x=0;x > i ;
		CRect cr;
		for (int x=0;x > cr;
		cEllipce.Add(cr);
		}
	}
}

Идея простая, сначала записать сколько эллипсов, а потом и сами данные. При чтении также. Читаем сколько и потом по одному добавляем в массив.

Рисовать будет функция Draw в классе вида.

///////////////////////////////////////////////
// CTestEllipseView drawing

void CTestEllipseView::OnDraw(CDC* pDC)
{
	CTestEllipseDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	
	pDoc->cEllipce.Draw(pDC);      
}

Она просто вызывает заранее подготовленную функцию рисование.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.03.2000