
- •Содержание
- •Введение
- •Лабораторная работа №1 разработка программы на базе каркаса приложений
- •Лабораторная работа №2 создание остова приложения
- •Лабораторная работа №3 создание приложения с диалоговым интерфейсом.
- •Лабораторная работа №4 создание приложений с одно-документным интерфейсом
- •Лабораторная работа № 5 создание приложения с многодокументным интерфейсом.
- •Лабораторная работа № 6 создание приложений для построения графических изображений
- •Лабораторная работа № 7 создание приложений баз данных
- •Лабораторная работа № 8 создание приложений для работы с файлами.
- •Лабораторная работа № 9 создание справочной системы для приложения под windows
- •Лабораторная работа № 10 создание многопоточных приложений.
- •Список литературы.
Лабораторная работа №3 создание приложения с диалоговым интерфейсом.
Цель работы - приобретение навыков построения приложений, основанных на диалоговом интерфейсе и библиотеки MFC, с использованием мастера приложений, редактора ресурсов и мастера классов студии разработчика Visual C++.
Требуется разработать приветствие - диалог между двумя субъектами: пользователем и компьютером. Пользователь You здоровается с компьютером. На первые два приветствия компьютер не отвечает. После третьей попытки он советует никогда не разговаривать с неизвестными и предлагает представиться. Пользователь называет себя ,и компьютер любезно здоровается с ним.
Для реализации сценария приветствия необходимо использовать диалоговое окно с двумя командными кнопками: ”Вы” и ”Компьютер”, соответствующие объектам – участникам диалога. Объекты должны иметь соответствующие окна редактирования, где будет появляться текст диалога. Пользователь инициирует диалог щелчком той или иной командной кнопки. Программа, реагируя на события, вызванные действиями пользователя, выдает соответствующие реплики в окнах редактирования. На определенном этапе диалога пользователь сможет ввести свое имя в окно редактирования.
Задание №1. Используя мастер приложений AppWizard, редактор ресурсов и мастер классов ClassWizard студии разработчика Visual C++, создать приложение, реализующее описанный выше сценарий приветствия. При создании приложения рекомендуется придерживаться следующего порядка действий:
Создать остов приложения, основанного на диалоге, задав имя Hello и выбрав соответствующий рабочий каталог.
Скомпилировать и запустить полученный остов Hello. Появившееся окно стартового приложения содержит раскрывающееся системное меню со стандартными элементами Move, Close и About, а также две командные кнопки OK и Cancel и статический текст, информирующий о том, что в окно можно поместить элементы управления.
Открыть окно ресурсов проекта и папку ресурсов Dialog.
Выделить ресурс с идентификатором IDD_HELLO_DIALOG, связанный с объектом класса ChelloDlg, который создал AppWizard от базового класса CDialog библиотеки MFC.
Щелкнуть правой кнопкой и из контекстного меню Properties выбрать язык ресурса Russian.
Войти в редактор ресурсов, дважды щелкнув на идентификаторе IDD_HELLO_DIALOG. В окне редактора ресурсов появляется диалоговое окно приложения и две панели инструментов: одна с набором элементов управления, другая с элементами компоновки в окне.
Выбрать из панели инструментов командную кнопку и разместить ее в окне приложения.
Щелкнуть по кнопке правой клавишей и в контекстном меню выбрать элемент Property.
На странице свойств командной кнопки в окне Caption заменить имя кнопки “Button1” на ”Вы”, а в окне ID- идентификатор “IDC_Button1” на ”IDC_You”.
Повторить пункты 7,8 и 9 для командной кнопки ”Компьютер”, связав с ней идентификатор IDC_Comp.
Удалить в окне приложения статический текст, выделив его и нажав клавишу Del.
Выбрать из панели инструментов элемент “Статический текст” и разместить его в окне приложения.
С помощью контекстного меню изменить свойство Caption, задав фразу “Поздоровайтесь коллеги!”.
На панели инструментов выбрать окно редактирования и перенести в окно приложения.
С помощью контекстного меню в окне ID задать имя IDC_EDYou.
Повторить пункты 14 и 15, задав в окне ID имя IDC_EDComp.
Используя инструменты компоновки, разместить элементы управления на окне приложения с требованиями дизайна.
С помощью контекстного меню для окон редактирования отменить свойство Auto HScroll (автоматическая горизонтальная прокрутка) и установить свойство Multiline (многострочное отображение информации).
Для просмотра диалогового окна при выполнении приложения включить тумблер слева на панели компоновки.
На диалоговом окне приложения щелкнуть правой кнопкой мыши и из контекстного меню вызвать мастер классов ClassWizard. Cделать активным класс CHelloDlg в поле Class name окна мастера классов ClassWizard.
На вкладке Message Maps в окне Object IDs выбрать IDC_You.
В окне возможных сообщений Messages для кнопки Вы выбрать сообщение BN_CLICED.
Щелкнуть по кнопке Add Function, в результате чего ClassWizard предложит создать функцию обработки сообщению BN_CLICED с именем OnYou.
Щелкнуть по кнопке ОК и посмотреть остов функции OnYou.
Повторить пункты 21-24 для кнопки Компьютер, в результате чего будет создан остов функции OnComp.
Связать окно редактирования IDC_EDYou с переменной класса CHelloDlg, выбрав в окне ClassWizard вкладку Member Variables и отметив идентификатор IDC_EDYou, для которого указать имя переменной m_You в окне AddVariables.
В окне AddVariables задать категорию переменной Control и тип CEdit, в результате ClassWizard создаст переменную m_You типа CEdit в классе CHelloDlg.
Повторить пункты 26 и 27 для окна редактирования IDC_EDComp, используя имя m_Comp той же категории и того же типа.
Открыть папку HelloClasses и найти в классе CHelloDlg переменные m_You и m_Comp.
Выборать папку HelloClasses и щелкнуть правой кнопкой мыши.
В контекстном меню выбрать элемент Add Member Variables и задать в диалоговом окне имя переменной Count для подсчета числа щелчков по кнопке Вы, а также ее тип UINT и статус protected.
Повторить пункт 31 для задания переменной InviteDone, определяющей статус Компьютера и имеющий тип BOOL в разделе protected.
Выбрать в классе ChelloDlg метод OnInitDialog и добавить в него код для инициализации переменных:
Count=0;
InviteDone=FALSE;
Выбрать обработчик OnYou и дополнить его кодом:
switch (++Count)
{ case 1: //-первый щелчок:
m_You.SetWindowText(“Привет компьютер!”);
break;
case 2: //-второй щелчок:
m_You.SetWindowText(“Компьютер,проснись!”);
break;
case 3: //-третий щелчок:
m_You.SetWindowText(“Поздоровайся ,наконец!”);
break;
}
Выбрать обработчик OnComp и дополнить его кодом:
CString s1=”Совет дня: Никогда не разговаривайте с неизвестными!
Ваше имя, пожалуйста.”;
s2=””;
if( Count>=3 )
if(!InviteDone)
{ m_Comp.SetWindowText(s1);
m_You.SetWindowText(“”);
InviteDone=TRUE;
}
else
{ m_You.GetWindowText(s2);
if(s2==””) s2=”люди”;
m_Comp.SetWindowText(“Здравствуйте,” + s2+”Всегда рад с вами
работать!”);
m_You.SetWindowText(“”);
}
Скомпилировать программу и запустить на исполнение, а затем реализовать сценарий диалога.
Изучить детальную структуру программы, запустив броузер классов с помощью команды Tools/ Source Browser.
Задание №2. Создать приложение с использованием динамического обмена данных, обеспечиваемого API-функцией UpdateData(BOOL), выполнив следующие изменения в обработчиках сообщений:
Заменить код функции обработки OnYou на новый код:
switch (++Count)
{ case 1: m_You= “Привет компьютер!”;
UpdateData(FALSE);//-ввод в окно;
break;
case 2: m_You= “Компьютер,проснись!”;
UpdateData(FALSE); //-повторный ввод ;
break;
case 3: m_You= “Поздоровайся ,наконец!”;
UpdateData(FALSE); //-последний ввод ;
break;
default: UpdateData(TRUE);//-чтение из окна;
}
Заменить код функции обработки OnComp на новый код:
CString s1=”Совет дня: Никогда не разговаривайте с неизвестными!
Ваше имя, пожалуйста.”, s2;
if( Count >=3 )
if(!InviteDone)
{ m_Comp =s1;
m_You=””;
InviteDone=TRUE;
UpdateData(FALSE);
}
else
{ UpdateData(TRUE);
if(m_You==””) m_You=”люди”;
m_Comp=“Здравствуйте,” + m_You +”Всегда рад с Вами работать!”;
m_You=””;
UpdateData(FALSE);
}
Для переменных m_You и m_Comp выбрать категорию Value и тип CString. Это приведет к тому, что мастер классов ClassWizard создаст остов класса с другим механизмом ввода/вывода, обеспечиваемым функцией UpdateData(BOOL), причем значение FALSE параметра этой функции обеспечивает передачу из всех связанных строковых переменных в соответствующие окна редактирования, а значения TRUE - обратную передачу;
Добавить в определение метода OnInitDialog инициализацию строковых переменных:
m_You=””;
m_Comp=””;
Скомпилировать программу и проверить работоспособность приложения.
Задание №3. Используя динамический обмен данными, создать приложение для ввода/вывода структур и массивов.
Контрольные вопросы:
Объясните, какие коды создал мастер ClassWizard для обработки сообщений о нажатии кнопок “Вы” и ”Компьютер”.
Поясните процедуру связывания переменных класса с окнами редактирования.
Поясните процедуру связывания строковых переменных с окнами редактирования и действия, выполняемые функцией UpdateData(BOOL), при динамическом обмене данных.
Перечислите все функции, которые используются при динамическом обмене.
Объясните возможности броузера классов и назовите условие, при котором его можно включить в работу.