Лабораторная работа №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.Где и какие файлы создаются при компоновке проекта для производственного режима и для отладочного режима? Сравните размеры соответствующих файлов.