Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Фролов Александр. Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT - royallib.ru.doc
Скачиваний:
98
Добавлен:
11.03.2016
Размер:
905.62 Кб
Скачать

Класс cSingleApp

Главный класс приложения CSingleApp наследуется от базового класса CWinApp. Вы можете просмотреть определение класса, если выполните двойной щелчок левой клавишей мыши по его названию в окне Project Workspace. Откроется окно редактора и в него загрузится файл Single.h. Курсор будет автоматически установлен на описание класса CSingleApp.

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

// Класс CSingleApp:

class CSingleApp : public CWinApp {

public:

 CSingleApp();

 // Overrides

 //{{AFX_VIRTUAL(CSingleApp)

public:

 virtual BOOL InitInstance();

 //}}AFX_VIRTUAL

 // Implementation

 //{{AFX_MSG(CSingleApp)

 afx_msg void OnAppAbout();

 //}}AFX_MSG

 DECLARE_MESSAGE_MAP()

};

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

Обратите внимание, что в последней строке определения класса CSingleApp расположена макрокоманда DECLARE_MESSAGE_MAP. Загадочная макрокоманда DECLARE_MESSAGE_MAP определена в файле afxwin.h следующим образом:

#define DECLARE_MESSAGE_MAP() \

private: \

 static const AFX_MSGMAP_ENTRY _messageEntries[]; \

protected: \

 static AFX_DATA const AFX_MSGMAP messageMap; \

 virtual const AFX_MSGMAP* GetMessageMap() const; \

Таким образом, DECLARE_MESSAGE_MAP не является расширением языка Си++, а просто добавляет к вашему классу несколько новых элементов.

Так как в классе CSingleApp расположена макрокоманда DECLARE_MESSAGE_MAP, то он может обрабатывать сообщения и имеет таблицу сообщений. Таблица сообщений класса CSingleApp расположена в файле реализации Single.cpp.

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

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

BEGIN_MESSAGE_MAP(CSingleApp, CWinApp)

 //{{AFX_MSG_MAP(CSingleApp)

 ON_COMMAND(ID_APP_ABOUT, OnAppAbout)

 //}}AFX_MSG_MAP

 // Стандартные команды для работы с документами

 ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)

 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)

 // Стандартная команда выбора принтера

 ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)

END_MESSAGE_MAP()

Кроме команды для обработки командного сообщения ID_APP_ABOUT, расположенного в блоке AFX_MSG_MAP, таблица сообщений содержит еще три макрокоманды, предназначенные для обработки командных сообщений с идентификаторами ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_PRINT_SETUP.

Командные сообщения ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_PRINT_SETUP поступают, когда пользователь выбирает из меню приложения строки с соответствующими идентификаторами. Для обработки этих командных сообщений вызываются методы класса CWinApp.

Главный объект приложения

В приложении создается всего один объект класса CSingleApp. Этот объект определяется как статический, поэтому его конструктор получает управление сразу после запуска приложения.

CSingleApp theApp;

Конструктор класса cSingleApp

Конструктор класса CSingleApp не выполняет никаких действий и состоит из пустого блока. Вы можете разместить в конструкторе класса CSingleApp код для инициализации приложения, однако лучше всего для этого воспользоваться методом InitInstance.

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

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

CSingleApp::CSingleApp() {

 // TODO: Здесь вы можете разместить свой код

}