Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скомпанованное пособие.docx
Скачиваний:
1
Добавлен:
07.05.2019
Размер:
3.3 Mб
Скачать

Лабораторная работа № 4

4 Высокоуровневые методы разработки приложений на

языке C++ в среде Visual Studio .NET

Цель работы  ознакомление с основными компонентами и набором инструментов интегрированной среды разработки Visual Studio .NET, изучение структуры проектных файлов простейших приложений, создаваемых автоматически на языке C++ с использованием библиотеки базовых классов платформы .NET, приобретение навыков построения собственных проектов, форм и классов, а также овладение способами модификации, сохранения и восстановления проектных файлов создаваемого приложения.

4.1 Разработка программы на базе каркаса приложений

Visual C++ объединяет в себе две законченные системы разработки Windows-приложений:

а) программирование на C с использованием функций Win32 API и инструментальных средств студии разработчика: текстового процессора, графического редактора и др.;

б) программирование на C++ с использованием каркаса приложений, обеспечиваемого библиотекой фундаментальных классов MFC, которая является важнейшей компонентой Visual C++.

Компилятор Visual C++ способен обрабатывать исходный код и на C, и на С++, при этом расширение *.c указывает на С-код, а *.срр или *.схх на C++. В компилятор включена новая библиотека для С++ – Standard Template Library (STL).

Компилятор ресурсов считывает текстовый файл описания ресурсов *.RC, созданный графическим редактором, и переводит его в двоичный файл *.RES для компоновщика.

Компоновщик считывает файлы *.obj и *.res, сгенерированные компилятором C/C++ и компилятором ресурсов, а также обращается за MFC-кодом, хранящемся в файлах *.lib, за кодом библиотек периода выполнения *.dll и за кодом Windows. После этого он формирует исполняемый код в виде файла *.exe или файла *.dll. Необходимые библиотеки компоновщик находит по информации в директивах #pragma, включенных в заголовочные файлы библиотеки MFC.

Мастер приложений AppWizard, работая в диалоге с разработчиком, генерирует исходный код приложения, включает в него необходимые компоненты, классы и исходные файлы.

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

Visual C++ имеет встроенную справочную систему InfoView, которая включает более 6000 страниц текста, и предоставляет следующие способы поиска информации: по книге, по теме, по контексту программы или справки и по запросу с использованием логических связок.

Отладчик работает в тесной взаимосвязи со студией разработчика, позволяет расставлять и убирать точки прерывания, а также контролировать пошаговое исполнение программ и отображать в окнах Variables и Watch указатели объектов до полного описания всех элементов данных производного и базовых классов.

Встроенные средства просмотра исходного кода позволяют увидеть дерево всех классов программы вместе с их методами и переменными, просмотреть список глобальных переменных, найти объявления и описания методов и всех переменных. Можно также проверить ссылки на эти методы и переменные, выявить для выделенной функции схему вызываемых и вызывающих функций, а для выделенного класса – схему производных и базовых классов.

В Visual C++ включен ряд диагностических утилит: Spy++ для просмотра дерева процессов, потоков и окон, открытых в системе, а также получаемых сообщений; PView и PView95 для закрытия сбойных процессов, не видимых из Windows; OLE-утилиты для тестирования элементов ActiveX, просмотра и редактирования двоичных файлов; средства построения профиля исходного кода.

Для реализации крупномасштабных проектов в систему может быть включена специальная программа контроля исходного кода SourceSafe, организующая работу нескольких программистов над одним проектом.

Хранилище компонент Component Gallery обеспечивает использование одних и тех же компонент в нескольких проектах и оперирует с тремя типами модулей: элементами ОСХ, классами и мастерами.

Библиотека MFC является главной компонентой Visual C++, определяет программный интерфейс для Windows на C++ и новую технологию разработки программного обеспечения на базе каркаса приложений.

Каркас приложений – это подмножество библиотеки MFC, из которого программист берет классы, служащие строительными блоками приложения на самом верхнем уровне. Каркас предлагает структуру приложения, отработанную на многих проектах и апробированную во многих программных средах.

Элементами исходного кода для приложения, построенного на базе каркаса MFC, являются следующие классы и методы:

1.Заголовочный файл приложения MyApp.h:

//1.1.Класс нового приложения:

class CMyApp: public CWinApp

{public:

virtual BOOL InitInstance();

};

//1.2.Класс рамки окна:

class CMyFrame: public CFrameWnd

{public:

CMyFrame();

protected:

afx_msg void OnLButtonDown (UINT nFlags, CPoint point );

afx_msg void OnPaint();

DECLARE_MESSAGE_MAP()

};//-спецификатор afx_msg означает, что функция является частью

// системы распределения сообщений библиотеки MFC;

2. Файл реализации приложения MyApp.срр:

# include <afxwin.h> //-заголовочный файл базовых классовMFC;

# include “myapp.h”

CMyApp theApp; //-уникальный в программе объект приложения;

//2.1.Реализация метода инициализации объекта приложения:

CMyApp::InitInstance()

{m_pMainWnd=new CMyFrame();

m_pMainWnd->ShowWindows (m_nCmdShow);

m_pMainWnd->UpdateWindow();

return TRUE;

}

//2.2.Вызов макросов карты сообщений:

BEGIN_MESSAGE_MAP(СMyFrame,CFrameWnd)

ОN_WM_LBUTTONDOWN()

ON_WM_PAINT()

END_MESSAGE_MAP()

//2.3.Реализация конструктора CМyFrame:

CMyFrame::CMyFrame()

{Create(NULL,”MYAPPApplication”); }

//2.4.Обработчик сообщения о щелчке левой кнопки мыши:

void CMyFrame::OnLButtonDown(UINT nFlags, CPoint point )

{TRACE (“Entering CMyFrame::OnLButtonDown-%1x, %d, %d \n”,

(long)nFlags,point.x,point.y);

}

//2.5.Обработчик сообщения WM_PAINT:

void CMyFrame::OnPaint()

{CРointDC dc(this);

dc.TextOut(0, 0, “Простое приложение ”);

}

Пояснения к программе:

1. Функция WinMain() скрыта внутри каркаса приложения.

2. Объект класса CMyApp представляет программу. В программе определяется единственный глобальный объект класса СМуАрр – theApp. Базовый класс CWinApp определяет основные характеристики объекта theApp.

3. При запуске приложения вызывается функция WinMain() каркаса, которая использует объект theApp.

4. В первую очередь функция WinMain() вызывает метод theApp. InitInstance(), который обеспечивает создание и отображение на экране основного окна – рамки приложения.

5. Затем вызывается метод СWinApp::Run() базового класса, который принимает сообщения, поступающие к приложению, и распределяет их между рабочими окнами.

6. Конструктор CMyFrame вызывает функцию Create() базового класса CFrameWnd для создания оконной структуры и связывает ее с оконным указателем того же класса. Функции ShowWindows() и UpdateWindows() базового класса вызываются для вывода окна на экран.

7. Обработчик OnLButtonDown() увязан с событием от нажатия левой клавиши мыши с помощью карты сообщений, определяемой макросом DECLARE_MESSAGE_MAP() в классе CMyFrame, при этом элементу карты ОN_WM_LBUTTONDOWN() ставится прототип функции afx_msg void OnLButtonDown(UINT nFlags, CPoint point); обработчик с помощью макроса TRACE выводит сообщение в отладочное окно.

8. Обработчик OnPaint() увязывается той же картой с сообщением о перерисовке окна главной рамки, которое возникает в начале работы программы, при изменении размеров окна и при обновлении всего окна или его части. На экран с координатами (0,0) выдается текст с помощью функции TextOut() графического интерфейса GDI библиотеки MFC.

9. Приложение завершает работу при закрытии его основного окна, что вызывает разрушение объекта класса CMyFrame, выход из рабочего цикла Run, выход из главной функции WinMain() и разрушение объекта класса CMyApp.

Создание исполняемого файла *.ехе или динамически загружаемой библиотеки *.dll требует построения проекта как системы взаимосвязанных исходных файлов для компилятора программного кода, компилятора ресурсов, компоновщика или редактора связей, а также для построителя справочной системы. Для этих целей часто используют сборочные файлы *.МАК, которые отражают все взаимосвязи между исходными, промежуточными и выходными файлами. Программа Make program, управляющая сборкой проекта, считывает файл *.МАК, а затем так настраивает компилятор C/C++, ассемблер, компоновщик и компилятор ресурсов, чтобы получить на выходе исполняемый файл *.ехе или *.dll.

Студия разработчика при открытии файла *.МАК создает двоичный файл, который дублирует содержание текстового файла, а также сохраняет параметры среды программирования. Этот файл имеет расширение *.MDP.

При использовании мастера приложений AppWizard и мастера классов ClassWizard проект и его файлы, в том числе и новые каталоги создаются автоматически или после запуска определенных инструментальных средств студии разработчика. Если проект имеет имя Арр, то набор его файлов может быть таким:

а) служебные файлы проекта:

App.dsw – файл рабочей области для объединения сведений о нескольких проектах;

App.opt – файл опций пользователя для рабочей области;

App.dsp – файл проекта;

App.clw – файл с информацией о классах проекта;

App.odl – файл с описанием типов объектов;

App.ncb – файл синтаксического анализа;

Readme.txt – файл с описанием файлов проекта;

б) программные файлы *.h и *.cpp с именами Арр, AppDlg, AppDoc, AppView, AppCtl, AppPpg, AppSet, MainFrm, ChildFrm и др.;

в) предкомпилированные файлы: StdAfx.h, StdAfx.cpp, StdAfx.obj, App.pch;

г) файлы ресурсов проекта:

Арр.rc – файл всех ресурсов проекта;

Resource.h – заголовочный файл для ресурсов;

Res\App.rc2 – дополнительный файл для ресурсов, используемых в нескольких проектах;

App.def – файл определения модуля;

Res\App.ico – файл с иконкой проекта;

Res\oolBar.bmp – файл для кнопок инструментальной панели;

д) справочные файлы для проекта:

MakeHelp.bat – файл для создания справочного файла App.hlp;

App.hpj – проектный файл для компилятора справочного файла;

App.rtf – справочный файл в формате RTF;

App.cnt – файл с содержанием для справочного файла;

е) другие файлы:

App.plg, Vc50.idb, Vc50.pdb, Print.rtf, Bullet.bmp, App.lic, App.red (для OLE), IToolbar.bmp и др.

Для приобретения необходимых навыков по разработке программы на базе каркаса приложений следует выполнить задания 3.1 – 3.5 .