Программирование >>  Процедурные приложения 

1 ... 123 124 125 [ 126 ] 127 128 129 ... 150



Рис. 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)



1 ... 123 124 125 [ 126 ] 127 128 129 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика