Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
14.05.2015
Размер:
118.27 Кб
Скачать

Лабораторная работа № 1

Разработка простейшего диалогового проекта с использованием MFC

Цель работы: изучение технологии разработки диалогового проекта с использованием библиотеки MFC, структуры проекта, порядка задания свойств и программирования элементов управления

Задание

1. Изучите раздел "Учебная информация" и реализуйте описанный в нем пример проекта. Опишите своими словами смысл выполняемых в проекте действий.

2. В соответствии с вариантом задания, содержащемся в файле Var01.doc, реализовать диалоговый MFC-проект под именем DlgXX, где XX – номер варианта. Под каждую вводимую и выводимую величину организовать отдельное поле. Надписи к полям должны соответствовать смыслу задачи. Выполнение решения задачи – по нажатию на кнопку.

3. Подготовить отчет о работе. В раздел "Выполнение" включить ответы на контрольные вопросы и вид полученного диалогового окна.

Учебная информация

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

1. Создадим новый проект: File\New\Project. В окне Project Type задать следующие параметры:

  • в поле Project Types выбрать MFC;

  • в поле Templates выбрать MFC Application;

  • в поле Name задать имя приложения в соответствии с вариантом задания (здесь добавлено имя Lab01);

  • в поле Location указать папку для хранения приложения.

2. В окне MFC Application Wizard на вкладке Application Type выбрать переключатель Dialog Based. Остальные настройки мастера MFC Application Wizard следует оставить без изменения и закончить настройку нажатием кнопки Finish.

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

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

Следует также заметить, что Мастер создал достаточно большой код проекта, содержащий три класса: CAboutDlg – класс окна "О программе"; CLab01App – класс самого приложения и CLab01Dlg – класс диалогового окна. На рисунке в окне управления проектом видно, что класс CLab01Dlg содержит шесть функций различного назначения.

3. Для того чтобы в диалоговом окне корректно воспроизводился русский шрифт, следует открыть папку Dialog на вкладке Resource View окна управления проектом, выделить идентификатор диалогового окна IDD_LAB01_DIALOG и в окне Properties задать тип шрифта: LanguageRussian. Если вкладка Resource View в окне управления проектом отсутствует, ее следует добавить командой View\Resource View.

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

Рис. 1.

У далим три элемента управления на диалоговом окне. Установим свои элементы управления: одну кнопку, два текстовых поля и две надписи как показано на рис. 2. Будем считать, что исходное число вводится в верхнее поле, а результат выводится в нижнее после нажатия кнопки "Решение задачи". Для установки новых элементов управления необходимо коснуться указателем мыши вкладки Toolbox в правой части основного окна интегрированной среды (рис. 1) – откроется выпадающий список элементов управления.

Для установки следует щелкнуть по соответствующему элементу на панели и "растянуть" его мышью в диалоговом окне. Тексты на кнопке и в элементах "Static Text" вводятся через окна свойств этих элементов. Для вызова этого окна необходимо выделить элемент и в окне Properties в поле Caption записать требуемый текст.

5. Для хранения значений, вводимых и выводимых в текстовые поля, следует добавить соответствующие переменные – компоненты класса CLab01Dlg. Для этого можно щелкнуть правой кнопкой мыши по текстовому полю и в контекстном меню выбрать Add Variable . В окне Add Member Variable Wizard необходимо задать следующие настройки:

  • имя переменной (Variable Name) – m_edit1 (или любое другое);

  • категория (Category) – value;

  • тип (Variable Type) – int.

Аналогично следует добавить переменную m_edit2 для второго текстового поля.

6. Основным командным элементом диалогового окна является кнопка "Решение задачи". Для программирования ее работы можно щелкнуть правой кнопкой мыши по кнопке и в контекстном меню выбрать Add Event Handler. В окне Event Handler Wizard надо выбрать тип сообщения (Message Type) – BN_CLICKED, а в списке классов – класс диалогового окна CLab01Dlg и нажать кнопку Add and Edit. В результате будет открыто окно редактора кода файла Lab01Dlg.cpp с заготовкой функции-обработчика нажатия кнопки. Место вставки кода обработки нажатия кнопки обозначено комментарием:

//TODO: Add your control notification handler code here.

Этот комментарий можно удалить, а на его место вписать следующий код:

U pdateData(TRUE);

m_edit2=m_edit1*m_edit1;

UpdateData(FALSE);

7. Откомпилировать и скомпоновать приложение: Build/Build Solution. Для запуска приложения надо открыть папку проекта, а в ней – папку Debug и запустить исполняемый файл Lab01.exe. Пример решения задачи показан на рис. 3.

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

1. В какой файл добавлены описания переменных m_edit1 и m_edit2?

2. Что и в какие места приложения добавил мастер Event Handler Wizard при вставке обработчика нажатия кнопки?

3. Как удалить обработчик нажатия кнопки?

4. Что такое идентификатор объекта?

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

6. Для чего в класс диалогового окна введены компоненты данных, связанные с текстовыми полями?

Соседние файлы в папке ВУМИП_ЗО