<p>Приложение MFMenu</p>

Приложения, которые мы рассматривали до сих пор, фактически никак не могли взаимодействовать с пользователем. Они не имели ни меню, ни панели управления. И самое главное – они не содержали обработчиков сообщений.

Сейчас мы рассмотрим приложение MFMenu, которое имеет меню и содержит обработчики сообщений, передаваемых приложению, когда пользователь открывает меню и выбирает из него строки. Для создания приложения MFMenu мы также не станем пользоваться средствами автоматизированной разработки MFC AppWizard, и наберем текст приложения вручную. Этот позволит вам лучше разобраться с механизмом сообщений.

Создайте новый проект под названием MFMenu. В качестве типа приложения выберите из списка Type строку Application (рис. 4.1 из главы “Приложение с главной диалоговой панелью”). Наберите в редакторе исходный текст приложения и сохраните его в файле MFMenu.cpp (листинг 2.7). Чтобы быстрее набрать текст приложения, вы можете получить его, изменив исходный текст приложения MFStart. Затем включите этот файл в проект.

Листинг 2.7. Файл MFMenu.cpp

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

#include

#include "MFMenuRes.h"

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

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

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

class CMFMenuApp : public CWinApp {

public:

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

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

 virtual BOOL InitInstance();

};

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

CMFMenuApp MFMenuApp;

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

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

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

class CMFMenuWindow : public CFrameWnd {

public:

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

 CMFMenuWindow();

 // Объявляем методы для обработки команд меню

 afx_msg void MenuCommand();

 afx_msg void ExitApp();

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

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

 DECLARE_MESSAGE_MAP()

};

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

// Метод MenuCommand

// Обрабатывает команду ID_TEST_BEEP

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

void CMFMenuWindow::MenuCommand() {

 MessageBeep(0);

}

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

// Метод ExitApp

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

void CMFMenuWindow::ExitApp() {

 DestroyWindow();

}

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

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

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

BEGIN_MESSAGE_MAP(CMFMenuWindow, CFrameWnd)

 ON_COMMAND(ID_TEST_BEEP, MenuCommand)

 ON_COMMAND(ID_TEST_EXIT, ExitApp)

END_MESSAGE_MAP()

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

// Метод InitInstance класса CMFMenuApp

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

BOOL CMFMenuApp::InitInstance() {

 // Создаем объект класса CMFMenuWindow

 m_pMainWnd = new CMFMenuWindow();

// Отображаем окно на экране

 m_pMainWnd–>ShowWindow(m_nCmdShow);

 // Обновляем содержимое окна

 m_pMainWnd–>UpdateWindow();

Перейти на страницу:

Все книги серии Библиотека системного программиста

Похожие книги