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

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

Жанры

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 {

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

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Отчий дом. Семейная хроника

Чириков Евгений Николаевич
Проза:
классическая проза
5.00
рейтинг книги
Отчий дом. Семейная хроника

Скандальная свадьба

Данич Дина
1. Такие разные свадьбы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Скандальная свадьба

Путанабус. Трилогия

Старицкий Дмитрий
Фантастика:
боевая фантастика
6.93
рейтинг книги
Путанабус. Трилогия

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Потомок бога

Решетов Евгений Валерьевич
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Потомок бога

С Д. Том 16

Клеванский Кирилл Сергеевич
16. Сердце дракона
Фантастика:
боевая фантастика
6.94
рейтинг книги
С Д. Том 16

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

От Советского Информбюро - 1941-1945 (Сборник)

Неизвестен 3 Автор
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
От Советского Информбюро - 1941-1945 (Сборник)

Санек 3

Седой Василий
3. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 3

Прометей: повелитель стали

Рави Ивар
3. Прометей
Фантастика:
фэнтези
7.05
рейтинг книги
Прометей: повелитель стали

Отмороженный 14.0

Гарцевич Евгений Александрович
14. Отмороженный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Отмороженный 14.0