- •4 Створення прикладних mfc-програм в середовищі Windows
- •4.1 Структура мінімальної прикладної mfc-програми
- •4.2 Обробка повідомлень в mfc-програмах
- •4.3 Розробка меню в mfc-програмах
- •4.3.1 Перший спосіб підключення меню в mfc-програмах
- •4.3.2 Другий спосіб підключення меню в mfc-програмах
- •4.3.3 Обробка повідомлень від команд меню
- •4.4 Підключення панелі інструментів і рядка стану
- •4.4.1 Створення панелі інструментів
- •4.4.2 Створення рядка стану
- •4.4.3 Приклад програми
- •4.5.1 Контексти пристроїв в mfc-програмах
- •4.5.2 Використання пера та пензля в mfc-програмах
- •Таблиця 4.3 - Класи графічних об’єктів
- •4.5.4 Рисування стандартних геометричних фігур
- •4.5.5 Приклад програми з векторною графікою
- •4.6 Растрова графіка в mfc-програмах
- •4.7 Програмування діалогу в mfc-програмах
- •4.7.1 Основні етапи створення діалогу в mfc-програмах
- •Таблиця 4.4 - ddx-макроси для найбільш поширених ек
- •4.7.2 Організацію обміну даними з полем введення Edit
- •4.7.3 Організація обміну даними зі списком ListBox
- •4.8 Використання dll-бібліотек в mfc-програмах
- •4.8.1 Призначення бібліотек dll
- •4.8.2 Створення власної бібліотеки dll
- •4.8.3 Підключення функцій бібліотеки dll до виконувального файлу
4.7 Програмування діалогу в mfc-програмах
4.7.1 Основні етапи створення діалогу в mfc-програмах
Послідовність розробки діалогових програм на основі бібліотекиMFCтака ж, як і послідовність розробки діалогових програм з використанням функційAPI. Оскільки відмінність полягає лише у різних програмних кодах у файлі *.cpp, тому розглянемо цей файл детально.
Опис стандартного діалогового вікна в файлі *.cppвключає такі етапи.
1.Створення власного класу діалогу, похідного від бібліотечного класу CDialog.
В цьому класі мають бути оголошені необхідні змінні-властивості класу діалогу, які відповідають різним ЕК діалогового вікна. Ці змінні можуть бути двох категорій: значення (Value) та керування (Control). Змінні категоріїValueможуть мати стандартні типи (int, Cstring, BOOLта ін.). тоді як змінні категоріїControlвизначаються як об’єкти класів відповідних ЕК. Вибір однієї з двох категорій визначає особливості реалізації наступних етапів.
2. Ініціалізація ЕК діалогового вікна.
Суть цього етапу полягає в присвоєнні змінним-властивостям тих значень, які мають бути відображені у відповідних ЕК при першому відображенні діалогового вікна. Ініціалізація ЕК відбувається, як правило, за допомогою стандартного методу OnInitDialog(). В окремих випадках, зокрема для змінних категоріїValue, ініціалізація може виконуватись в конструкторі власного класу діалогу.
3. Організація обміну даними з ЕК діалогового вікна.
Найбільш зручним способом обміну даними є стандартний метод DoDateExchange(). Цей метод містить набірDDX-макросів, які встановлюють зв’язок між ЕК та відповідною змінною-властивістю класу діалогу. В таблиці 4.4 наведеніDDX-макроси для найбільш поширених ЕК. Можуть також бути задані іDDV-макросів для контролю введених значень. МетодDoDateExchange() викликається автоматично перед відображенням діалогового вікна на екрані.Організувати обмін даними можна не тільки за допомогою методуDoDateExchange(), але також з використанням інших методів класів бібліотекиMFC.
4. Створення об’єкта власного класу діалогу та його активація.
Вказаний об’єкт створюється або методом DoModal() (для створення модального діалогу), або методомCreate() (для створення немодального діалогу). Результатом цього етапу буде створення та відображення на екрані діалогового вікна.
5. Обробка введених користувачем даних в діалоговому вікні.
Виконується така обробка після натиснення кнопки Okта закриття діалогового вікна. Після цього відбувається передача даних із ЕК у змінні-властивості класу діалогу згідно зDDX-макросами методуDoDateExchange(). Якщо введені дані не потрібно зберігати або обробляти, тоді діалогове вікно закривається натисненням кнопкиCancel.
6. Використання результатів введених даних.
Введені за допомогою діалогового вікна дані далі можуть бути використані в функціях інших класів програми.
Таблиця 4.4 - ddx-макроси для найбільш поширених ек
Макрос |
Тип даних |
Опис |
DDX_Text |
Cstring,UINT,long,float
|
Обмін даними з полями введення (Edit) |
DDX_Check |
int
|
Стан ЕК “прапорець” (CheckBox) |
DDX_Radio |
int
|
Номер вибраної кнопки-перемикача (RadioButton) |
DDX_LBString |
Cstring
|
Рядок, вибраний в полі списку (ListBox) |
DDX_CBString |
Cstring |
Рядок, вибраний в полі комбінованого списку (ComboBox) |
DDX)LBIndex |
Int |
Номер запису, вибраного у списку (ListBox) |
DDX_CBString |
int |
Номер запису, вибраного у комбінованому списку (ComboBox) |
DDX_Control |
клас |
Покажчик на об’єкт класу ЕК |
Далі розглянемо на прикладах організацію обміну даними з найбільш поширеними ЕК діалогових вікон.