
- •Содержание
- •Введение
- •Лабораторная работа №1 разработка программы на базе каркаса приложений
- •Лабораторная работа №2 создание остова приложения
- •Лабораторная работа №3 создание приложения с диалоговым интерфейсом.
- •Лабораторная работа №4 создание приложений с одно-документным интерфейсом
- •Лабораторная работа № 5 создание приложения с многодокументным интерфейсом.
- •Лабораторная работа № 6 создание приложений для построения графических изображений
- •Лабораторная работа № 7 создание приложений баз данных
- •Лабораторная работа № 8 создание приложений для работы с файлами.
- •Лабораторная работа № 9 создание справочной системы для приложения под windows
- •Лабораторная работа № 10 создание многопоточных приложений.
- •Список литературы.
Лабораторная работа №2 создание остова приложения
Цель работы – изучение структуры остова приложения, создаваемого автоматически на базе библиотеки классов MFC, и овладение приемами его построения, просмотра и отладки.
Остов приложения создается в диалоге с пользователем инструментальным средством AppWizard визуальной среды проектирования Visual C++, называемом мастером приложений.
Мастер AppWizard предоставляет пользователю последовательность диалоговых окон для выяснения типа и характеристик проекта, а затем сам определяет, какие классы из библиотеки MFC надо включить в проект, чтобы создать остовы всех нужных производных классов для получения необходимых файлов стартового приложения. Стартовое приложение является законченным приложением и обладает некоторыми разумными функциональными свойствами, общими для целого класса приложений. Это приложение можно транслировать, исполнять в режиме отладки и запускать на работу. На этом заканчивается первый этап проектирования приложения.
Задание №1. Создать остов приложения основанного на диалоге, выполнив следующие действия:
Создать новый проект с помощью команды File/ New/ Project, в появившемся диалоговом окне New выбрать тип проекта MFC AppWizard(exe), после чего в работу включается AppWizard. Заметим, что библиотеку MFC используют также следующие другие типы проектов: MFC AppWizard(dll), MFC ActiveX ControlWizard, New Database Wizard,ISAPI Extension Wizard, Custom AppWizard и другие.
В поле Project names задать имя проекта - DBI (Dialog Based Interfase).
В поле просмотра каталогов Location выбрать корневой каталог для проекта, в котором AppWizard автоматически создаст каталог проекта с именем DBI , так что это имя одновременно будет и именем проекта, и именем каталога.
Установить переключатель Create new workspace, чтобы инициализировать создание новой рабочей области.
Проверить в окне Platforms, что указана платформа по умолчанию Win32, так как другие значения требуют установки Visual C++ для соответствующей кросс платформы.
Щелкнуть по кнопке OK.
Мастер AppWizard делает первый шаг, предлагая выбрать тип интерфейса приложения:
Single document - одно-документный интерфейс;
Multiple documents - многодокументный интерфейс;
Dialog ba3sed - интерфейс, основанный на диалоговом окне.
Выбрать тип интерфейса приложения Dialog based и щелкнуть по кнопке Next.
Мастер 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.
Мастер AppWizard делает третий шаг, предлагая установить следующие опции:
Would you like to generate source file comments? - определяет добавлять или нет, комментарии todo для указания точек вставки собственного исходного кода и создавать ли файл Readme.txt, где дается кратная информация по всем файлам проекта;
How would you like to use the MFC library? - определяет способ подключения MFC-библиотеки: статический или динамический.
Включит опцию генерации комментариев, и выбрать динамический способ подключения MFC-библиотеки, как наиболее перспективный. Щелкнуть по кнопке Next.
Мастер AppWizard переходит к последнему, четвертому шагу, где он выдает диалоговую панель с информацией об создаваемых классах, предках данных классов и расположение их в проекте. Щелкнуть по кнопке Finish и в каталоге DBI познакомиться со всеми автоматически созданными каталогами и файлами, а также оцените размеры файлов.
Задание №2. Создать остов приложения с одно-документным интерфейсом, выполнив следующие действия:
Исполнить команду File/ New и выбрать тип проекта MFC AppWizard(exe).
В поле Project names задать имя проекта - SDI (Single Document Interfase).
В поле просмотра каталогов Location с помощью окна Browse задать каталог размещения проекта SDI.
Установить переключатель Create new workspace.
Щелкнуть по кнопке OK.
Выбрать интерфейс приложения Single document и завершить первый шаг работы мастера AppWizard, щелкнув по кнопке Next.
На втором шаге можно задать поддержку работы с базами данных: нет поддерживать, только главные файлы, вид базы данный без поддержки файла или вид базы данный с поддержкой файла.
На третьем шаге для приложения можно задать поддержку работы с OLE-объектами: не поддерживать, контейнер, мини-сервер, сервер, одновременно контейнер и сервер.
На четвертом шаге можно задать следующие опции создаваемого остова приложения:
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).
Шаги 5 и 6 аналогичны шагам 3 и 4 при создании проекта приложения, основанного на диалоге.
Щелкнуть по кнопке Finish и в каталоге SDI познакомиться со всеми автоматически созданными каталогами и файлами, а также оцените размеры этих файлов.
Задание №3. Создать остов приложения с многодокументным интерфейсом, выполнив действия 2-го задания со следующими изменениями:
На первом шаге в поле Project name задать имя проекта - MDI (Multiple Document Interfase)(см. пункт 2).
В пункте 6 выбрать интерфейс приложения Multiple Documents.
Оценить изменения в составе файлов проекта.
Задание №4. Просмотреть все классы, методы и переменные созданных приложений, выполнив следующие действия:
Закрыть текущую рабочую область с помощью команды File/ Close Workspace.
Открыть требуемый проект при помощи команды File/ Open Workspace с последующей установкой пути доступа к файлу DBI.dsw, затем SDI.dsw и MDI.dsw.
На экране появляется окно рабочей области проекта Workspace, в котором находится папка требуемого проекта. Если окно не видимо, следует выполнить команду View/ Workspace.
Под окном проекта по очереди выбирайте кнопки и познакомьтесь со структурами классов, ресурсов и исходных файлов проекта, а также с электронной документацией по Visual C++.
Откройте папку с классами проекта и в полученном дереве классов проекта познакомьтесь с методами и переменными классов, а также с глобальными переменными, раскрывая соответствующие узлы с помощью щелчка на знаке “+”. Обратите внимание на значки у методов и переменных, которые определяют спецификаторы доступа: private, protected и public.
Выбрать класс на дереве классов и дважды щелкнуть по имени класса, что обеспечит открытие окна документа с заголовочным файлом данного класса.
Выбрать метод на дереве классов и дважды щелкнуть по имени метода, что обеспечит открытие окна документа с файлом реализации данного класса, причем курсор будет указывать на выбранный метод.
Повторить пункт 7 для переменной класса и для глобальной переменной.
Выбрать метод или переменную класса и щелкнуть правой клавишей, после чего сделать переход на определение метода или на список ссылок соответственно для метода и для переменной. Установить и убрать точку прерывания для метода. Для построения списков ссылок Visual C++ создает файл ссылок с расширением *.bsc (browse file).
Выбрать имя класса и щелкнуть правой клавишей, что вызывает появление контекстного меню с командами Add Member Variable (добавить переменную) и Add Member Function (добавить метод). Используя эти команды, добавить переменные и функции для выбранного класса, посмотреть их в файлах *.h и *.cpp, а затем удалить их из класса.
Сделать добавление этих переменных и функций непосредственно в файлах *.h и *.cpp и убедиться, что появляются в дереве классов проекта.
Задание №5. Просмотреть ресурсы проекта, выполнив следующие действия:
Открыть в окне проекта папку с ресурсами.
Открыть папку ресурсов.
Выбрать требуемый ресурс и дважды щелкнуть по имени ресурса, что вызывает соответствующий редактор ресурсов.
Произвести некоторые изменения в ресурсе, а затем восстановить ресурс в исходное состояние.
С помощью команды Insert в главном или контекстном меню добавить, а затем удалить какой-либо ресурс. Контекстное меню вызывается щелчком правой кнопки мыши по имени ресурса.
Задание №6. Просмотреть все файлы проекта, выполнив следующие действия:
Открыть в окне проекта папку с файлами.
Открыть папку файлов.
Выбрать требуемый файл, дважды щелкнуть левой клавишей и выполнить редактирование, а затем его отменить.
Выбрать новый файл и нажать правую клавишу, что открывает контекстное меню со следующими командами:
Open - открывает любой другой файл;
Settings - позволяет изменить установки отладчика, компилятора и других инструментальных средств;
Properties - позволяет просмотреть все объектные, исполняемые и другие файлы, которые компилятор строит из исходного, а также все подключаемые файлы.
Задание №7. Познакомиться с электронной документацией среды Visual C++, выполнив следующие действия:
Открыть перечень книг документов Visual C++.
Открывая поочередно все книги, построить полное дерево документации, в котором не раскрываемыми узлами являются темы.
Выбрать тему и дважды щелкнуть по ней, что приводит к выводу темы в окно просмотра.
Найти тему с описанием интерфейсов приложений и познакомиться с ней.
Внимательно изучить структуру электронной документации и убедиться в её наличии.
Синхронизировать окно просмотра темы с окном просмотра структуры документации, нажав клавиши Ctrl+S или щелкнув по левой кнопки панели инструментов категории Help. Синхронизация позволяет узнать, к какой книге относится просматриваемая тема.
Сделать несколько переходов по темам, используя точки перехода или листая темы вперед и назад, при этом наблюдать за переходами по книгам в окне со структурой документации.
Найти информацию по индексу ключевому термину, выполнив команду Search в меню Help или контекстном меню (Ctrl+F) и задав ключевой термин. При удачном поиске выдается список тем и книг, в которые входит этот термин, при неудачном - ближайший контекст, который позволит уточнить термин.
Получить синтаксическую, контекстную справку для выбранного элемента программы установив курсор на этом элементе в окне просмотра документации и нажав на клавишу F1.
Получить контекстную справку по выбранному термину темы, выделив этот термин и нажав клавишу F1.
Создать новый файл в каталоге проекта и используя буфер обмена, перенести в этот файл несколько тем, а затем перевести текст файла на русский язык, запустив переводчик с английского языка.
Распечатать необходимые темы, используя команду Print Topic контекстного меню или команду Print меню File.
Сделать закладки в электронной документации для изучаемых тем, используя кнопки категории Help.
Найти необходимые сведения по запросу, выполнив команду Search/ Guery и задав запрос в виде одной строки или нескольких строк в апострофах, соединенных логическими связками And и Or.
Используя кнопки категории Help, познакомиться со списком открывавшихся при работе тем, которые сохраняются в History List, а также с результатом последнего запроса в Guery Results.
Уменьшить область поиска, установив подмножество книг поиска с помощью команды Help/ Define Subset.
Создать небольшой русскоязычный справочник и проверить возможность получения оригинальной справки на английском языке.
Задание №8. Скомпилировать и запустить на исполнение полученные основы приложений, выполнив следующие действия:
Открыть требуемый проект: DBI.dsw, SDI.dsw или MDI.dsw.
На панели инструментов справа установить вид сборки проекта - Win32 Release (коммерческий или производственный режим). Установить вид сборки можно либо командой Project/ Settings окно Settings For или командой Build/ Set Active Configuration.
Создать исполняемый файл проекта, выполнив команду Build/ Build DBI (exe) и проследив за процессом создания файла, состоящим из нескольких этапов.
Оценить размеры исполняемого файла DBI.exe и выяснить, какие файлы получены в результате сборки проекта.
Запустить остов приложения DBI.exe на исполнение с помощью команды Build/ Execute DBI.exe.
Изучить функциональное поведение остова приложения DBI.
Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI. Отметить разницу в их поведении.
Задание №9. Скомпилировать все полученные остовы приложений для отладочного режима и произвести их трассировку, выполнив следующие действия:
Открыть требуемый проект: DBI.dsw, SDI.dsw и MDI.dsw.
Установить вид сборки проекта-Win32 Debug(отладочный режим).
Создать исполняемый файл для отладочного режима, выполнив команду Build/ Build DBI(exe).
Выяснить, какие файлы и где получены при сборке проекта для отладочного режима, а также оценить их размеры и сравнить с соответствующими файлами для производственного режима.
Оценить влияние переключателя Settings/ Generate Browse Info на размеры создаваемых при компоновке файлов.
Перейти в отладочный режим с помощью команды Build/ Debug, которая заменяет элемент Build главного меню на элемент Debug.
Произвести отладку остова приложения 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) - непосредственное вычисление значений переменных и выражений;
Для отладочного и для рабочего режимов, сравните значения следующих параметров: Sourse code debugging, MFS diagnostic macros, Library linkage и Compiler opzimization.
Убедиться, что в основе приложения DBI находится диагностические макросы TRACE, ASSERT и VERIFY и включить трассировку программы, вставив в ее текст оператор afxtrace=TRUE или включить оператор Trace Enabled=1 в раздел [Diagnostics] файла AFX.INI, расположенного в подкаталоге Windows. При отладке подключается утилита Tracer, которая выдает данные в окно вывода. Заметьте, что диагностические макросы активизируют режим отладочной сборки проекта, но не требуют в коде отладочной информации.
Выяснить у системного программиста, установлено ли на компьютере отладочное ядро Windows, обеспечивающее сбор и выдачу очень важных сообщений об ошибках, возникающих в процессе отладки программ.
Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI.
Выяснить назначения в программах файлов StdAfx.h и StdAfx.cpp, а также ключей компилятора /Yx,/Yu,/Yc и /Yp. Обеспечить для трех остовов приложений использование одного предкомпилированного заголовочного файла ALL.pch.
В конце занятий необходимо файлы *.pch удалять из-за их огромных размеров (порядка 4 Мб).
Оценить скорость компиляции при наличии файла *.pch и при его отсутствии.
Контрольные вопросы:
Перечислите все типы проектов и укажите, какие из них ориентированы на использование библиотеки MFC.
Укажите путь для каталога, в котором AppWizard по умолчанию создает каталоги проектов.
Перечислите подкаталоги, которые автоматически создает AppWizard в каталоге проекта.
Назовите платформу, используемую AppWizard по умолчанию.
Перечислите все типы интерфейсов приложений и укажите области их применения.
Какую опцию следует задать для включения диалогового окна с информацией о версии приложения? Как изменить или дополнить это окно?
Как задать управляющим элементам приложения трехмерную форму?
Как для приложения создать и включить справочный файл?
Как создать сервер или контроллер автоматизации?
Как создать сетевое приложение?
Перечислите типы создаваемых автоматически файлов проекта и укажите назначения файлов Readme.txt, StdAfx.h и StdApx.cpp.
Сколько шагов делает мастер AppWizard при создании остова приложения,
основанного на диалоге и остова приложения с одно- и многодокументным интерфейсом?
Перечислите функциональные кнопки панели инструментов, вставляемые опцией Docking toolbar. Как отключить эту панель при работе приложения?
Что отображается в строке состояния приложения и как она отключается?
Каким образом произвести просмотр всех потомков и всех родителей данного класса, всех вызываемых и вызывающих функций?
Перечислите все способы поиска информации в электронной документации Visual C++.
Перечислите этапы процесса создания исполняемого файла проекта.
Где и какие файлы создаются при компоновке проекта для производственного режима и для отладочного режима? Сравните размеры соответствующих файлов.