Разработка Windows - приложения "Калькулятор" с использованием MFC
Автор работы: Пользователь скрыл имя, 02 Апреля 2014 в 20:56, курсовая работа
Краткое описание
В данном курсовом проекте на тему «Разработка Windows-приложения «Калькулятор» с использованием MFC» критерием выполнения поставленной задачи является программный продукт, выполняющий все арифметические операции, как и в калькуляторе встроенному в Windows (в режиме «обычный»). Для разработки приложений была выбрана среда программирования Microsoft Visual Studio 2008.
Содержание
ВВЕДЕНИЕ……………………………………………...………………….5 1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ РАЗРАБОТКИ WINDOWS-ПРИЛОЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ MFC…………..….6 1.1. Общие сведения………………………………………………………..6 1.2. Библиотека MFC……………………………………………………...11 1.3. Проектирование приложений в среде Microsoft Visual C++………14 2. СПЕЦИФИКАЦИЯ ПРОГРАММЫ ……………….………………....20 2.1. Описание программы………………………………………………...20 2.2. Функциональное назначение………………………………………...20 2.3. Описание логической структуры приложения……………………..21 2.4. Требования к техническому обеспечению………………………….23 2.5. Установка и запуск программы……………………………………..23 2.6. Входные и выходные данные………………………………………..24 2.7. Тестирование программы……………………………………………24 ЗАКЛЮЧЕНИЕ………………………….………………………………..25 СПИСОК ЛИТЕРАТУРЫ…………………………………..…………….26 ПРИЛОЖЕНИЕ 1………………………………………..………………..27 ПРИЛОЖЕНИЕ 2……………………………………………..…………..28
Это набор классов, охватывающих
большую часть функциональных возможностей
операционных систем Microsoft Windows, а также
предоставляющих разработчику значительное
количество не только очень мощных дополнительных
классов, но и целые механизмы, которые,
не нарушая идеологию операционной системы,
существенно ее расширяют и. упрощают.
Перед создателями библиотеки стояла
задача создания объектно-ориентированного
интерфейса для Windows, удовлетворяющего
следующим основным целям проектирования
программных продуктов:
сокращение усилий по программированию
приложений для Windows;
скорость выполнения программ,
написанных с использованием библиотеки,
должна быть сопоставима с программами,
написанными на языке С с использованием
Win32 API; минимальный размер вспомогательного
кода;
способность напрямую вызывать
любую С-функцию Win32 API; легкость использования
Win32 API в C++ должна быть такая же, как и при
использовании традиционного С. Надо сказать,
что поставленная задача была решена на
очень высоком уровне. Созданная библиотека
классов охватывает все компоненты Windows
- окна, блоки диалога, контексты устройств,
общие объекты GDI (битовые образы и кисти),
элементы управления и многие другие стандартные
элементы. Суть программирования под Windows
- обработка событий - предоставлена программистам
в удобном и привычном виде. Классы библиотеки
полностью вобрали в себя многочисленные
операторы switch, которые так загромождают
программы, написанные на языке С. Наряду
с этим вы можете совершенно свободно
смешивать вызовы библиотеки классов
с прямыми вызовами Win32 API. Кроме того, за
сравнительно небольшой промежуток времени
корпорацией Microsoft было разработано несколько
версий библиотеки MFC, которые становились
все мощнее и удобнее. Вместе с Visual C++ 6.0
поставляется версия 4.23 библиотеки, и
есть все основания считать, что ее развитие
будет продолжено. К тому же поддержка
библиотеки MFC компиляторами и средствами
разработки ПО, созданными другими компаниями,
позволяет сконцентрироваться именно
на ней. Но давайте рассмотрим все по порядку.
Начнем с макросов, глобальных функций
и переменных, которые, хотя и не входят
непосредственно в библиотеку, очень тесно
с ней связаны и значительно облегчают
программирование, а затем перейдем к
общему обзору библиотеки. Знакомство
с библиотекой будет неполным и не даст
существенных преимуществ при работе
с ней, если мы не рассмотрим включенные
в нее макросы, глобальные функции и переменные.
Все макросы, глобальные функции и переменные
можно разбить на несколько категорий:
основные, работа с базами данных, работа
в Internet, OLE и элементы управления OLE. Поскольку
в данной книге мы не будем подробно рассматривать
работу с базами данных, в сети и с использованием
OLE (этим вопросам будут посвящены следующие
книги), то ограничимся изучением только
основных макросов, глобальных функций
и переменных. Начнем, естественно, с начала.
Практически все глобальные функции начинаются
с префикса "Afx". Исключение составляют
большинство функций для работы с базами
данных и функции, обеспечивающие обмен
данными. Для всех без исключения глобальных
переменных применяется префикс "Afx",
а все макросы записываются заглавными
буквами.
Соглашения об именах библиотеки
MFC
В качестве префикса, обозначающего
имя класса, библиотека MFC использует заглавную
букву С от слова "class" (класс), за которым
идет имя, характеризующее его назначение.
Например, CWinApp - класс, определяющий приложение,
CWnd - базовый класс всех оконных объектов,
CDialog - класс окон диалога и т.д. Мы также
будем придерживаться этого соглашения
в приводимых примерах. Например, программа
FrameWork содержит определения трех классов:
CFrameWorkApp, CMainFrame и CChildWnd. Для имен методов
классов используется три способа. При
первом способе имя объединяет глагол
и существительное, например, Loadlcon (Загрузить
пиктограмму) или DrawText (Нарисовать текст).
При втором, имя метода состоит только
из существительного, например, DialogBox (Блок
диалога). Для функций, предназначенных
для преобразования одного типа в другой,
обычными являются такие имена, как XtoY
(из X в Y). Для членов классов библиотеки
MFC принят следующий способ назначения
имен: обязательный префикс m_ (от class member
- член класса), затем идет префикс, характеризующий
тип данных, и завершается все содержательным
именем переменной, например, m_pMainWnd, где
р - префикс, описывающий указатель (для
переменных не членов класса префикс m_
не используется, чтобы можно было отличить
обычные переменные от элементов любых
классов, а не только классов библиотеки
MFC). В своих примерах я придерживаюсь аналогичного
способа формирования имен, и вам рекомендую
поступать также [3].
1.3 Проектирование приложений
в среде Microsoft Visual C++
В среде Visual C++ можно строить
различные типы проектов. Такие проекты
после их создания можно компилировать
и запускать на исполнение. Фирма Microsoft
разработала специальный инструментарий,
облегчающий и ускоряющий создание проектов
в среде Visual C++. Например, мастер MFC AppWizard
(exe) позволяет создать проект Windows-приложения
которое имеет однодокументный, многодокументный
или диалоговый интерфейс и использует
библиотеку MFC.
Создаваемый остов приложения
составлен так, что в дальнейшей работе
с проектом можно использовать другое
инструментальное средство - ClassWizard (мастер
классов), предназначенное для создания
остовов новых производных классов. Еще
одно основное назначение ClassWizard в том,
что он создает остовы для переопределяемых
методов. Он позволяет показать все сообщения,
приходящие классу, и создать остов обработчика
любого из этих сообщений. Это только две
основные функции ClassWizard.
В состав компилятора Microsoft
Developer Studio встроены средства, позволяющие
программисту облегчить разработку приложений.
В первую очередь к ним относятся MFC AppWisard,
ClassWizard и редактор ресурсов.
Благодаря MFC AppWizard среда разработчика
позволяет быстро создавать шаблоны новых
приложений. При этом программисту не
приходится писать ни одной строчки кода.
Достаточно ответить на ряд вопросов,
касающихся того, какое приложение требуется
создать, и исходные тексты шаблона приложения
вместе с файлами ресурсов готовы. Эти
тексты можно оттранслировать и получить
готовый загрузочный модуль приложения.
Конечно, никакие средства автоматизированной
разработки не смогут создать программу
полностью без участия программиста. Прикладную
часть приложения придется разрабатывать
ему.
Для создания ресурсов приложения
предназначен редактор ресурсов. Он позволяет
быстро создавать новые меню, диалоговые
панели, добавлять кнопки к панели управления
toolbar и т.д.
Средство ClassWizard позволяет подключить
к созданным и отредактированным ресурсам
управляющий ими код. Большую часть работы
по описанию и определению функций, обрабатывающих
сообщения от меню, органов управления
диалоговых панелей и т.д., также берет
на себя средство ClassWizard.
В среде Visual C++ можно строить
различные типы проектов. Такие проекты
после их создания можно компилировать
и запускать на исполнение. Фирма Microsoft
разработала специальный инструментарий,
облегчающий и ускоряющий создание проектов
в среде Visual C++.
MFC AppWizard (exe) - при помощи мастера
приложений можно создать проект Windows-приложения
которое имеет однодокументный, многодокументный
или диалоговый интерфейс. Однодокументное
приложение может предоставлять пользователю
в любой момент времени работать только
с одним файлом. Многодокументное приложение,
напротив, может одновременно представлять
несколько документов, каждый в собственном
окне. Пользовательский интерфейс диалогового
приложения представляет собой единственное
диалоговое окно.
MFC AppWizard (dll) - этот мастер приложений
позволяет создать структуру DLL, основанную
на MFC. При помощи него можно определить
характеристики будующей DLL.
AppWizard ATL COM - это средство позволяет
создать элемент управления ActiveX или сервер
автоматизации, используя новую библиотеку
шаблонов ActiveX (ActiveX Template Library - ATL). Опции
этого мастера дают возможность выбрать
активный сервер (DLL) или исполняемый внешний
сервер (exe-файл).
Custom AppWizard - при помощи этого
средства можно создать пользовательские
мастера AppWizard. Пользовательский мастер
может базироваться на стандартных мастерах
для приложений MFC или DLL, а также на существующих
проектах или содержать только определеямые
разработчиком шаги.
DevStudio Add-in Wizard - мастер дополнений
позволяет создавать дополнения к Visual
Studio. Библиотека DLL расширений может поддерживать
панели инструментов и реагировать на
события Visual Studio.
MFC ActiveX ControlWizard - мастер элементов
управления реализует процесс создания
проекта, содержащего один или несколько
элементов управления ActiveX, основанных
на элементах управления MFC.
Win32 Application - этот мастер позволяет
создать проект обычного Window-приложения.
Проект создается незаполненным, файлы
с исходным кодом в него следует добавлять
вручную.
Win32 Console Application - мастер создания
проекта консольного приложения. Консольная
приложение - это программа, которая выполняется
из командной cтроки окна DOS или Windows и не
имеет графического интерфейса (окон).
Проект консольного приложения создается
пустым, предполагая добавление файлов
исходного текста в него вручную.
Win32 Dynamic-Link Library - создание пустого
проекта динамически подключаемой библиотеки.
Установки компилятора и компоновщика
будут настроены на создание DLL. Исходные
файлы следует добавлять вручную.
Win32 Static Library - это средство создает
пустой проект, предназначенный для генерации
статической (объектной) библиотеки. Файлы
с исходным кодом в него следует добавлять
вручную.
Все Windows-приложения имеют достаточно
общую структуру, и, следовательно, можно
построить некоторые шаблонные заготовки,
подходящие для того или иного типа проектов.
Построению таких заготовок способствует
то, что приложения, создаваемые на основе
MFC, строятся из элементов фиксированных
классов. Логическим развитием этой идеи
было введение специальных классов и специальной
архитектуры построения приложения, которая
подходила бы широкому классу приложений.
О такой архитектуре уже упоминалось,
когда речь шла о библиотеке MFC, - это архитектура
Document-View. Она является основной, но не единственной
при построении проектов в среде Visual C++.
Суть этой архитектуры в том,
что работу многих приложений можно рассматривать
как обработку документов. При этом можно
отделить сам документ, отвечающий за
представление и хранение данных, от образа
этого документа, видимого на экране и
допускающего взаимодействие с пользователем,
который просматривает и (или) редактирует
документ. В соответствии с этой архитектурой
библиотека MFC содержит два семейства
классов, производных от базовых классов
CDocument и CView.
В результате появилась двухэтапная
технология создания проектов. Вначале
создается некая заготовка проекта с общими
свойствами, подходящими для многих проектов
этого типа. На втором этапе производится
уже настройка, учитывающая специфику
задачи. Для каждого этапа фирма Microsoft
разработала свое инструментальное средство.
Начальная заготовка - остов
приложения - создается в диалоге с пользователем
инструментальным средством AppWizard. В процессе
диалога пользователь определяет тип
и характеристики проекта, который он
хочет построить. Определив, какие классы
из MFC необходимы для этого проекта, AppWizard
строит остовы всех нужных производных
классов. Построенный AppWizard остов приложения
содержит все необходимые файлы для создания
стартового приложения, которое является
законченным приложением и обладает разумными
функциональными свойствами, общими для
целого класса приложений. Естественно,
никаких специфических для данного приложения
свойств остов не содержит. Они появятся
на следующем этапе, когда программист
начнет работать с остовом, создавая из
заготовки свое собственное приложение.
Тем не менее стартовое приложение можно
транслировать и запускать на исполнение.
Термин остов (приложения, класса,
функции) применяется для заготовок, создаваемых
инструментальными средствами AppWizard и
ClassWizard. Нужно подчеркнуть - остов приложения
и каркас приложения - разные понятия.
Создаваемый остов приложения
составлен так, что в дальнейшей работе
с проектом можно использовать другое
инструментальное средство - ClassWizard (мастер
классов).
При помощи ClassWizard можно добавить
новый класс, созданный на основе базовых
классов. В качестве базового класса можно
использовать классы, наследованные от
класса CCmdTarget или класса CRecordset. Для наследования
классов от других базовых классов использовать
средства ClassWizard нельзя. Такие классы надо
создавать вручную, непосредственно в
текстовом редакторе.
Объекты, порожденные от класса
CCmdTarget, могут обрабатывать сообщения Windows
и команды, поступающие от меню, кнопок,
акселераторов. Класс CCmdTarget и другие наследованные
от него классы имеют таблицу сообщений
(Message Map) - набор макрокоманд, позволяющий
сопоставить сообщения Windows и команды
метода класса.
Полученная заготовка класса
полностью работоспособна. Эту работу
можно выполнить вручную, но гораздо лучше
и проще воспользоваться услугами ClassWizard.
За счет использования ClassWizard процедура
создания собственного класса значительно
ускоряется и уменьшается вероятность
совершить ошибку во время объявления
методов.
Очень удобно использовать
ClassWizard для включения в состав класса новых
методов. Можно добавлять к классу методы,
служащие для обработки сообщений Windows
и команд от объектов, а также методы, переопределяющие
виртуальные методы базовых классов.
ClassWizard не только позволяет
добавить в класс новые методы, но и удалить
их. ClassWizard самостоятельно удалит объявление
метода из класса.
ClassWizard позволяет включать в
класс не только новые методы, но и элементы
данных, связанные с полями диалоговых
панелей, форм просмотра и форм для просмотра
записей баз данных и полей наборов записей.
ClassWizard использует специальные процедуры,
чтобы привязать созданные им элементы
данных к класса к полям диалоговых панелей.
Эти процедуры носят названия "обмен
данными диалоговой панели" и "проверка
данных диалоговой панели" (Dialog Data Exchange
and Dialog Data Validation - DDX/DDV). Чтобы привязать
поля из наборов записей к переменным,
используется процедура обмена данными
с полями записей (Record Field Exchange - RFX).
Процедуры DDX/DDV и RFX значительно
упрощают программисту работу с диалоговыми
панелями. Они позволяют связать поля
диалоговых панелей и переменные. Когда
пользователь редактирует поля диалоговых
панелей, процедуры DDV проверяют введенные
значения и блокируют ввод запрещенных
значений. Затем процедуры DDX автоматически
копируют содержимое полей диалоговых
панелей в привязанные к ним элементы
данных класса. И наоборот, когда приложение
изменяет элементы данных класса, привязанные
к полям диалоговой панели, процедуры
DDX могут сразу отобразить новые значения
полей на экране компьютера [6].