Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція № 3.doc
Скачиваний:
2
Добавлен:
22.07.2019
Размер:
83.97 Кб
Скачать

Застосування концепції документ/представлення

Всі створені за допомогою майстра AppWizard (майстри додатків) додатки MFC, що підтримують як одно-документный інтерфейс (SDI), так і багатодокументний інтерфейс (MDI— Multiple Document Interface), використовують архітектуру документ/представлення (document/view). Майстер AppWizard створює додаток так, щоб для кожного завантажуваного файлу в додатку створювався екземпляр відповідного класу документа. Крім того, в додатку обов'язково використовується екземпляр класу представлення, що надає користувачеві можливість взаємодіяти як з самим застосуванням, так і з даними документа.

У додатку з одним документом можна асоціювати декілька екземплярів певного представлення. Крім того, з одним і тим же документом може бути зв'язане декілька екземплярів різних уявлень.

У архітектурі документ/представлення прихована величезна потужність. Наприклад, в процесі роботи додаток створює в пам'яті (а згодом і знищує) копії файлу і керівника призначеним для користувача інтерфейсом (і даними) коди, що дозволяє в широких прибудовах маніпулювати відображенням даних, з якими працюють користувачі.

Що володіє дружнім інтерфейсом додаток забезпечує зазвичай декілька різних представлень одних і тих же даних, а це дозволяє краще зрозуміти їх сенс. Наприклад, на підставі табличних даних про температуру атмосфери на всій території США ймовірно буде досить важко зміркувати, наскільки холодно буде в штаті Південна Дакота. Але одного погляду на публіковану в газетах карту погоди, де синім кольором позначають холодний фронт, а оранжевим — теплий, цілком достатньо, щоб скласти представлення про те, яка погода може чекати мандрівника в цих краях. І це не дивлячись на те, що табличні дані містять ту ж інформацію. По-перше, представлення даних у вигляді таблиці дуже зручно для введення значень, а по-друге — це єдиний спосіб з'ясовувати погоду в штаті Південна Дакота для тих, хто не дуже добре знає, де саме вона знаходиться. Таблиця і кольорова карта — це два разных представлення, і додаток MDI може використовувати обидва (а можливо і ще декілька) для відображення одних і тих же даних.

Додатки з однодокументным інтерфейсом, створені за допомогою майстра AppWizard, здатні використовувати тільки один документ, один тип представлення і лише по одному екземпляру кожного з цих класів. Але це справедливо тільки для коди, створеної майстром AppWizard. Після того, як він закінчить роботу із створення додатку, розробник вольний на свій розсуд змінити конфігурацію проекту і, за бажання, скористатися декількома екземплярами будь-якого представлення або документа.

Додатки MDI використовують, принаймні, одну пару документ/представлення, але при необхідності можуть використовувати і декілька документів з різними представленнями в різних комбінаціях, що дозволяє користувачеві одночасно працювати з декількома файлами, а також відображати ці дані різними способами. Докладніша інформація про додатки MDI приведена в розділі 3, "Додатки MDI". На мал. 2.1 представлена схема взаємодії класів, використовуваних при реалізації простого додатку SDI із застосуванням класів MFC.

Ці класи послідовно розглядаються впродовж даного розділу. Наприклад, фреймові вікна (представлені на мал. 2.1 базовим класом CFrameWnd), детальніше розглядаються в розділі "Декілька слів про фреймові вікна". Проте, щоб легко зрозуміти деякі теми, викладені у ряді наступних розділів, з фреймовими вікнами має сенс ознайомитися зараз.

Фреймовим вікном (frame window) називають вікно, що містить представлення документа. Представлення (view) несе відповідальність за відображення на екрані вмісту документа, який користувач бачить фактично, а фреймом є батьківський (parent) елемент даного представлення. На справжній момент необхідно зрозуміти, що фрейм — це вікно, яке може володіти різними меню, панелями інструментів, рядком стану і заголовком вікна (а також, але необов'язково, системним меню і кнопками свернуть/развернуть). При зміні розміру вікна додатку SDI користувач фактично перетягує межу фрейма, а батьківському вікну передається відповідне повідомлення. Вікно представлення, оскільки воно є дочерним (child) вікном фрейма, також отримує ці повідомлення і змінює свої розміри відповідно до них.

У додатках SDI, створених майстром AppWizard, фреймові вікна реалізують за допомогою класу CMainFrame. Його початковий код міститься у файлах MainFrm. h і MainFrm. срр.

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