Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по курсовой АЯИП (2 курс,....doc
Скачиваний:
8
Добавлен:
20.04.2019
Размер:
402.43 Кб
Скачать

2.2. Разработка объектно-ориентированных программ

с использованием библиотеки фундаментальных классов

Библиотека фундаментальных классов (MFC) представляет собой не просто совокупность классов, которые программист может использовать при разработке своих программ. Классы в MFC образуют иерархию, поскольку имеются базовые и производные классы. В этом смысле можно говорить о каркасе приложения, т.е. о некоторой части (взаимосвязанном подмножестве) классов MFC, которую можно использовать в качестве основы приложения (очень часто практически невидимой). При использовании MFC AppWizard в процессе создания проекта программы каркас приложения создается автоматически, причем его специфика определяется установками пользователя.

Каркас приложения является полным приложением, которое можно настраивать с целью удовлетворения потребностей пользователя. При этом, если каркас приложения выполняет то, что от него ожидается, то это влечет за собой создание намного меньшего объема кода, чем в случае, когда используются относительно независимые объекты библиотеки классов. Модель программирования MFC предполагает изменение каркаса приложения с тем, чтобы достичь поставленных целей. Этот процесс можно назвать программированием при помощи исключений.

Каждая программа MFC также включает функции WinMain() и WndProc(). Однако эти функции скрыты в каркасе приложения и невидимы в исходном коде программы.

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

#include <afxwin.h>

// Класс главного окна

class CMyWindow : public CFrameWnd

{

public:

CMyWindow() { Create(0, “My Window”); }

};

// Класс приложения

class CMyApp : public CWinApp

{

public:

virtual BOOL InitInstance()

{

m_pMainWnd = new CMyWindow();

m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);

return TRUE;

}

};

CMyApp TheMyMFCApp;

При запуске данной программы на экране отображается полнофункциональное (правда, совершенно бесполезное) окно, представленное на рис. 1.

Класс CMyWindow порожден от класса MFC CFrameWnd, а класс CMyApp – от класса MFC CWinApp (объявления базовых классов CFrameWnd и CWinApp включены в заголовочный файл каркаса приложения afxwin.h).

Поскольку каждый из созданных пользователем классов наследует много функциональных возможностей, классы являются небольшими и простыми. Класс CMyWindow только определяет общий конструктор, который вызывает метод Create(), унаследованный от класса-предка и о пределяющий имя окна.

Рис. 1. Окно простой MFC программы.

Класс CMyApp просто перекрывает виртуальный метод InitInstance(). Внутри метода он создает экземпляр класса CMyWindow и присваивает возвращаемый указатель на унаследованный элемент данных m_pMainWnd. Затем этот указатель используется для вызова функции ShowWindow(), передавая параметр, который заставляет окно отображаться в развернутом виде. В заключении метод возвращает значение TRUE, которое сообщает об успешном завершении. Является существенным, что программа создает экземпляр приложения (объект TheMyMFCApp) с глобальной областью видимости. Создание этого глобального объекта запускает программу на выполнение.

3. Создание проекта в среде Visual С++ 6.0

Одним из ключевых моментов при разработке объектно-ориентированной программы в среде Visual C++ 6.0 является проект (Project). В проекте хранятся основные параметры программы и среды разработки. Проект хранится в файле с расширением dsp. При создании проекта (т.е. на начальном этапе разработки новой программы) определяется его имя и задаются параметры программы, получаемой с использованием этого проекта. С проектом тесно связано понятие рабочего пространства программы (Work Space). Параметры рабочего пространства хранятся в файле с расширением dsw. Файл *.dsw объединяет все проекты, программы в единое целое.

Для создания проекта необходимо в меню File выбрать пункт New. Далее следует определить имя проекта, его расположение, рабочее пространство, задать тип платформы (например, Win32) и выбрать тип проекта из списка (рис.2).

Рис.2. Окно проекта среды Visual C++.

Ниже дается краткая характеристика некоторых типов проекта.

Win32 Console Application. Консольные программы имитируют работу в среде DOS и разрабатываются с использованием консольных API-функций, поддерживающих символьный ввод-вывод в консольных окнах. Поддерживается стандартный ввод-вывод с использованием, например таких функций, как printf() и scanf(). Выполнение консольной программы начинается с функции main().

Win32 Application. Данный тип проекта предназначен для создания программ, представляющих собой Windows-приложение, использующее, в первую очередь, Win32 API. Программа включает стандартные функции API WinMain(), WndProc(), InitInstance(), MyRegisterClass(), GetMessage(), TranslateMessage(), DispatchMessage(), CreateWindow(), ShowWindow(), UpdateWindow() и другие. Программист имеет возможность наращивать функциональность программы, самостоятельно добавляя меню, панель инструментов и т.д.

MFC App Wizard (exe). Данный тип проекта предполагает создание программы, использующей библиотеку фундаментальных классов MFC. При этом процесс создания проекта является многошаговым (от 4 до 6 шагов) и протекает под управлением «помощника» в виде AppWizard. В зависимости от опций, выбираемых пользователем, автоматически подключаются те или иные классы MFC, и формируется соответствующий программный код.

На шаге 1 необходимо выбрать архитектуру приложения: Single Document (SDI), Multiple Document (MDI) или Dialog Based и указать, требуется ли поддержка архитектуры документ/представление (document/view architecture), т.е. использование классов MFC для работы с файлами и окнами (рис.3).

Рис.3. Выбор архитектуры MFC-приложения.

При выборе первых двух архитектур автоматически создается каркас приложения, реализующий стандартное меню. На шагах 2-6 определяется, включать ли в каркас приложения поддержку базы данных, панели инструментов, строки состояния, печати с ее предварительным просмотром, элементов управления ActiveX и т.д.

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

Независимо от выбранной архитектуры приложения необходимо определить способ использования библиотеки MFC. Существуют два способа использования библиотеки:

  • As a shared DLL;

  • As a statically linked library.

Первый способ используется на этапе первоначальной отладки программы и предполагает создание проекта типа Debug. Библиотечные функции MFC не включаются в exe-файл. Для выполнения программы требуются некоторые dll-файлы (например mfc42d.dll, находящийся в системной библиотеке Windows).

Второй способ используется для получения «самодостаточного» exe-файла, включающего библиотечные функции и предполагает создание проекта типа Release. На более поздних этапах отладки программы Debug-проект можно перекомпилировать с целью получения Release-проекта.