Теоретические основы работы в среде MS Visual Studio 2005
Интегрированная среда разработки MS Visual Studio 2005. Понятие проекта и решения
Visual C++ является частью Microsoft Visual Studio 2005 - комплекта средств разработки приложений. Visual C++ - это интегрированная среда разработки, и все создаваемые с помощью нее приложения представляют собой проекты.
Проект - это набор взаимосвязанных исходных файлов, компиляция и компоновка которых позволяет создать исполняемую Windows программу или DLL.
Исходные файлы проекта хранятся в отдельном каталоге, кроме того, проект часто зависит от внешних файлов, таких как подключаемых (include) и библиотечных файлов. В проекте Visual С++ взаимозависимости между отдельными компонентами описаны в текстовом файле проекта с расширением VCPROJ. А специальный текстовый файл решения с расширением SLN содержит список всех проектов данного решения.
Решение (Solution) - набор проектов, объединенных вместе, которые решают одну задачу.
Для того чтобы начать работу с существующим проектом, необходимо открыть в Visual C++ соответствующий SLN файл. Типы файлов создаваемых в проекте Visual C++ указаны ниже:
Среда разработки Visual Studio предлагает множество инструментов для создания и настройки приложений любого типа. С помощью нее можно:
- Генерировать скелет приложения без написания кода вручную.
- Открывать проект в нескольких различных режимах представления.
- Редактировать файлы с исходным кодом и включаемые файлы.
- Подключаться к внешним ресурсам (базам данных).
- Разрабатывать визуальный интерфейс (меню, иконки, диалоговые окна).
- Компилировать и связывать приложение.
- Производить отладку приложения в процессе работы.
С технической точки зрения Visual C++ представляет собой один из инструментов Visual Studio. С помощью этой интегрированной среды, вы можете использовать любые другие языки программирования, в том числе разработанные не Microsoft. Так выглядит открытый проект в среде MS Visual Studio: рис. 3.1
Утилиты и мастера MS Visual Studio 2005
Создание Windows программ "с чистого листа" вручную требует много времени, причем большая его часть уходит на создание и отладку каркаса приложения. Если вы программируете, используя Win API, то это - написание функций WinMain и WndProc, цикла обработки сообщений, если же используйте библиотеку MFC, то это написание собственного класса приложения, его метода InitInstance и класса окна. Среда MS Visual Studio 2005 предоставляет набор мастеров и утилит для автоматизации процесса создания каркаса приложения, и, тем самым, избавляет вас от рутинной работы, которую необходимо проделывать при создании Windows приложения.
Основные мастера и утилиты MS Visual Studio 2005
Мастера для создания проектов:
- MFC Application Wizard (exe) - мастер для создания проектов Windows-приложений на основе классов библиотеки MFC. Мастер предоставляет программисту богатый выбор настроек проекта. С его помощью можно создавать приложения с однодокументным, многодокументным или диалоговым интерфейсом. Однодокументное приложение позволяет пользователю работать только с одним файлом. Многодокументное приложение может одновременно предоставить работу с несколькими документами, каждым в собственном окне. Пользовательский интерфейс диалогового приложения представляет собой единственное диалоговое окно.
- MFC DLL Wizard - этот мастер приложений позволяет создать структуру DLL, основанную на MFC. При помощи него можно определить характеристики будущей DLL.
- ATL Project Wizard - это средство позволяет создать элемент управления ActiveX или сервер автоматизации, используя новую библиотеку шаблонов ActiveX (ActiveX Template Library - ATL). Опции этого мастера дают возможность выбрать активный сервер (DLL) или исполняемый внешний сервер (exe-файл).
- Custom Wizard - при помощи этого средства можно создать пользовательские мастера AppWizard. Пользовательский мастер может базироваться на стандартных мастерах для приложений MFC или DLL, а также на существующих проектах или содержать только определяемые разработчиком шаги.
- Visual Studio Add-in Wizard - мастер дополнений позволяет создавать дополнения к Visual Studio. Библиотека DLL расширений может поддерживать панели инструментов и реагировать на события Visual Studio.
- MFC ActiveX Control Wizard - мастер элементов управления реализует процесс создания проекта, содержащего один или несколько элементов управления ActiveX, основанных на элементах управления MFC.
- Win32 Project Wizard - этот мастер позволяет создать проект обычного Windows-приложения или динамически подключаемой библиотеки. Тип проекта определяется выбором соответствующих опций в диалоговых окнах мастера. Проект создается незаполненным, файлы с исходным кодом в него следует добавлять вручную.
- Win32 Console Application Wizard - мастер создания проекта консольного приложения. Проект консольного приложения создается пустым, предполагая добавление файлов исходного текста в него вручную.
Утилиты для редактирования проектов:
- Утилита Class View. Окно Class View открывается при выборе команды View Class View и отображает дерево всех классов проекта с методами и полями. Чтобы увидеть код элемента, необходимо дважды кликнуть по нему. При внесении изменений в исходный текст, содержимое окна Class View автоматически обновляется. За создание новых классов, добавлением их в проект, созданием виртуальных функций и функций обработчиков сообщений отвечает утилита Class View.
- Редактор ресурсов используется для создания и редактирования ресурсов (меню, панелей управления, строк состояния, курсоров, диалогов и т.д.) в режиме WYSIWYG (what you see is what you get - что вижу то и получаю). Окно для просмотра ресурсов проекта открывается при выборе команды View Resource. Для перехода в режим редактирования уже созданного ресурса, необходимо дважды кликнуть по нему. Для создания нового ресурса, необходимо вызвать контекстное меню (нажать правой кнопкой мыши) в окне просмотра ресурсов и выбрать пункт Add Resource…
- Утилита Solution Explorer. В Solution Explorer отображается структура всего решения. Окно Solution Explorer содержит древовидное представление элементов проекта, которые можно открывать по отдельности для модификации или выполнения задач по управлению. Для добавления нового элемента в проект, необходимо щелкнуть по одному из внутренних узлов дерева в окне Solution Explorer правой кнопкой мыши и выбрать пункт Add…
Для настройки компиляции и компоновки проекта, необходимо нажать Project Properties…, или нажать правой кнопкой мыши на имя проекта в окне Solution Explorer и выбрать пункт Properties. Рассмотрим подробнее утилиту ClassView.
Утилита Class View
Создание нового класса
При помощи Class View можно добавить новый класс в проект, созданный на основе базовых классов. Утилита позволяет использовать в качестве базовых классов как классы каркаса MFC, так и собственные классы. Объекты, порожденные от класса CcmdTarget, могут обрабатывать сообщения Windows и команды, поступающие от меню, кнопок, акселераторов. Класс CCmdTarget и другие, наследованные от него классы, имеют таблицу сообщений (Message Map) - набор макрокоманд, позволяющий сопоставить сообщения Windows и команды метода класса. Для того чтобы добавить класс, необходимо:
- Вызвать контекстное меню проекта в окне утилиты Class View (клик правой кнопкой мыши по имени проекта) Add Class…
- Выбрать в появившемся диалоговом окне тип добавляемого класса (например, Categories: MFC. Templates: MFC class). Нажать Ok.
- В появившемся окне ввести необходимые данные. Нажать Ok.
Полученная заготовка класса полностью работоспособна. Ее можно дополнить по своему усмотрению новыми методами и данными. Эту работу можно выполнить вручную, но удобнее воспользоваться услугами утилиты Class View. Для этого необходимо:
- Вызвать контекстное меню соответствующего класса в окне утилиты Class View (клик правой кнопкой мыши по имени класса) Add Function… или Add Variable…
- Следовать дальнейшим инструкциям мастера.
Редактирование классов с помощью Class View
С помощью Class View можно редактировать уже созданные классы, добавлять в них обработчики сообщений для наследников класса CCmdTarget, переопределять виртуальные функции. За счет использования Class View процедура редактирования собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов. Для добавления обработчиков или переопределения методов необходимо:
- Вызвать контекстное меню соответствующего класса в окне утилиты Class View Properties.
- Во всплывающем окне нажать кнопку Events, Messages или Overrides в зависимости от того, что требуется сделать в данный момент (обработать событие, обработать сообщение или переопределить виртуальную функцию).
Class View позволяет не только добавить в класс новые методы, но и удалить их. Class View самостоятельно удалит объявление метода из прототипа класса и его тело из cpp файла.
Включение в класс новых элементов данных
Class View позволяет включать в класс не только новые поля и методы, но и элементы данных, связанные с полями диалоговых панелей, форм просмотра и форм для просмотра записей баз данных и полей наборов записей. Class View использует специальные процедуры, чтобы привязать созданные им элементы данных к классам и полям диалоговых панелей. Эти процедуры носят названия "обмен данными диалоговой панели" и "проверка данных диалоговой панели" (Dialog Data Exchange and Dialog Data Validation - DDX/DDV). Чтобы привязать поля из наборов записей к переменным, используется процедура обмена данными с полями записей (Record Field Exchange - RFX).
Создание приложения по шаблону с помощью мастера MFC Application Wizard
Благодаря мастеру MFC Application Wizard, среда разработки позволяет быстро создавать новые Windows приложения по шаблону. Разработчику достаточно ответить на ряд вопросов, касающихся того, какое приложение требуется создать, и исходные тексты приложения вместе с файлами ресурсов будут созданы. Эти тексты можно оттранслировать и получить готовый загрузочный модуль приложения, однако прикладную часть приложения должен написать программист.
Работу мастера MFC Application Wizard рассмотрим на примере. Создадим программу с однодокументным интерфейсом с поддержкой технологии "документ-вид".
- File New Project
- Project types: MFC. Templates: MFC Application. Введем имя "MyProg" проекта в строку Name. Снимем флажок в пункте Create directory for solution. Нажмем Ok.
- Нажмем Next. В следующем окне выберем Application type: Single document. Снимем флажок в пункте Use Unicode libraries.
- Далее нажимаем Next до конца, пока кнопка не будет заблокирована (в появляющихся окнах мастер предлагает добавить или удалить различные компоненты: поддержка баз данных, поддержка печати и т.п.).
- В последнем окне можно увидеть список классов, которые будут созданы мастером.
- Нажмем кнопку Finish. Приложение готово. Можно скомпилировать и запустить.
В указанной директории "MyProg" будут созданы файлы:
- MyProg.vcproj - основной файл проекта
- MyProg.h - заголовочный файл приложения
- MyProg.cpp - исходный текст приложения
- StdAfx.h - заголовочный файл для стандартного "каркаса" приложения
- StdAfx.cpp - исходный текст стандартного "каркаса" приложения
- MainFrm.h - заголовочный файл главного окна
- MainFrm.cpp - исходный текст главного окна
- MyProgDoc.h - заголовочный файл документа
- MyProgDoc.cpp - исходный текст документа
- MyProgView.h - заголовочный файл вида
- MyProgView.cpp - исходный текст вида
- Resource.h - файл с ресурсными константами
- MyProg.rc - файл с ресурсами
- MyProg.ncb - файл с информацией о представлении и взаимных связях
- MyProg.sln - файл решения
- res каталог для ресурсов
Программа будет состоять из четырех основных частей: рис. 3.2
- Объект приложения находится в файлах MyProg.h и MyProg.cpp. Это то, что Windows запускает при старте программы. Когда этот объект начинает работу, он размещает на экране главное окно.
- Объект главного окна находится в файлах MainFrm.h и MainFrm.cpp и отображает главное окно программы: в нем находится меню, заголовок окна и панель инструментов. Рабочая зона программы называется клиентской областью окна.
- Объект документа находится в файлах MyProgDoc.h и MyProgDoc.cpp и хранит данные программы.
- Объект вида находится в файлах MyProgView.h и MyProgView.cpp и предназначен для работы с клиентской областью. Отображает данные, хранящиеся в объекте документа.