Лабораторная работа №2-3. СОЗДАНИЕ ОСТОВА ПРИЛОЖЕНИЯ

Цель работы - изучение структуры остова приложения, создаваемого автоматически на базе библиотеки классов MFC, и овладение приемами его построения, просмотра и отладки.

Остов приложения создается в диалоге с пользователем инструментальным средством AppWizard визуальной среды проектирования Visual C++, называемом мастером приложений.

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

Задание№1. Создать остов приложения основанного на диалоге,выполнив следующие действия:

1. Создать новый проект с помощью команды File/ New/ Project, в появившемся диалоговом окне New выбрать тип проекта MFC AppWizard(exe), после чего в работу включается AppWizard. Заметим, что библиотеку MFC используют также следующие другие типы проектов: MFC AppWizard(dll), MFC ActiveX
ControlWizard, New Database Wizard,ISAPI Extension Wizard, Custom AppWizard и другие.

2. В поле Project names задать имя проекта - DBI (Dialog Based Interfase).

3. В поле просмотра каталогов Location выбрать корневой каталог для проекта, в котором AppWizard автоматически создаст каталог проекта с именем DBI, так что это имя одновременно будет и именем проекта, и именем каталога.

4. Установить переключатель Create new workspace, чтобы инициализировать создание новой рабочей области.

5. Проверить в окне Platforms, что указана платформа по умолчанию Win32, так как другиезначения требуют установки Visual C++ для соответствующей кросс платформы.

6. Щелкнуть по кнопке OK.

7. Мастер AppWizard делает первый шаг, предлагая выбрать тип интерфейса приложения:

• Single document - одно-документный интерфейс;

• Multiple documents - многодокументный интерфейс;

• Dialog ba3sed - интерфейс, основанный на диалоговом окне.

Выбрать тип интерфейса приложения Dialog based и щелкнуть по кнопке Next.

8. Мастер AppWizard делает второй шаг, предлагая выбрать следующие свойства:

• About box - включает окно About с информацией о версии приложения;

• Context-sensitive Help - добавляет кнопку помощи Help и создает три файла:

DBI.rtf- для справочной информации;

DBI.hpj - файл проекта справочной системы;

DBI.bat - командный файл для построения файла DBI.hlp;

• 3D controls - добавляет трехмерное оформление элементов управления;

• Automation - делает приложение OLE сервером (программируемым);

• ActiveX controls - делает приложение контроллером автоматизации;

• Windows sockets - создает сетевое приложение;

• Please enter a title for your dialog - позволяет ввести заголовок диалогового окна, отличный от имени проекта.

Выбрать свойство 3D, задать имя окна DBI Dialog и щелкнуть по кнопке Next.

9. Мастер AppWizard делает третий шаг, предлагая установить следующие опции:

• Would you like to generate source file comments? - определяет добавлять или нет, комментарии todo для указания точек вставки собственного исходного кода и создавать ли файл Readme.txt,
где дается кратная информация по всем файлам проекта;

• How would you like to use the MFC library? - определяет способ подключения MFC-библиотеки: статический или динамический.

Включит опцию генерации комментариев, и выбрать динамический способ подключения MFC-библиотеки, как наиболее перспективный. Щелкнуть по кнопке Next.

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

Дайрабай Ұ. Б.

Задание№2.

Создать остов приложения с одно-документным интерфейсом,выполнив следующие действия:

1. Исполнить команду File/ New и выбрать тип проекта MFC AppWizard(exe).

2. В поле Project names задать имя проекта - SDI (Single Document Interfase).

3. В поле просмотра каталогов Location с помощью окна Browse задать каталог размещения проекта
SDI.

4. Установить переключатель Create new workspace.

5. Щелкнуть по кнопке OK.

6. Выбрать интерфейс приложения Single document и завершить первый шаг работы мастера АррWizard, щелкнув по кнопке Next.

7. На втором шаге можно задать поддержку работы с базами данных: нет поддерживать, только главные файлы, вид базы данный без поддержки файла или вид базы данный с поддержкой файла.На третьем шаге для приложения можно задать поддержку работы с OLE-объектами: не поддерживать, контейнер, мини-сервер, сервер, одновременно контейнер и сервер.На четвертом шаге можно задать следующие опции создаваемого остова приложения

• Dockig toolbar -добавляет панель инструментов с минимальным набором функциональных кнопок;

• Initial status bar - добавляет строку состояния с индикаторами специальных клавиш;

• Printing and print preview - добавляет элементы меню для просмотра, установки параметров и печати документов;

• Context-sensitive help - добавляет элементы меню помощи Help и создает три файла для создания контекстно-зависимой помощи: SDI.rtf, SDI.hpj ,SDI.bat;

• 3D controls - задает трехмерное оформление элементов управления;

• Windows sockets - обеспечивает создание сетевого приложения;

• MAPI - позволяет написать приложение для получения, передачи и управления сообщениями, приходящими по электронной почте;

• ...Recent File List - устанавливает число файлов, сохраняемых в списке самых последних использованных файлов;

• Advanced/Document Template Strings - позволяет модифицировать имена файлов и расширений, связанных с приложением, а также задавать заголовок главного окна;

• Advanced/Windows Styles-позволяет установить параметры окон: разделение окон (Use Split Window), включение системного меню (System menu), толщину рамки (Thick frame) и размеры окна (Minimize box, Minimized, Maximize box, Maximized).

10.Шаги 5 и 6 аналогичны шагам 3 и 4 при создании проекта приложения, основанного на диалоге.

11.Щелкнуть по кнопке Finish и в каталоге SDI познакомиться со всеми автоматически созданными каталогами и файлами, а также оцените размеры этих файлов.

Задание №3.

Создать остов приложения с многодокументным интерфейсом,выполнив действия 2-го задания со следующими изменениями:

1. На первом шаге в поле Project name задать имя проекта - MDI (Multiple Document Interfase)(см. пункт 2).

2. В пункте 6 выбрать интерфейс приложения Multiple Documents.

3. Оценить изменения в составе файлов проекта.

Задание №4.

Просмотреть все классы, методы и переменные созданных приложений, выполнив следующие действия:

1. Закрыть текущую рабочую область с помощью команды File/ Close Workspace.

2. Открыть требуемый проект при помощи команды File/ Open Workspace с последующей установкой пути доступа к файлу DBI.dsw, затем SDI.dsw и MDI.dsw.

3. На экране появляется окно рабочей области проекта Workspace, в котором находится папка требуемого проекта. Если окно не видимо, следует выполнить команду View/ Workspace.

4. Под окном проекта по очереди выбирайте кнопки и познакомьтесь со структурами классов, ресурсов и исходных файлов проекта, а также с электронной документацией по Visual C++.

5. Откройте папку с классами проекта и в полученном дереве классов проекта познакомьтесь с методами и переменными классов, а также с глобальными переменными, раскрывая соответствующие узлы с помощью щелчка на знаке "+". Обратите внимание на значки у методов и переменных, которые определяют спецификаторы доступа: private, protected и public.

6. Выбрать класс на дереве классов и дважды щелкнуть по имени класса, что обеспечит открытие окна документа с заголовочным файлом данного класса.

7. Выбрать метод на дереве классов и дважды щелкнуть по имени метода, что обеспечит открытие окна документа с файлом реализации данного класса, причем курсор будет указывать на выбранный метод.

8. Повторить пункт 7 для переменной класса и для глобальной переменной.

9. Выбрать метод или переменную класса и щелкнуть правой клавишей, после чего сделать переход на определение метода или на список ссылок соответственно для метода и для переменной. Установить и убрать точку прерывания для метода. Для построения списков ссылок Visual C++ создает файл ссылок с расширением *.bsc (browse file).

10.Выбрать имя класса и щелкнуть правой клавишей, что вызывает появление контекстного меню с командами Add Member Variable (добавить переменную) и Add Member Function (добавить метод). Используя эти команды, добавить переменные и функции для выбранного класса, посмотреть их в файлах * .h и * .cpp, а затем удалить их из класса.

11.Сделать добавление этих переменных и функций непосредственно в файлах *.h и *.cpp и убедиться, что появляются в дереве классов проекта.

Задание №5.

Просмотреть ресурсы проекта, выполнив следующие действия:

1. Открыть в окне проекта папку с ресурсами.

2. Открыть папку ресурсов.

3. Выбрать требуемый ресурс и дважды щелкнуть по имени ресурса, что вызывает соответствующий редактор ресурсов.

4. Произвести некоторые изменения в ресурсе, а затем восстановить ресурс в исходное состояние.

5. С помощью команды Insert в главном или контекстном меню добавить, а затем удалить какой-либо ресурс. Контекстное меню вызывается щелчком правой кнопки мыши по имени ресурса.

Задание №6.

Просмотреть все файлы проекта, выполнив следующие действия:

1. Открыть в окне проекта папку с файлами.

2. Открыть папку файлов.

3. Выбрать требуемый файл, дважды щелкнуть левой клавишей и выполнить редактирование, а затем его отменить.

4. Выбрать новый файл и нажать правую клавишу, что открывает контекстное меню соследующими командами:

• Open - открывает любой другой файл;

• Settings - позволяет изменить установки отладчика, компилятора и других инструментальных
средств;

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

Досайбек М. И.

Задание №7.

Познакомиться с электронной документацией среды Visual C++, выполнив следующие действия:

1. Открыть перечень книг документов Visual C+_+.Открывая поочередно все книги, построить полное дерево документации, в котором не раскрываемыми узлами являются темы.Выбрать тему и дважды щелкнуть по ней, что приводит к выводу темы в окно просмотра.Найти тему с описанием интерфейсов приложений и познакомиться с ней.Внимательно изучить структуру электронной документации и убедиться в её наличии.Синхронизировать окно просмотра темы с окном просмотра структуры документации, нажав клавиши Ctrl+S или щелкнув по левой кнопки панели инструментов
категории Help. Синхронизация пзволяет узнать, к какой книге относится просматриваемая тема.

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

3. Найти информацию по индексу ключевому термину, выполнив команду Search в меню Help или контекстном меню (Ctrl+F) и задав ключевой термин. При удачном поиске выдается список тем и книг, в которые входит этот термин, при неудачном - ближайший контекст, который позволит уточнить термин.

4. Получить синтаксическую, контекстную справку для выбранного элемента программы установив курсор на этом элементе в окне просмотра документации и нажав на клавишу F1.

5. Получить контекстную справку по выбранному термину темы, выделив этот термин и нажав клавишу F1.

6. Создать новый файл в каталоге проекта и используя буфер обмена, перенести в этот файл несколько тем, а затем перевести текст файла на русский язык, запустив переводчик с английского языка.

7. Распечатать необходимые темы, используя команду Print Topic контекстного меню или команду Print меню File.

8. Сделать закладки в электронной документации для изучаемых тем, используя кнопки категории Help.

9. Найти необходимые сведения по запросу, выполнив команду Search/ Guery и задав запрос в виде одной строки или нескольких строк в апострофах, соединенных логическими связками And и Or.

10.Используя кнопки категории Help, познакомиться со списком открывавшихся при работе тем, которые сохраняются в History List, а также с результатом последнего запроса в Guery Results.

11.Уменьшить область поиска, установив подмножество книг поиска с помощью команды Help/ Define Subset.

12. Создать небольшой русскоязычный справочник и проверить возможность получения оригинальной справки на английском языке.

Задание №8.

Скомпилировать и запустить на исполнение полученные основы приложений, выполнив следующие действия:

1. Открыть требуемый проект: DBI.dsw, SDI.dsw или MDI.dsw.

2. На панели инструментов справа установить вид сборки проекта - Win32 Release (коммерческий или производственный режим). Установить вид сборки можно либо командой Project/ Settings окно Settings For или командой Build/ Set Active Configuration.

3. Создать исполняемый файл проекта, выполнив команду Build/ Build DBI (exe) и проследив за процессом создания файла, состоящим из нескольких этапов.

4. Оценить размеры исполняемого файла DBI.exe и выяснить, какие файлы получены в результате сборки проекта.

5. Запустить остов приложения DBI.exe на исполнение с помощью команды Build/ Execute DBI.exe.

6. Изучить функциональное поведение остова приложения DBI.

7. Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI. Отметить разницу в их поведении.

Задание№9.

Скомпилировать все полученные остовы приложений для отладочного режима и произвести их трассировку, выполнив следующие действия:

1. Открыть требуемый проект: DBI.dsw, SDI.dsw и MDI.dsw.

2. Установить вид сборки проекта-Win32 Debug(отладочный режим).

3. Создать исполняемый файл для отладочного режима, выполнив команду Build/ Build DBI(exe).

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

5. Оценить влияние переключателя Settings/ Generate Browse Info на размеры создаваемых при компоновке файлов.

6. Перейти в отладочный режим с помощью команды Build/ Debug, которая заменяет элемент Build главного меню на элемент Debug.

7. Произвести отладку остова приложения DBI,используя следующие отладочные команды:

• Go(F5) - запуск или продолжение выполнения программы;

• Restart - перезапуск программы;

• Stop Debugging (Shift+F5) - останов отладки;

• Insert/Remove Breakpoint - вставка или удаление точки прерывания;

• Enable Breakpoint - включает или выключает точку прерывания;

• Step Info (F1 1) - пошаговая отладка с пошаговым выполнением функций;

• Step Over (F10) - пошаговая отладка с пошаговым выполнением функций за один шаг;

• Step Out (Shift+F1 1) - выход из функции за один шаг;

• Run to Cursor (Ctrl+F10) - выполнение до точки заданной курсором;

• Guick Watch (Shift+F9) - непосредственное вычисление значений переменных и выражений;

8. Для отладочного и для рабочего режимов, сравните значения следующих параметров: Sourse code debugging, MFS diagnostic macros, Library linkage и Compiler opzimization.

9. Убедиться, что в основе приложения DBIнаходится диагностические макросы TRACE, ASSERT и VERIFY и включить трассировку программы, вставив в ее текст оператор afxtrace=TRUE или включить оператор Trace Enabled=1 в раздел [Diagnostics] файла AFX.INI, расположенного в подкаталоге Windows. При отладке подключается утилита Tracer, которая выдает данные в окно вывода. Заметьте, что диагностические макросы активизируют режим отладочной сборки проекта, но не требуют в коде отладочной информации.

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

11. Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI.

12.Выяснить назначения в программах файлов StdAfx.h и StdAfx.cpp, а также ключей компилятора /Yx,/Yu,/Yc и /Yp. Обеспечить для трех остовов приложений использование одного предкомпилированного заголовочного файла ALL.pch.

13.В конце занятий необходимо файлы *.pch удалять из-за их огромных размеров (порядка 4 Мб).

14.Оценить скорость компиляции при наличии файла *.pch и при его отсутствии.

Контрольные вопросы:

1. Перечислите все типы проектов и укажите, какие из них ориентированы на использование
библиотеки MFC.

2. Укажите путь для каталога, в котором AppWizard по умолчанию создает каталоги проектов.

3. Перечислите подкаталоги, которые автоматически создает App Wizard в каталоге проекта.

4. Назовите платформу, используемую App Wizard по умолчанию.

5. Перечислите все типы интерфейсов приложений и укажите области их применения.

6. Какую опцию следует задать для включения диалогового окна с информацией о версии
приложения? Как изменить или дополнить это окно?

7. Как задать управляющим элементам приложения трехмерную форму?

Есболды Қ. С.

8. Как для приложения создать и включить справочный файл?

9. Как создать сервер или контроллер автоматизации?

10.Как создать сетевое приложение?

11.Перечислите типы создаваемых автоматически файлов проекта и укажите назначения файлов Readme.txt, StdAfx.h и StdApx.cpp.

12.Сколько шагов делает мастер AppWizard при создании остова приложения,

основанного на диалоге и остова приложения с одно- и многодокументным интерфейсом?

13.Перечислите функциональные кнопки панели инструментов, вставляемые опцией Docking toolbar. Как отключить эту панель при работе приложения?

14.Что отображается в строке состояния приложения и как она отключается?

15.Каким образом произвести просмотр всех потомков и всех родителей данного класса, всех вызываемых и вызывающих функций?

16.Перечислите все способы поиска информации в электронной документации Visual C++.

17.Перечислите этапы процесса создания исполняемого файла проекта.

18.Где и какие файлы создаются при компоновке проекта для производственного режима и для отладочного режима? Сравните размеры соответствующих файлов.

Наши рекомендации