WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 | 3 |
Московский государственный университет культуры и искусств Информатика и программирование:

Visual C++ с использованием библиотеки MFC Учебно-методическое пособие Москва 2006 Составителъ: Е.П.Дербакова УДК 517.8 Рецензент Доктор технических наук, профессор А.Б. Антопольский Информатика и программирование:

Visual C++ с использованием библиотеки MFC: Учебно-методическое пособие по курсу Информатика и применение компьютеров в научных исследованиях/ Сост.: Е.П. Дербакова. – М.:МГУКИ., 2006. – 36 с.

В учебно-методическом пособии представлены основные понятия объектноориентированного программирования, основы языка С++, а также основная информация о классах и компонентах библиотеки МFC в среде программирования Visual C++.

2 ОГЛАВЛЕНИЕ 1. Основные понятия...................................... 4 2. Библиотека MFC......................................... 7 3. Создание каркаса приложения.................. 11 3.1. Создание проекта с использованием AppWizard. 11 3.2. Использование окна проекта............. 13 3.3. Класс CwinApp...................................... 15 3.4. Запуск приложения............................. 16 4. Простая графическая задача...................... 16 4.1. Класс CnewprjView.............................. 16 4.2. Контекст устройства............................ 17 4.3. Средства работы с графикой............. 18 4.4. Первый рисунок.................................. 20 4.5. Добавление обработчика сообщений 20 4.6. Таймер.................................................. 22 4.7. Обработчик сообщения OnTimer...... 24 4.8. Меню.................................................... 25 ПРИЛОЖЕНИЕ 1............................................ 26 ПРИЛОЖЕНИЕ 2............................................ 31 СПИСОК ЛИТЕРАТУРЫ............................... 35 3 1. Основные понятия В названии среды программирования Visual C++ указаны две основных черты современного программирования:

1. Visual –– это визуальная среда программирования, т.е. с помощью мыши на экране монитора можно визуально менять содержимое окон программы и это будет автоматически зафиксировано в тексте программы.

2. С++ –– означает, что в среде программирования используется не стандартный язык С, а созданный на его основе язык объектноориентированного программирования С++.

В программе, написанной на языке Си, данные и функции, предназначенные для их обработки, определяются отдельно. Такое разделение затрудняет структурированное программирование и создает дополнительные возможности для ошибок, которые трудно обнаружить.

В язык С++ введен новый тип данных –– класс, который позволяет объединить в одной структуре данные и оперирующие ими функции. Такое объединение обычно называют инкапсуляцией данных и связанных с ними функций.

Класс является расширением типа struct языка Си. Функции, оперирующие над данными класса, называются методами класса. И данные класса и методы класса называются членами класса.

Объявление класса может иметь следующее формальное описание:

Class type_classname: baseclassname{ type1 var1;

type2 var2;

…………….

typen varn;

Public:

metod1();

………..

protected:

metod1();

………… private:

………..

} Здесь type1 var1…..typen varn –– данные класса, metod1().–– функции, оперирующие этими данными.

baseclassname –– базовый класс для объявляемого класса.

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

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

Так же, как и для структур, после того как новый тип данных объявлен, можно определять объекты данного типа (класса), а также объекты, являющиеся производными от него. Например:

сlass Csple{ int date;

int func();

………… };

………….

Csple cn1, //переменная типа Csple *pcl2, //указатель на переменную этого типа arcln[5]; //массив элементов типа Csple Обращение к элементам или методам класса как к элементам структур:

cn1.date=10;

pcl2––>func();

Термины public, protected и private называются модификаторами доступа к переменным и методам класса. К элементам и методам, следующим за модификатором public, можно обращаться как из методов данного класса, так и из программы. Доступ к остальным членам класса открыт только для методов самого класса, а также для дружественных методов других классов. В случае модификатора protected –– также для производных классов.

Для доступа к объекту класса можно использовать ключевое слово this, являющееся указателем на объект данного класса. Это ключевое слово нельзя использовать вне метода члена класса. Пример:

Class A{ int i, j;

public:

mult(int j);

A::mult(int j) {return j*this ––> I;} Для непосредственного указания метода или переменной класса в программе перед именем метода или переменной проставляется имя класса и знак ::

CWnd::GetParent();

Дружественные методы позволяют получить доступ к защищенным модификатором private членам класса из методов других классов. Если метод класса A внутри тела класса В объявлен с модификатором friend, то из него разрешен доступ ко всем членам класса В.



class B{ friend A :: metod1();

} Если объявить дружественным целый класс, то все его методы получают доступ ко всем переменным и методам другого класса.

class B{ friend class A; } Конструктором называется метод, одноименный с именем класса и вызываемый при создании объекта данного класса.

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

Методы класса могут быть статическими и виртуальными. Статические методы объявляются с модификатором доступа Static, являются общими для всех объектов класса. Статическими могут быть и переменные. Статические методы могут вызывать и использовать только другие статические методы и переменные.

Виртуальные методы объявляются в базовом классе с ключевым словом virtual, а в производном классе могут быть переопределены.

2. Библиотека MFC Microsoft Foundation Classes (MFC) –– это библиотека классов, которую можно использовать для программирования на языке С++ под Windows.

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

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

Непосредственно от класса CObject наследуются ряд классов, которые сами являются базовыми для остальных классов MFC. В первую очередь это класс CCmdTarget, представляющий основу структуры любого приложения. Объекты класса CCmdTarget обладают свойством получать от операционной системы сообщения и обрабатывать их. Структура классов, связанных с классом CCmdTarget, изображена на рис. 2.1.

Класс CWinThread представляет подзадачи приложения, а класс CWinApp является базовым классом для объекта простого приложения. Этот класс предоставляет средства инициализации и управления приложением.

Класс CDocument служит для представления документов приложения, хранимых на диске в отдельных файлах.

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

Основные свойства окон представлены классом CWnd, наследованным от класса CCmdTarget.

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

На рис. 2.2 представлена только небольшая часть дерева наследования класса CWnd. Класс CFrameWnd представляет окна, выступающие в роли обрамляющих окон, в том числе также главные окна. От этого класса наследуются классы CMDIFrameWnd и CMDIChildWnd, используемые для отображения окон многооконного интерфейса MDI. Класс CMiniFrameWnd применяется для отображения окон уменьшенного размера. Такие окна обычно используются для отображения в них панели управления.

Отдельно представлены классы органов управления: CButton –– кнопка, CStatic –– метка, CEdit –– поле редактирования, CListBox –– список и т.п. Эти элементы управления используются в диалоговых окнах и панелях для организации ввода–вывода данных и разветвления программы.

CObject CCmdTarget CWinThread CDocument CWnd CDocTemplate CMultiDocTemplate CSingleDocTemplate CWinApp Рис. 2.1. Классы CObject и CCmdTarget CWnd CFrameWnd CView CDialog CControlBar CPropertySheet CStatic CButton CEdit CListBox CStatusBar CCombobox CdialogBar e.c.

CToolBar Рис. 2.2. Класс CWnd Класс CСontrolBar и наследуемые от него классы предназначены для создания управляющих панелей. Такие панели могут содержать различные элементы управления и отображаются в верхней или нижней части главного окна приложения. Например, класс CStatusBar управляет панелью состояния. Панель состояния отображается в виде полосы в нижней части экрана, где приложение может выводить всевозможную информацию, например, краткую подсказку о выбранной строке меню.

Класс CPropertySheet представляет собой блокнот –– диалоговую панель, содержащую несколько страниц.

Наибольший интерес имеет для нас класс CView и классы, наследуемые от него. Эти классы представляют окно просмотра документов приложения. Через это окно пользователь может изменять документ. Непосредственно наследуют классу CView два класса CCtrlView и CScrollView, которые используют для отображения стандартные классы элементов управления. Например, класс CEditView, наследующий классу CCtrlView, является готовым текстовым редактором. Класс CScrollView представляет окно просмотра, которое имеет полосы прокрутки. Класс CFormView позволяет создать окно просмотра документа, основанное на диалоговой панели.

3. Создание каркаса приложения 3.1. Создание проекта с использованием AppWizard В среде Visual C++ предусмотрено автоматическое создание каркаса приложения. В главном меню при наборе пункта File|New открывается окно New, имеющее четыре вкладки. На вкладке Projects перечислены возможные типы проектов. Под проектом понимается набор файлов и конфигурация, необходимые для генерации программы. По умолчанию при создании проекта создаются две конфигурации: Debug и Release, т.е. работа проекта в режиме отладки и без отладки. В проект может быть добавлено любое число конфигураций. Конфигурацией называется набор установок, определяющих режимы выполнения файла и опции компиляции файла.





На вкладке Projects приведены названия более 15 типов проектов. Из них три используют библиотеку MFC:

MFC AppWizard (exe) –– это приложение, поддерживающее полный графический интерфейс пользователя, реализованный на основе классов MFC. Visual C++ автоматически создаст файлы шаблона приложения с соответствующими классами и добавит эти файлы в проект. Выполнимый файл приложения будет иметь расширение.exe.

MFC AppWizard (dll) –– динамическая библиотека функций, реализованная на основе классов MFC. Visual C++ автоматически создаст файлы шаблона приложения с соответствующими классами и добавит эти файлы в проект. Файл приложения будет иметь расширение.DLL.

MFC ActivX ControlWizard –– ActivXэлементы управления, реализованные на основе классов MFC. Файл приложения будет иметь расширение.OCX.

Мы будем создавать приложение MFC AppWizard(exe). т.к. нас интересует работа с графикой. Необходимо выделить имя этого типа проекта, затем определить имя проекта и каталог, в котором он будет размещен. На рис. 3.1. представлена первая страница, на которой записывается имя проекта. После этого надо нажать на клавишу ОК. На следующей странице надо выбрать какого типа проект вы хотите создать.

Возможны три варианта: single document(SDI), multiple document(MDI) и dialog based. В первом случае проект создаст только одно окно представления документа. Во втором случае будет создано несколько дочерних окон, каждое из которых соответствует отдельному документу.

В третьем случае будет создано приложение на основе диалогового окна. Мы начнем с самого простого варианта –– single document.

В следующих четырех диалоговых окнах оставим все без изменения. После того как вы нажали кнопку Finish, появится Рис. 3.1. Первая страница создания нового проекта окно New Project Information, где представлена информация о созданном проекте. После того как вы нажали кнопку ОК, AppWizard создаст каталог приложения, а в нем ряд файлов. Имя каталога совпадает с именем проекта.

3.2. Использование окна проекта.

Как только закроется окно создания проекта, слева откроется окно просмотра проекта (Project Workspace), которое имеет три кнопки –– ClassView, ResourceView и FileView. В первом окне представляется иерархическая схема классов проекта, во втором –– схема ресурсов проекта и в третьем –– схема файлов проекта. На рис. 3.2 представлена схема классов проекта, а на рис. 3.3 –– схема файлов проекта.

Рассмотрим подробнее файлы проекта. Все файлы проекта разделены на три группы: Source Files, Header Files, Resource.

Рис. 3.2. Отображение схемы классов в окне проекта Files. Source Files –– это файлы с расширением.cpp, Header Files –– файлы с расширением.h.

На самом деле одноименные файлы с расширением и.cpp, и.h относятся к описанию одного класса. В заголовочном файле описывается тип класса, а в файле с расширением.cpp –– выполняемые функции класса.

Если мы теперь посмотрим подробнее заголовочные файлы, увидим, что всего было создано четыре основных класса: класс запуска приложения –– newprj.h, класс создания рамки окна – – MainFrm.h, класс документа –– newprjDoc.h, класс отображения документа в окне приложения –– newprjView.h. Для того чтобы просмотреть содержимое файла, достаточно щелкнуть мышкой по имени файла в окне проекта. Пример листинга файлов newprj.h и newprj.cpp приведен в ПРИЛОЖЕНИИ 1.

Рис. 3.3. Отображение имен файлов в окне проекта 3.3. Класс CWinApp В заголовочном файле определяется класс CnewprjApp, который запускает на выполнение приложение, и является наследником класса CWinApp. Этот класс обязательно присутствует в любом Windows-приложении, создаваемом с помощью AppWizard. В нем инкапсулирован метод WinMain. При определении нового класса переопределяется виртуальная функция virtual BOOL InitInstance() и AppWizard сформирует код переопределения этого метода.

В выполняемой части файла newprj.cpp интересным является определение шаблона документа CSingleDocTemplate. С помощью макроса RUNTIME_CLASS в шаблон документа обьединены классы Doc, View, MainFrm.

3.4. Запуск приложения Для компиляции и выполнения приложения воспользуемся пунктом меню Build. В выпадающем меню выберем пункт Rebuild All, который позволяет скомпилировать сразу все файлы и ресурсы и создать выполняемую программу. Результаты компиляции будут распечатываться в окне Output, которое располагается под окнами проекта и листинга программы. Если при компиляции возникли ошибки, сообщения о них распечатываются в этом же окне. Но в нашей программе не может быть ошибок, так как ее создал AppWizard. Следовательно, можно запустить программу на счет с помощью пункта Execute. Результатом работы программы будет пустое окно с именем проекта в заголовке и стандартным меню.

Pages:     || 2 | 3 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.