Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Фролов Александр. Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT - royallib.ru.doc
Скачиваний:
98
Добавлен:
11.03.2016
Размер:
905.62 Кб
Скачать

Методы AssertValid и Dump

Класс CSingleDoc содержит переопределения еще двух виртуальных методов – AssertValid и Dump, входящих в базовый класс CObject. Описание методов AssertValid и Dump вы можете найти в разделе “Класс CObject – основной класс MFC” главы “Некоторые классы MFC”.

Обратите внимание, что описание этих методов и их определение расположено в блоке #ifdef _DEBUG . Поэтому эти методы используются только для отладочной версии приложения. Когда выполняется окончательное построение приложения, эти методы не переопределяются.

//////////////////////////////////////////////////////////////

// Диагностические методы класса CSingleDoc

#ifdef _DEBUG

void CSingleDoc::AssertValid() const {

 CDocument::AssertValid();

}

void CSingleDoc::Dump(CDumpContext& dc) const {

 CDocument::Dump(dc);

}

#endif //_DEBUG

Класс cSingleView

Следующий класс, который мы рассмотрим, является классом окна просмотра документа CSingleView. Этот класс наследуется от базового класса CView библиотеки MFC. Определения класса CSingleView вы можете найти в файле SingleView.h.

Окно просмотра и связанный с ним класс окна просмотра документа создается шаблоном документа в процессе работы приложения. Поэтому необходимо, чтобы объекты класса CSingleView можно было создавать динамически.

Для этого определяется конструктор класса, не имеющий параметров, в определении класса указывается макрокоманда DECLARE_DYNCREATE, а в файле реализации макрокоманда IMPLEMENT_DYNCREATE.

class CSingleView : public CView {

protected:

 CSingleView();

 DECLARE_DYNCREATE(CSingleView)

 // Attributes

public:

 CSingleDoc* GetDocument();

 // Operations

public:

 // Overrides

 //{{AFX_VIRTUAL(CSingleView)

public:

 virtual void OnDraw(CDC* pDC);

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

 virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

 virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

 virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

 //}}AFX_VIRTUAL

 // Implementation

public:

 virtual ~CSingleView();

#ifdef _DEBUG

 virtual void AssertValid() const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

 // Методы, предназначенные для обработки сообщений

protected:

 //{{AFX_MSG(CSingleView)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

Секция Overrides в описании класса CSingleView содержит описания переопределяемых виртуальных методов базового класса CView. Два метода описаны в ней как public – OnDraw и PreCreateWindow и три как protected – OnPreparePrinting, OnBeginPrinting, OnEndPrinting. Поэтому методы OnDraw и PreCreateWindow можно вызывать и из других классов приложения, а методы OnPreparePrinting, OnBeginPrinting, OnEndPrinting только из класса CSingleView.

Таблица сообщений класса CSingleView

Таблица сообщений класса CSingleView располагается в файле SingleView.cpp. Непосредственно перед ней находится макрокоманда IMPLEMENT_DYNCREATE.

// Объекты класса CSingleView могут создаваться динамически

IMPLEMENT_DYNCREATE(CSingleView, CView)

// Таблица сообщений класса CSingleView

BEGIN_MESSAGE_MAP(CSingleView, CView)

 //{{AFX_MSG_MAP(CSingleView)

 //}}AFX_MSG_MAP

 // Стандартные команды предназначенные для печати документа

 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

END_MESSAGE_MAP()