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

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

Жанры

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

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

Шрифт:

// Ошибка создания панели управления

TRACE0("Failed to create toolbar\n");

return -1;

 }

 if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) {

// Ошибка создания панели состояния

TRACE0("Failed to create status bar\n");

return -1;

 }

 m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

 m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

 EnableDocking(CBRS_ALIGN_ANY);

 DockControlBar(&m_wndToolBar);

 return 0;

}

Структура indicators,

описывающая индикаторы панели состояния, определена в файле MainFrm.h следующим образом:

static UINT indicators[] = {

 ID_SEPARATOR,

 ID_INDICATOR_CAPS,

 ID_INDICATOR_NUM,

 ID_INDICATOR_SCRL,

};

Сейчас мы не станем подробно останавливаться на процедуре создания панелей состояния и управления. Во первых, в 24 томе мы уже рассматривали метод OnCreate однооконного приложения Single. Он фактически полностью повторяет метод OnCreate приложения Multi. Во вторых мы посвятили проблеме использования меню, панелей состояния и панелей управления отдельный раздел “Меню, панели управления и панели состояния”. Прочитав его, вы полностью поймете как устроен метод OnCreate класса CMainFrame.

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

Метод PreCreateWindow вызывается перед созданием окна и позволяет изменить его характеристики. В нашем приложении метод PreCreateWindow не используется и просто выполняет обрработку по умолчанию:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) {

// TODO:

 return CMDIFrameWnd::PreCreateWindow(cs);

}

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

В отладочной версии приложения класс CMainFrame содержит переопределения виртуальных методов AssertValid и Dump. Эти методы определены в базовом классе CObject и используются при отладке приложения:

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

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

#ifdef DEBUG

void CMainFrame::AssertValid const {

 CMDIFrameWnd::AssertValid;

}

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

 CMDIFrameWnd::Dump(dc);

}

Класс дочернего окна MDI

Многооконное

приложение строится с использованием большего числа классов, чем однооконное приложение. Помимо классов главного окна приложения и классов окна просмотра документа, в нем определен еще один класс, непосредственно связанный с отображением дочерних окон MDI. Этот класс называется CChildFrame и он наследуется от базового класса CMDIChildWnd , определенного в библиотеке MFC:

class CChildFrame : public CMDIChildWnd {

 DECLARE_DYNCREATE(CChildFrame)

public:

 CChildFrame;

// Attributes

public:

// Operations

public:

// Overrides

 //{{AFX_VIRTUAL(CChildFrame)

 virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

 //}}AFX_VIRTUAL

// Implementation

public:

 virtual ~CChildFrame;

#ifdef _DEBUG

 virtual void AssertValid const;

 virtual void Dump(CDumpContext& dc) const;

#endif

protected:

 //{{AFX_MSG(CChildFrame)

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP

};

Элементы класса CChildFrame вы можете просмотреть в окне Project Workspace на странице ClassView (рис. 1.11).

Рис. 1.11. Окно Project Workspace, класс CChildFrame

Объекты класса CChildFrame представляют дочерние окна MDI главного окна приложения. Внутри этих окон отображаются окна просмотра документа.

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

MFC AppWizard определяет для класса CChildFrame конструктор и деструктор. По умолчанию они не выполняют никаких действий. Вы можете изменить их для выполнения инициализации объектов класса дочернего окна MDI:

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

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

CChildFrame::CChildFrame {

 // TODO:

}

CChildFrame::~CChildFrame {}

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

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

// Объекты класса CChildFrame создаются динамически

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

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

Соломенный Илья
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
рейтинг книги
Хуррит