Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений на Visual C++ с использов...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
375.81 Кб
Скачать

Лабораторная работа №2 создание остова приложения

Цель работы – изучение структуры остова приложения, создаваемого автоматически на базе библиотеки классов 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.

  1. Мастер 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.

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

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

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

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

  1. Мастер 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 и завершить первый шаг работы мастера AppWizard, щелкнув по кнопке Next.

  7. На втором шаге можно задать поддержку работы с базами данных: нет поддерживать, только главные файлы, вид базы данный без поддержки файла или вид базы данный с поддержкой файла.

  8. На третьем шаге для приложения можно задать поддержку работы с OLE-объектами: не поддерживать, контейнер, мини-сервер, сервер, одновременно контейнер и сервер.

  9. На четвертом шаге можно задать следующие опции создаваемого остова приложения:

  • Docking 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).

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

  2. Щелкнуть по кнопке 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++.

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

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

  4. Найти тему с описанием интерфейсов приложений и познакомиться с ней.

  5. Внимательно изучить структуру электронной документации и убедиться в её наличии.

  6. Синхронизировать окно просмотра темы с окном просмотра структуры документации, нажав клавиши Ctrl+S или щелкнув по левой кнопки панели инструментов категории Help. Синхронизация позволяет узнать, к какой книге относится просматриваемая тема.

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

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

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

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

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

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

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

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

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

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

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

Задание №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 (F11) - пошаговая отладка с пошаговым выполнением функций;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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