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


Класс для нового представления документа


При создании второго шаблона документов мы определили новую комбинацию классов, которые будут поддерживать функционирование окон нового типа. Клиентской областью этих окон будет управлять класс CDrawView, к созданию которого мы и приступаем.

  1. Поставьте фокус на элемент Tree дерева классов в окне Class View, вызовите контекстное меню и выберите команду Add > Add Class.
  2. В окне появившегося диалога выберите категорию MFC, шаблон MFC Class и нажмите кнопку Open.

  3. В окне MFC Class Wizard задайте имя класса CDrawView и выберите класс CView в списке Base Class.

  4. Нажмите кнопку Finish.

Примечание

Среди классов списка Base Class теперь есть класс CObject. Как ни странно, но в Visual Studio 6 вы не могли бы рассчитывать на помощь ClassWizard при создании класса, производного от CObject.

В папке проекта появились еще два файла (DrawView.h и DrawView.cpp), которые были автоматически включены в состав проекта. Класс приложения должен их видеть, поэтому вставьте в конец списка директив #include файла Тгее.срр еще одну:

#include "DrawView.h"

Внесите изменения в интерфейс класса, так чтобы он стал:

#pragma once

class CTreeDoc; // Упреждающее объявление

class CDrawView : public CView {

DECLARE_DYNCREATE(CDrawView) protected:

CSize m_szView; // Размеры клиетской области окна

bool m_bNewPoints; // Флаг режима вставки новых точек

bool m_bReady; // Флаг готовности захвата вершины

bool m_bLock; // Флаг захвата вершины

int m_CurID; // Индекс полигона в массиве

HCURSOR m_hGrab; // Курсор захвата

CPen m_penLine; // Перо для изображения контура

CDrawView();

virtual ~CDrawView();

public:

CTreeDoc* GetDocument()

{

return dynamic_cast<CTreeDoc*>(m_pDocument);

}

virtual void OnDraw(CDC* pDC);

//====== Настройка контекста устройства

void SetDC(CDC* pDC);

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

void RedrawLines (CDC *pDC, CPointS point);

DECLARE_MESSAGE_MAP()

};

Так как мы ввели в класс новый метод GetDocument и тут же дали коды его реализации, то класс CTreeDoc должен быть известен компилятору до того, как он познакомится с классом CDrawView.


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