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

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

Жанры

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

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

Шрифт:

При выборе из меню View строки Toolbar передается командное сообщение ID_VIEW_TOOLBAR, а при выборе строки Status bar — сообщение ID_VIEW_STATUS_BAR. Во время обработки этих сообщений, вызов метода GetControlBar определит объект класса CControlBar, соответствующий либо панели управления AFX_IDW_TOOLBAR, либо панели состояния AFX_IDW_STATUS_BAR.

Затем метод ShowControlBar отображает или закрывает соответствующую панель. Если панель была открыта, метод ShowControlBar скрывает ее и наоборот.

Аналогичным образом устроен метод OnUpdateControlBarMenu класса CFrameWnd, который обрабатывает команды

обновления (по умолчанию, он обрабатывает команды обновления от строк Toolbar и Status bar меню View).

Метод OnUpdateControlBarMenu проверяет, отображается ли на экране панель управления или панель состояния с идентификатором, соответствующим идентификатору команды обновления. Если панель отображается, то строка меню отмечается символом √:

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

// Метод OnUpdateControlBarMenu класса CFrameWnd

void CFrameWnd::OnUpdateControlBarMenu(CCmdUI* pCmdUI){

 ASSERT(ID_VIEW_STATUS_BAR == AFX_IDW_STATUS_BAR);

 ASSERT(ID_VIEW_TOOLBAR == AFX_IDW_TOOLBAR);

 CControlBar* pBar = GetControlBar(pCmdUI->m_nID);

 if (pBar != NULL) {

pCmdUI->SetCheck((pBar->GetStyle & WS_VISIBLE) != 0);

return;

 }

 pCmdUI->ContinueRouting;

}

В конце метода OnUpdateControlBarMenu класса CFrameWnd вызывается метод ContinueRouting класса CCmdUI, который направляет команду обновления для дальнейшей обработки другим классам MFC (см. раздел “ Обработка командных сообщений ”).

Приложение MultiBar

Создайте новый проект под названием MultiBar. В качестве типа приложения выберите из списка Type строку Application. Настройте проект MultiBar, точно также как вы настраивали проект Bar – укажите, что приложение будет работать с библиотекой классов MFC.

Наберите в редакторе исходный текст приложения и сохраните его в файле MultiBar.cpp (листинг 3.7). За основу вы можете взять файл Bar.cpp приложения Bar. Включите готовый файл MultiBar.cpp в проект.

Листинг 3.7. Файл MultiBar.cpp

//============================================================

// Приложение MultiBar

// (c) Frolov G.V., 1996

//============================================================

// Исключаем редко используемые определения из

// включаемых файлов

#define VC_EXTRALEAN

// Включаемый файл для MFC

#include <afxwin.h>

#include <afxext.h>

#include <afxcmn.h>

//
Включаемый файл для ресурсов приложения

#include "resource.h"

//============================================================

// Класс CMultiBarApp - главный класс приложения

//============================================================

class CMultiBarApp : public CWinApp {

public:

 // Мы будем переопределять метод InitInstance

 virtual BOOL InitInstance;

};

// Создаем объект приложение класса CMultiBarApp

CMultiBarApp MultiBarApp;

//============================================================

// Класс CExtendedBar - класс панели управления Extended

//============================================================

class CExtendedBar : public CToolBar {

public:

 // Дополнительные органы управления панели Extended

 CEdit m_edit; // текстовый редактор

 CComboBox m_combo_box; // список с текстовым редактором

};

//============================================================

// Класс CMultiBarWindow - представляет главное окно

//============================================================

class CMultiBarWindow : public CFrameWnd {

// Определяем панели управления

protected:

 // Панель управления Player

 CToolBar m_wndPlayerBar;

 // Панель управления Style

 CToolBar m_wndStyleBar;

 // Панель управления Extended

 CExtendedBar m_wndExtendedBar;

protected:

 // Метод OnCreate используется для создания

 // панелей управления

 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

public:

 // Объявляем конструктор класса CMultiBarWindow

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

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

На Ларэде

Кронос Александр
3. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На Ларэде

Охота на попаданку. Бракованная жена

Герр Ольга
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Охота на попаданку. Бракованная жена

Кай из рода красных драконов

Бэд Кристиан
1. Красная кость
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кай из рода красных драконов

Хозяйка Проклятой Пустоши. Книга 2

Белецкая Наталья
2. Хозяйка Проклятой Пустоши
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Хозяйка Проклятой Пустоши. Книга 2

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Потусторонний. Книга 2

Погуляй Юрий Александрович
2. Господин Артемьев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Потусторонний. Книга 2

Чапаев и пустота

Пелевин Виктор Олегович
Проза:
современная проза
8.39
рейтинг книги
Чапаев и пустота

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

Лютая

Шёпот Светлана Богдановна
Любовные романы:
любовно-фантастические романы
6.40
рейтинг книги
Лютая

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5