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

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

Жанры

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

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

Шрифт:

Чтобы определить таблицу акселераторов для документов данного типа, надо просто включить ее в файл ресурсов приложения, присвоив ей идентификатор данного типа документов:

CMultiDocTemplate* pDocTemplate;

pDocTemplate = new CMultiDocTemplate(IDR_MULTITYPE, RUNTIME_CLASS(CMultiDoc), RUNTIME_CLASS(CChildFrame), RUNTIME_CLASS(CMultiView));

AddDocTemplate(pDocTemplate);

Если приложение создается без использования средств MFC AppWizard и модели документ – окно просмотра, вы можете загрузить таблицу акселераторов,

с помощью метода LoadAccelTable , входящего в состав класса CFrameWnd:

BOOL LoadAccelTable(LPCTSTR lpszResourceName);

В качестве параметра lpszResourceName следует указать имя ресурса таблицы акселераторов. Если таблица акселераторов вместо строкового имени имеет числовой идентификатор, то вы должны воспользоваться макрокомандой MAKEINTRESOURCE.

Как и многие другие методы классов MFC, метод LoadAccelTable возвращает в случае успешного завершения ненулевое значение и нуль в случае ошибки. Ошибка во время загрузки таблицы акселераторов может случиться, если вы неправильно укажите идентификатор (или имя) ресурса таблицы.

Приложение MultiMenu

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

Наберите в редакторе исходный текст приложения и сохраните его в файле MultiMenu.cpp (листинг 3.1). Включите готовый файл MultiMenu.cpp в проект.

Листинг 3.1. Файл MultiMenu.cpp

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

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

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

// E-mail: frolov@glas.apc.org

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

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

#include <afxwin.h>

#include <afxext.h>

#include <afxcmn.h>

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

#include "resource.h"

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

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

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

class CMultiMenuApp : public CWinApp {

public:

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

 // предназначенный для инициализации приложения

 virtual BOOL InitInstance;

};

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

CMultiMenuApp MultiMenuApp;

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

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

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

class CMultiMenuWindow : public CFrameWnd {

protected:

 // Панель состояния

 CStatusBar m_wndStatusBar;

 // Флаг управляет строкой Prosess меню Mission

 BOOL bEnable;

 // Флаг управляет строкой Construction меню Mission

 BOOL bRadio;

 // Флаг управляет строкой Restrict меню Menu

 int nCheck;

protected:

 // Метод для создания окна приложения и панели состояния

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

 // Методы для обработки командных сообщений

 // от меню приложения

 afx_msg void CMultiMenuWindow::OnDisable;

 afx_msg void CMultiMenuWindow::OnCommand;

 afx_msg void CMultiMenuWindow::OnExit;

 afx_msg void CMultiMenuWindow::OnConstruct;

 afx_msg void CMultiMenuWindow::OnRestrictMenu;

 afx_msg void CMultiMenuWindow::OnFullMenu;

 // Методы для обновления меню

 afx_msg void OnUpdateProcess(CCmdUI* pCmdUI);

 afx_msg void OnUpdateConstruct(CCmdUI* pCmdUI);

 afx_msg void OnUpdateDisable(CCmdUI* pCmdUI);

public:

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

 CMultiMenuWindow;

 // Макрокоманда необходима, так как класс

 // CMultiMenuWindow обрабатывает сообщения

 DECLARE_MESSAGE_MAP

};

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

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

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

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

История западной философии

Рассел Бертран Артур Уильям
Пути философии
Научно-образовательная:
история
философия
культурология
5.00
рейтинг книги
История западной философии

Брак по-драконьи

Ардова Алиса
Фантастика:
фэнтези
8.60
рейтинг книги
Брак по-драконьи

Царь царей

Билик Дмитрий Александрович
9. Бедовый
Фантастика:
фэнтези
мистика
5.00
рейтинг книги
Царь царей

Тринадцатый

Северский Андрей
Фантастика:
фэнтези
рпг
7.12
рейтинг книги
Тринадцатый

Страж Кодекса. Книга V

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

Личный аптекарь императора. Том 6

Карелин Сергей Витальевич
6. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 6

Дважды одаренный. Том V

Тарс Элиан
5. Дважды одаренный
Фантастика:
аниме
альтернативная история
городское фэнтези
5.00
рейтинг книги
Дважды одаренный. Том V

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

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

Хранилище

Старухин Евгений
5. Лесовик
Фантастика:
фэнтези
рпг
7.43
рейтинг книги
Хранилище

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Осколки маски

Метельский Николай Александрович
7. Унесенный ветром
Фантастика:
боевая фантастика
альтернативная история
6.71
рейтинг книги
Осколки маски

Двойник короля 14

Скабер Артемий
14. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 14

Изгой Проклятого Клана

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

Гримуар темного лорда IX

Грехов Тимофей
9. Гримуар темного лорда
Фантастика:
попаданцы
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда IX