Класс 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()

Конструктор и деструктор класса CSingleView

Конструктор класса CSingleView, созданный MFC AppWizard, не содержит команд. Вы можете доработать его, чтобы конструктор выполнял инициализацию, связанную с окном просмотра.

// Конструктор класса CSingleView

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги