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

на главную

Жанры

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

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

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

В зоне особого внимания

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

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Холодный ветер перемен

Иванов Дмитрий
7. Девяностые
Фантастика:
попаданцы
альтернативная история
6.80
рейтинг книги
Холодный ветер перемен

Повелитель механического легиона. Том I

Лисицин Евгений
1. Повелитель механического легиона
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том I

Целитель

Первухин Андрей Евгеньевич
1. Целитель
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Целитель

Золушка вне правил

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.83
рейтинг книги
Золушка вне правил

Свадьба по приказу, или Моя непокорная княжна

Чернованова Валерия Михайловна
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Свадьба по приказу, или Моя непокорная княжна

Мифы и Легенды. Тетралогия

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

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

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

Мастер Разума

Кронос Александр
1. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
6.20
рейтинг книги
Мастер Разума

Теневой Перевал

Осадчук Алексей Витальевич
8. Последняя жизнь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Теневой Перевал

С Д. Том 16

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

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

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

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