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

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

клас

Покажчик на об’єкт класу ЕК

Далі розглянемо на прикладах організацію обміну даними з найбільш поширеними ЕК діалогових вікон.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]