Чтение онлайн

на главную - закладки

Жанры

Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2

Фролов Григорий Вячеславович

Шрифт:

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

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

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)

 //{{AFX_MSG_MAP(CChildFrame)

 //}}AFX_MSG_MAP

END_MESSAGE_MAP

Метод PreCreateWindow класса CChildFrame

Метод PreCreateWindow вызывается перед созданием дочернего окна MDI. Вы можете использовать его, чтобы переопределить стили этого окна:

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs) {

// TODO:

 return CMDIChildWnd::PreCreateWindow(cs);

}

Методы AssertValid
и Dump класса CChildFrame

Методы AssertValid и Dump переопределяются в классе CMainFrame только для отладочной версии приложения и используются при отладке приложения:

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

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

#ifdef _DEBUG

void CChildFrame::AssertValid const {

 CMDIChildWnd::AssertValid;

}

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

 CMDIChildWnd::Dump(dc);

}

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

Класс документа приложения CMultiDoc наследуется от базового класса CDocument библиотеки MFC. Определение этого класса вы можете найти в файле MultiDoc.h. Мы привели структуру класса CMultiDoc на рисунке 1.12.

Рис. 1.12. Окно Project Workspace, класс CMultiDoc

MFC AppWizard определяет класс CMultiDoc одинаково для однооконных и для многооконных приложений. Единственное исключение составляет название класса документа, которое создается на основе имени проекта:

class CMultiDoc : public CDocument {

protected:

 CMultiDoc;

 DECLARE_DYNCREATE(CMultiDoc)

// Attributes

public:

// Operations

public:

// Overrides

 //{{AFX_VIRTUAL(CMultiDoc)

public:

 virtual BOOL OnNewDocument;

 virtual void Serialize(CArchive& ar);

 //}}AFX_VIRTUAL

// Implementation

public:

 virtual ~CMultiDoc;

#ifdef _DEBUG

 virtual void AssertValid const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

protected:

 //{{AFX_MSG(CMultiDoc)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

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

Конструктор и деструктор класса CMultiDoc не содержит программного кода. Вы можете добавить его по мере необходимости:

CMultiDoc::CMultiDoc {

 // TODO:

}

CMultiDoc::~CMultiDoc {}

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

Таблица сообщений класса CMultiDoc не содержит ни одного обработчика сообщений:

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

IMPLEMENT_DYNCREATE(CMultiDoc, CDocument)

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

BEGIN_MESSAGE_MAP(CMultiDoc, CDocument)

 //{{AFX_MSG_MAP(CMultiDoc)

 //}}AFX_MSG_MAP

END_MESSAGE_MAP

Методы OnNewDocument и Serialize класса CMultiDoc

В классе CMultiDoc переопределены два виртуальных метода – OnNewDocument и Serialize. Виртуальный метод OnNewDocument определен в классе CDocument, от которого непосредственно наследуется класс CSingleDoc.

Метод OnNewDocument вызывается, когда надо создать новый документ для приложения. Для одноконных приложений метод OnNewDocument вызывался только один раз при запуске приложения.

Для многооконного приложения метод OnNewDocument вызывается каждый раз, когда пользователь создает новый документ. Более подробно об использовании метода OnNewDocument мы расскажем в следующих главах, когда к шаблону приложения, созданному MFC AppWizard, мы будем добавлять собственный код:

BOOL CMultiDoc::OnNewDocument {

 if (!CDocument::OnNewDocument) return FALSE;

 // TODO: Здесь можно выполнить инициализацию документа

 return TRUE;

}

Метод Serialize вызывается в тех случаях, когда надо загрузить документ из файла на диске или наоборот, записать его в файл:

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

// Метод Serialize класса CMultiDoc

void CMultiDoc::Serialize(CArchive& ar) {

 if (ar.IsStoring) {

// TODO:

 } else {

Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит