ЛАБОРАТОРНАЯ РАБОТА №4-5 СОЗДАНИЕ ПРИЛОЖЕНИЯ С ДИАЛОГОВЫМ ИНТЕРФЕЙСОМ

Цель работы - приобретение навыков в построении приложений, основанных на диалоговом интерфейсе и библиотеки MFC с использованием мастера приложений, редактора ресурсов и мастера классов студии разработчика Visual C++.

Требуется разработать приветствие-диалог между двумя субъектами: пользователем и компьютером. Пользователь You здоровается с компьюте­ром .На первые два приветствия компьютер не отвечает. После третьей попытки он советует никогда не разговаривать с неизвестными и предлагает представиться . Пользователь называет себя ,и компьютер любезно здоровается с ним.

Для реализации сценария приветствия необходимо использовать диалоговое окно с двумя командными кнопками :"Вы" и "Компьютер", соответствующие объектам - участникам диалога. Объекты должны иметь соответствующие окна редактирования , где будет появляться текст диалога . Пользователь инициирует диалог щелчком той или иной командной кнопки . Программа, реагируя на события, вызванные действиями пользователя ,выдает соответствующие реплики в окнах редактировыания .На определенном этапе диалога пользователь сможет ввести свое имя в окно редактирования.

Задание 1.

Используя мастер приложений AppWizard,редактор ресурсов и мастер классов ClassWizard студии разработчика Visual C++ , создать приложение, реализующее описанный выше сценарий приветствия .При создании приложения рекомендуется придерживаться следующего порядка деуствий:

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

2. Скомпелировать и запустить полученный остов Hello .Появившееся окно стартового приложения содержит раскрывающееся системное меню со стандартными элементами Move,Close и About, а также две командны е кнопки OK и Cancel и статический текст,информирующий о том ,что в окно можно поместить элементы управления .

3. Открыть окно ресурсов проекта ипапку ресурсов Dialog.

4. Выделить ресурс с идентификатором IDD_HELLO_DIALOG,связанный с объектом класса ChelloDlg, который создал AppWizart от базового класса Cdialog библиотеки MFC.

5. Щелкнуть правой кнопкой и из контекстного меню Properties выбрать язык ресурса Russian.

6. Войти в редактор ресурсов , дважды щелкнув на идентификаторе IDD_HELLO_DIALOG. В окне редактора ресурсов появляется диалоговое окно приложения и две панели инструментов :одна с набором элементов управления , другая с элементами компановки в окне.

7. Выбрать из панели инструментов командную кнопку и разместить ее в окне приложения .

8. Щелкнуть по кнопке правой клавишей и в контекстном меню выбрать элемент Property.

9. На странице свойств командной кнопки в окне Caption заменить имя кнопки

10."Button1" на "Вы", а в окне ID- идентификотор "IDS_Button1" на "IDS_You".

11.Повторить пункты 7,8 и 9 для командной кнопки "Компьютер", связав сней идентификатор IDC_Comp.

12.Удалить в окне приложения статический текст, выделив его и нажав клавишу Del.

13.Выбрать из панели инструментов элемент "Статический текст" и разместить его в окне приложения.

14.С помощью контекстного меню изменить свойство Caption, задав фразу "Поздоровайтесь коллеги!".

15.На панели инструментов выбрать окно редактирования и перенести в окно приложения.

16.С помощью контекстного меню в окне Caption набрать строку из символов подчеркивания, а в окне ID задать имя IDC_ED You.

17.Повторить пункты 14 и 15, задав в окне ID имя IDC_EDComp, а в окне Caption-строку из символов подчеркивания.

18.Используя инструменты компановки, разместить элементы управления на окне приложения с требованиями дизайна.

19.С помощью контекстного меню для окон редактирования отменить свойство AutoHScroll(автоматическая горизонтальная прокрутка) и установить свойство Multi-Line (многострочный).

20.Для просмотра диалогового окна при выполнении приложения включить тумблер слева на панели компановки.

21.На диалоговом окне приложения щелкнуть правой кнопкой мыши и из контекстного меню вызвать мастер классов ClassWizard.

22.На вкладке MessageMaps в окне ObjectIDS выбрать IDC_You.

23.В окне возможных сообщений для кнопки Messages выбрать сообщение BN_CLICED, которое возникает при щелчке правой кнопкой мыши.

24.Щелкнуть по кнопке Add Function, в результате чего ClassWizard предложит создать функцию обработки сообщению BN_CLICED с именем On You.

25.Щелкнуть по кнопке ОК и посмотреть остов функции OnYou.

26.Повторить пункты 21-24 для кнопки Компьютер, в результате чего будет создан остов функции OnComp.

27.Связать окно редактирования пользователя You с переменной класса CHelloDlg, выбрав в окне ClassWizard вкладку Member Variables и отметив идентификатор IDC_ED You, для которого указать имя переменной m_You в окне AddVariables.

28.В окне AddVariables задать категорию переменной Control и тип Cedit, в результате ClassWizard создаст переменную m_You типа CEdit в классе ChelloDlg.

29.Повторить пункты 26 и 27 для окна редактирования IDC_EDComp, используя имя m_Comp той же категории и того же типа .

30.Открыть папку HelloClasses и найти в классе CHelloDlg переменные m_You и m_Comp.

31.Закрыть папку HelloClasses и щелкнуть правой кнопкой мыши.

32.В контекстном меню выбрать элемент AddVariables и задать в диалоговом окне имя переменной Count для подсчета числа щелчков по кнопке Компьютер, а также ее тип VINT и статус protected.

33.Повторить пункт 31 для задания переменной InviteDone, определяющей статус компьютера и имеющий тип BOOL в разделе protected.

34.Выбрать в классе ChelloDlg метод OnInitDialog и добавить в него код для инициализации переменных::

Count= 0;

InviteDone=False;

34.Выбрать обработчик OnYou и дополнить его кодом : switch (++Count)

{ case 1: //-первый щелчок:

m_You. SetWindowText( "Привет компьютер!"); break; case 2: //-второй щелчок:

m_You. SetWindowText("Компьютер,проснись!"); break;

Есенбек А. И.

case 3: //-третий щелчок:

m_You.SetWindowText("Поздоровайся ,наконец!"); break;

}

35.Выбрать обработчик OnComp и дополнить его кодом:

CString s1="Совет дня: Никогда не разговаривайте с неизвестними!

Ваше имя ,пожалуйста.", s2="";

if( Count >=3 ) if(! InviteDone)

{m_Comp.SetWindowText(s1); m_You. SetWindowText("") InviteDone=TRUEelse

{ m_You.GetWindowText(s2); if(s2= =" ") s2="люди"; m_Comp.SetWindowText("Здравствуйте," + s2+"Всегда рад с вами

работать!"); m_You. SetWindowText("");

}

36.Скомпилировать программу и запустиь на исполнение, а затем реализовать сценарий диалога. 37.изучить детальную структуру программы, запустив броузер классов с помощью команды Tools/Browse/BaseClasses and Members, а также включив окно просмотра классов проекта с помощью кнопки Class View.

Задание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);//-чтение из окна;

}

2.Заменить код функции обработки 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);

} 3.Для переменных m_You и m_Comp выбрать категорию Value и тип Cstring;

Это приведет к тому , что мастер классов ClassWizard создаст остов класса с другим механизмом ввода/вывода, обеспечиваемом функцией UpdateData(Bool),

причем значение FALSE параметра этой функции обеспечивает передачу из всех связанных строковых переменных в соответствующие окна редактирования, а значения TRUE- обратную передачу. 4.Добавить в определение метода OnInitDialog инициализацию строковых переменных: m_You=" "; m_Comp=" ";

5.Скомпелировать программу и проверить работоспособность приложения.

Задание 3. Используя динамический обмен данными , создать приложение для ввода/вывода структур и массивов.

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

1. Объясните , какие коды создал мастер ClassWisard для обработки

сообщений о нажатии кнопок "Вы" и "Компьютер". 2.Поясните процедуру связывания переменных класса с сокнами редактирования .

3 .Поясните процедуру связывания строковых переменных с окнами редактирования и действия , выполняемые функцией UpdateData(Bool), при динамическом обмене данных.

4.Перечислите все функции которые используются при динамическом обмене.

5.Объясните возможности броузера классов и назовите условие, при котором его можно включить в работу.

Наши рекомендации