Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабробС++1к.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.06 Mб
Скачать

2. Розробка windows-додатку з діалоговим вікном

Мета роботи – ознайомитись з основами візуального програмування на базі Microsоft Foundation Classes (MFC). за допомогою майстра AppWizard .

1. Алгоритм редагування меню додатку засобами майстра AppWizard

Додаток, побудований за допомогою MFC AppWizard, найчастіше містить основне меню з урахуванням параметрів, заданих під час роботи майстра. Побудоване меню має ідентифікатор IDR_MAINFRAME.

У редакторі меню Visual C++ можна побудувати власне меню, змінивши стандартні властивості команд, що входять до нього.

Видалимо меню Edit.

1.1. У вікні проекту МуАрр клацніть вкладинку ResourceView та клацніть знак «+» перед МуАрр Resources.

1.2. Клацніть знак «+», розміщений перед Menu.

1.3.Двічі клацнувши меню IDR_MAINFRAME, відкрийте редактор меню.

1.4. У рядку меню клацніть Edit, а потім натисніть клавішу DELETE. Для підтвердження видалення клацніть ОК.

Замість непотрібного нам меню Edit вставимо потрібне нам меню Data, тому виконаємо:

1.5. Клацніть порожнє місце у рядку меню праворуч від пункту Help.

1.6. Перетягніть мишою порожню команду та вставте її між пунктами File та View.

1.7. Двічі клацнувши порожню команду, відчиніть вікно властивостей. У полі Caption введіть Data.

Рис.2.1.1. Створення пункта меню Data

Додамо до меню Data команду Connect:

1.8.Виберіть, клацнувши мишою, пункт Data.

1.9.Клацніть порожню команду під заголовком меню Data.

1.10.Наберіть рядок Connect...

Зверніть увагу на те, що редактор створив ідентифікатор ID_DATA_CONNECT, що складається з імені меню та імені команди. При потребі можна змінити цей ідентифікатор.

Кожна команда меню, яку вибирає користувач (за винятком заголовка та відокремлювача), поєднана з визначеним ідентифікатором, який можна передавати функції-обробнику. Важливо пам’ятати, що при виборі команди меню генерується повідомлення WM_COMMAND, яке обробляється одним з об’єктів додатку. Це повідомлення міститиме в якості параметра ідентифікатор команди.

2. Побудова діалогового вікна Connect to Data Source

Створимо у редакторі діалогів шаблон діалогового вікна, за допомогою якого додаток МуАрру буде отримувати дані.

2.1. У вікні проекту МуАрр на вкладинці ResourceView розкрийте вузол Resources.

2.2. Правою кнопкою миші клацніть вузол Dialog.

2.3. Виберіть пункт Insert Dialog, щоб створити порожнє діалогове вікно з кнопками ОК та Cancel.

2.4. Клацніть заголовок діалогового вікна, стараючись не потрапити на кнопку, інакше вибереться кнопка, а не вікно.

2.5. Перетягніть маркер виділення у нижньому правому куті діалогового вікна для визначення потрібних розмірів вікна: ширини 230 пікселів та висоти 200 пікселів. При роботі з редактором діалогів розмір вікна у пікселях виводиться у рядку стану.

Рис.2.2.1.Побудований шаблон

Змінимо властивості діалогового вікна:

2.6. Виберіть діалогове вікно та натисніть ENTER.

2.7. У полі ID вкладинки General введіть IDD_CONNECTDIALOG, де IDD_ - стандартний префікс ідентифікаторів діалогових вікон.

2.8. У полі Caption введіть Connect to Data Source.

Рис.2.2.2. Вікно Dialog Properties

2.9. Зачиніть вікно Dialog Properties.

Додамо позначення полів введення даних:

2.10. Розкрийте команду Full Screen у меню View.

2.11. У панелі інструментів Controls виберіть кнопку Static Text.

2.12. Створіть напис поряд з лівим верхнім кутом діалогового вікна.

Коли вказаний елемент керування, який вводиться, тоді починайте вводити текст Data Source:. Вікно Text Properties виникне автоматично, і введений текст виявиться у полі Caption

Рис.2.2.3. Запис статичного тексту.

Додамо позначення для даних, що вводяться: а= та b= , та поля введення даних, як це показано на рис та змінимо назву кнопки ОК.

2.13. Клацніть кнопку ОК та наберіть текст Connect. Автоматично виникне вікно Push Button Properties, і введений текст виявиться у полі Caption. Ідентифікатор кнопки залиште без змін.

2.14. Зачиніть вікно Push Button Properties. Розташуйте кнопки Connect та Cancel відповідно до Рис.2.2.4.

Рис.2.3. Розташування кнопок

3. Побудова класу діалогу та поєднання елементів керування зі змінними класу

Після створення шаблону діалогового вікна потрібно створити відповідний до нього клас діалогу, похідний від MFC-класу CDialog. У клас вміщуються змінні для доступу до елементів керування та даних діалогового вікна, а також методи обробки подій, що виникають при роботі користувача з елементами керування. Застосування ClassWizard значно полегшує стврення класу діалогу та поєднання елементів керування зі змінними класу.

Побудуємо клас CConnectDialog.

3.1. Відчиніть діалогове вікно IDD_CONNECTDIALOG у редакторі діалогів та натисніть CTRL+W, щоб завантажити ClassWizard. Майстер виведе на екран вікно Adding a Class, показане на рисунку 3.1.

Рис.2.3.1. Додавання нового класу

3.2. Встановивши перемикач Create a new class, клацніть ОК. Виникне вікно New Class. У полі Name введіть CConnectDialog. Зверніть увагу на те, що ім’я файлу створюється автоматично.

3.3. Клацніть ОК. Майстер ClassWizard створить клас CConnectDialog та вмістить його ім’я у поле Class Name

Рис.2.3.2. Вікно New Class

3.4. Клацніть OK та зачиніть ClassWizard

Створивши клас діалогу, можна відобразити модальне діалогове вікно на екрані. Для цього у коді додатку досить створити примірник цього класу та викликати метод базового класу CDialog::DoModal(). Функції базового класса CDialog::OnOK() та CDialog::OnCancel() забезпечують стандартну обробку повідомлень IDOK та IDCANCEL, які генеруються по замовчуванні кнопками ОК та Cancel. Обидві функції для закриття діалогового вікна викликають метод CDialog::EndDialog(). Функція CDialog::DoModal() повертає ідентифікатор кнопки, яка зачинила вікно.

AppWizard забезпечує MFC-додаток шаблоном та класом діалогу для вікна About. Код відображення вікна на екрані знаходиться у функції-члені OnAppAbout() об’єкту додатку, що є обробником команди ID_APP_ABOUT. Нижче наведений зразок коду функції OnAppAbout(), яка відображає на екрані діалогове вікно About для додатку МуАрр.

Змінимо додаток так, щоб командою Connect у додатку МуАрр1 відображати на екрані діалогове вікно Connect to Data Source.

3.5.Для відкриття майстра ClassWizard у проекті МуАрр натисніть CTRL+W. Клацніть вкладинку Message Maps, а потім виконайте наступні дії: у списку Class Name виберіть СМуАррАрр, у списку Object IDs - ID_DATA_CONNECT, а у списку MessagesCOMMAND.

Рис.2.3.3. Додаванна функції-обробника повідомлення

У полі Class Name вікна майстра та натисніть клавішу Add Function. На фоні діалогового вікна виникне віконце Add Member Function з запропонованим іменем функції OnDataConnect, яка буде додана.

3.6.Натиснувши ОК, залишимо без змін ім’я функції. Натиснувши Edit code у вікні майстра потрапимо у функцію OnDataConnect.

3.7. У фігурних дужках функції-обробника OnDataConnect() вставте такий рядок коду:

CConnectDialog aCD;

aCD.DoModal();

3.8. У ту частину файлу МуАрр1.срр, де розташовані інструкції #include, додайте такий рядок:

#include "ConnectDialog.h"

3.9. Компілюйте та завантажуйте додаток МуАрр. У меню Data виберіть пункт Connect та впевніться, що діалогове вікно Connect to Data Source відображається на екрані. Зверніть увагу на те, що, не дивлячись на зміну назви, кнопка ОК (яка називається тепер Connect) має той же ідентифікатор IDOK, і тому, клацнувши її, ми викличемо стандартний обробник ОnОК(), який закриває діалогове вікно.

Поки що діалогове вікно Connect to Data Source не виконує ніяких дій. Пізніше буде створений код для введення даних у це вікно, а також код для отримання та обробки даних та повідомлень від елементів керування діалогового вікна.

Додамо змінні для читання даних з полів а= та b= діалогового вікна.

3.10.Для цього натиснемо клавіші Ctrl+W для виклику майстра ClassWizard та вибрати вкладнику Member Variables. У полі Control IDs IDC_EDIT1 та натиснути клавішу Add Variable. У вікні Add Member Variable у полі Member variable name ввести m_a. У полі Category залишити Value, а у полі Variable type вибрати int чи double, тобто значення цілого типу чи дійсного. На екрані виникне наступне вікно:

Рис.2.3.4.Оголошення змінної m_a;

3.11.Виконати описані вище дії для IDD_EDIT2 та ввести ім’я змінної m_b типу int або double.

Рис.2.3.5.оголошення змінної m_b;

3.12.Натиснути ОК для виходу з вікна майстра ClassWizard.

4.Встановлення значень елементів керування діалогового вікна.

4.1. Перейти до функції OnDataConnect(), що.знаходиться у файлі MyApp1App.cpp

4.2. Після рядка коду: aCD.DoModal();

вставити наступний фрагмент коду:

CString strMessage;

if (aCD.DoModal() == IDOK)

{ strMessage.Format("a=%d b=%d", aCD.m_a,aCD._b);

AfxMessageBox(strMessage);}

4.3.Компілюйте та виконуйте програму.

Завдання до лабораторної роботи

1. У діалоговому вікні, що відчиниться, вказати значення для полів, позначених як а= та b=, натиснути клавішу Connect та перевірити правильність переданих значень вказаних полів у змінні m_a та m_b, відповідно – 5 балів.

2. У функції OnDataConnect(), відключити умовну перевірку //if (aCD.DoModal() == IDOK)

та додати такий код:

{for(int i=aCD.m_a;i<=aCD.m_b;i++)

{strMessage.Format("i=%d b=%d", i,aCD.m_b);

AfxMessageBox(strMessage);}

Відкомпілюйте програму та проаналізуйте результати – 5 балів.

3.Відкрити вікно майстра, натиснувши Ctrl+W, вкладнику Member Variables, вибрати клас CConnectDialog у полі Class Name та задати для змінних m_a та m_b у полях Minimum Value та Maximum Value найбільше та найменше значення. Закрити вікно, відкомпілювати та завантажити програму на виконання. Пояснити реакцію програми на введення значень, що перевищують мінімальні та максимальні задані значення – 5 балів.