CDialog::DoDataExchange(pDX); //{(AFX_DATA_MAP(CAboutDlg) / / } } AFX_DATA_MAP (
BEGIN_MESSAGE_MAP (CAboutDlg, CDialog)
//( {AFX_MSG_MAP (CAboutDlg)
//Обработчики сообщений отсутствуют
//}}AFX_MSG_MAPEND_MESSAGE_MAP( )
//Функция, управляющая выводом окна About void CEditorApp : : OnAppAbout ( )
{
CAboutDlg aboutDlg; aboutDlg . DoModal ( ) ;
}
//////////////////////////////////
//Другие функции класса CEditorApp
Первая схема сообщений принадлежит классу CEditorApp. В ней сообщения с идентификаторами id_app_about, id_file_new, id_file_openи id_file_ PRINT_SETUPсвязываются соответственно с обработчиками OnAppAbout( ) , CWin-Арр: :OnFileNew() , CWinApp: :OnFileOpen() И CWinApp: :OnFilePrintSetup() . В этом файле реализуются конструктор класса CEditorApp, а также его методы Initlnstance() И OnAppAbout().
Единственное изменение, внесенное нами в сгенерированный текст программы, — это переустановка цвета фона и цвета текста всех диалоговых окон, создаваемых программой.
Данное приложение, в отличие от рассматриваемого в предыдущем примере, позволяет работать сразу с несколькими документами, на что указывает следующий блок программы:
//Регистрация шаблонов документов
CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate ( IDR_EDITORTYPE,
RUNTIME_CLASS (CEditorDoc) ,
RUNTIME_CLASS (CChildFrame) , // пользовательское
//дочернее MDI-окно
RUNTIME_CLASS (CEditorView) ) ; AddDocTemplate (pDocTemplate} ;
Диалоговое окно About принадлежит классу CAboutDlg, являющемуся, как и в предыдущем примере, потомком класса CDialog. У него имеется схема сообщений, конструктор И метод
DoDataExchange( ) .
Файл MAINFRM.CPP
Файл MAINFRM.CPPсодержит реализацию класса CMainFrame, который порождается от класса CFrameWndи управляет всеми дочерними MDI-окнами.
//MainFrm.cpp: реализация класса CMainFrame
#include "stdafx.h" #include "Editor, h" #include "MainFrra.h"
lifdef _DEBOG #define new DEBDG_NEW #undef THIS_FILE
static char THIS_FILE[] = _ FILE _ ; #endif
//////////////////////////////////
//CMainFrame
IMPLEMENT_DYNAMIC (CMainFrame, CMDIFrameWnd) BEGIN_MESSAGE_MAP (CMainFrame, CMDIFrameWnd) // { (AFX_MSG_MAP (CMainFrame)