Иллюстрированный самоучитель по Visual Studio.Net

На сайте http://www.prostitutki-minska.org интим минск. | Новостройки Энгельса по материалам www.urbaninfo.ru. | молдинг мебельный самоклеющийся купить |

Развитие класса документа - часть 2


CDPoint MapToWorldPt(CPolntS pt) ;

//===== Перерисовка окна редактирования

void UpdateDrawView();

// Чтение найденных документов и их демонстрация

void ProcessDocs();

//====== Освобождение контейнеров

void FreeDocs();

//====== Поиск выбранной точки

int FindPoint(CDPointS pt) ;

// Overrides

public:

virtual BOOL OnNewDocument();

virtual void Serialize(CArchiveS ar) ;

// Generated message map functions

protected:

DECLARE_MESSAGE_MAP()

);

Некоторым из данных документа можно присвоить значения по умолчанию. Обычно это делается в конструкторе класса. Зададимся неким произвольным размером (2000 х 2000) документа в логической (Page) системе координат. Чем больше эта область, тем точнее будут отражены детали конструкции, так как вещественные (World) координаты претерпят округление при приведении к целым (Page) координатам. Вспоминая, что две из наших тестовых фигур имеют габариты в 2 единицы в пространстве World, определяем коэффициент увеличения m_nLogZoom = 700. В этом случае габариты фигур в пространстве Page будут равны 1400 единиц, то есть они целиком поместятся в области документа. Выбрав произвольные начальные цвета фигуры и учтя соображения относительно установки обратного указателя, получим следующую версию конструктора класса CTreeDoc:

CTreeDoc::CTreeDoc() : m_szDoc(2000,2000), m_Poly()

{

//====== Установка обратного указателя и

//====== атрибутов дежурного полигона

m_Poly.Set(this, RGB(240,255,250), RGB(0,96,0), 2);

m_nLogZoom = 700;

}

Деструктор класса должен освобождать память, занимаемую динамическими структурами, входящими в состав класса. Метод FreeDocs мы создадим позже, поэтому при проверочных компиляциях проекта либо создайте заглушку — пустое тело функции FreeDocs, либо временно вставляйте символы комментария в строке с вызовом отсутствующей функции:

CTreeDoc::~CTreeDoc()

{

FreeDocs () ;

m_Poly .m_Points . clear () ;

}

Устойчивость данных документа обеспечивается функцией Serialize, и в стартовой заготовке класса уже есть этот метод.


Начало  Назад  Вперед