|
Программирование >> Процедурные приложения
Рис. 20.24. На вкладке FileView выведен перечень файлов, которые были автоматически сгенерированы мастером AppWizard Построение приложения Теперь приложение можно скомпилировать и запустить. Исполняемый файл будет помещен в папку DEBUG. Наше приложение дает возможность открывать и редактировать существующие текстовые файлы, создавать новые файлы и сохранять их на диске. Давайте проанализируем код программы, сгенерированный мастером AppWizard, и рассмотрим некоторые новые блоки. Анализ программного кода Мастер приложений создал для проекта Editorпять исходных файлов: EDITOR.CPP, MAINFRM.CPP, EDITORDOC.CPP, CHILDFRM.CPP и EDITOR-VIEW.CPP. Каждому из них соответствует свой файл заголовков: EDITOR.H, MAINFRM.H, EDITORDOC.H, CHILDFRM.H и EDITORVIEW.H. Файлы заголовков содержат описания классов, используемых в исходных файлах. Файл EDITOR.CPP Файл EDITOR.CPPявляется основным файлом приложения. Он содержит реализацию класса CEditorApp. Editor. cpp: определяет работу приложения. #include stdafx.h #include Editor. h #include MainFrm.h #include ChildFrm.h #include EditorDoc.h #include EditorView.h #ifdef DEBUG #define new DEBUG NEW lundef THIS FILE static char THIS FILE[] = FILE ; #endif
CEditorApp BEGIN MESSAGE MAP(CEditorApp, CWinApp) { (AFX MSG MAP (CEditorApp) 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 ( )
Конструкторкласса CEditorApp CEditorApp: : CEditorApp ()
Единственный объект класса CEditorApp CEditorApp theApp;
Инициализациякласса CEditorApp BOOL CEditorApp: : Initlnstance () COLORREF clrCtlBk, clrCtlText; Цвет фона диалоговых окон задается синим, а цвет текста - бел1м SetDialogBkColor(clrCtlBk = RGB ( О, О, 255), clrCtlText = RGB(255, 255, 255)); AfxEnableControlContainer(); Стандартная инициализация tifdef AFXDLL EnableSdControls(); эта функция вызывается при динамической компоновке MFC #else EnableSdControlsStatic(); эта функция вызывается при статической компоновке MFC #endif Измените раздел реестра, где будут храниться параметры программы. SetRegistryKey( T ( LocalAppWizard-Generated Applications )); LoadStdProfileSettings(); загрузка параметров из INI-файла Регистрация шаблонов документов CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR EDITORTYPE, RUNTIME CLASS(CEditorDoc), RUNTIME CLASS(CChildFrame), пользовательское дочернее MDI-окно RONTIME CLASS(CEditorView)); AddDocTemplate(pDocTemplate); Создание основного MDI-окна CMainFrame* pMainFrame = new CMainFrame; if (!pMainFrame->LoadFrame(IDR MAINFRAME)) return FALSE; m pMainWnd = pMainFrame; Анализ командной строки на предмет поиска системных команд, DDE- команд или команд открытия файлов. CCommandLinelnfo cmdlnfo; ParseCommandLine(cmdlnfo); Обработка команд, указанных в командной строке if(!ProcessShellCommand(cmdlnfo)) return FALSE; pMainFrame->ShowWindow(m nCmdShow); pMainFrame->UpdateWindow(); return TRUE;
Класс CAboutDlg, управляюш;ий окном About class CAboutDlg : public CDialog public: CAboutDlg () ; Данные диалогового окна {(AFX DATA(CAboutDlg) enum { IDD = IDD ABOUTBOX }; }}AFX DATA Виртуальные функции, сгенерированные мастером ClassWizard { {AFX VIRTUAL (CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); }}AFX VIRTUAL Реализацияprotected: {(AFX MSG(CAboutDlg) Обработчики сообщений отсутствуют ) }AFX MSG DECLARE MESSAGE MAP() CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { {{AFX DATA INIT (CAboutDlg) })AFX DATA INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |