Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції_ІЗВП_укр.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.39 Mб
Скачать

5. Архітектура додатка

У всіх Windows-додатків фіксована структура, визначувана функцією WinMain. Структура додатка, побудованого з об'єктів класів бібліотеки MFC, є ще більш визначеною.

Додаток складається з об'єкта theApp, функції WinMain, і деякої кількості інших об'єктів. Серцевина додатки - об'єкт theApp - відповідає за створення всіх інших об'єктів і обробку черги повідомлень. Об'єкт theApp є глобальним і створюється ще до початку роботи функції WinMain. Робота функції WinMain полягає в послідовному виклику двох методів об'єкта theApp: InitInstance і Run. У термінах повідомлень можна сказати, WinMain посилає об'єкту theApp повідомлення InitInstance, яке приводить в дію метод InitInstance.

Отримавши повідомлення InitInstance, theApp створює внутрішні об'єкти додатка. Процес створення виглядає як послідовне породження одних об'єктів іншими. Набір об'єктів, породжуваних на початку цього ланцюжка, визначений структурою MFC практично однозначно - це головна рамка, шаблон, документ, зовнішність.

Наступне повідомлення, що отримується theApp, - Run - приводить в дію метод Run. Воно як би говорить об'єкту: "Починай роботу, починай процес обробки повідомлень з зовнішнього світу". Об'єкт theApp циклічно вибирає повідомлення з черги і ініціює обробку повідомлень об'єктами докладання.

Деякі об'єкти мають графічний образ на екрані, з яким може взаємодіяти користувач. Ці інтерфейсні об'єкти зазвичай пов'язані з Windows-вікном. Серед них особливо важливі головна рамка і зовнішність. Саме їм об'єкт насамперед розподіляє повідомлення з черги через механізм Windows-вікон і функцію Dispatch.

Коли користувач вибирає команду меню вікна головної рамки, то виникають командні повідомлення. Вони відправляються спочатку об'єктом theApp об'єкту головна рамка, а потім обходять по спеціальному маршруту цілий ряд об'єктів, серед яких першими є документ і подобу, інформуючи їх про що прийшла від користувача команді.

При роботі додатка виникають і звичайні дзвінки одними об'єктами методів інших об'єктів. В об'єктно-орієнтованої термінології такі виклики можуть називатися повідомленнями. В Visual C + + деяким методам приписаний саме цей статус (наприклад, методом OnDraw).

Важливе значення мають також об'єкти документ, зовнішність і головна рамка. Тут відзначимо лише, що документ містить дані додатки, вигляд організовує подання цих даних на екрані, а вікно головної рамки - це вікно, всередині якого розміщені всі інші вікна додатка.

6. Типи майстрів проектів (самостійно)

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

Розглянемо деякі типи проектів, які можна створювати за допомогою різних засобів (майстрів проектів) Microsoft Visual C + +:

MFC AppWizard (exe) - за допомогою майстра додатків можна створити проект Windows-додатка яке має однодокументних, багатодокументний або діалоговий інтерфейс. Однодокументний додаток може надавати користувачеві в будь-який момент часу працювати тільки з одним файлом. Багатодокументний додаток, навпаки, може одночасно представляти декілька документів, кожний у власному вікні. Інтерфейс користувача діалогового додатка являє собою єдине діалогове вікно.

MFC AppWizard (dll) - цей майстер додатків дозволяє створити структуру DLL, засновану на MFC. За допомогою нього можна визначити характеристики майбутньої DLL.

AppWizard ATL COM - це засіб дозволяє створити елемент керування ActiveX або сервер автоматизації, використовуючи нову бібліотеку шаблонів ActiveX (ActiveX Template Library - ATL). Опції цього майстра дають можливість вибрати активний сервер (DLL) або виконуваний зовнішній сервер (exe-файл).

Custom AppWizard - за допомогою цього засобу можна створити користувальницькі майстра AppWizard. Користувальницький майстер може базуватися на стандартних майстрах для додатків MFC або DLL, а також на існуючих проектах або містити тільки визначені розробником кроки.

DevStudio Add-in Wizard - майстер доповнень дозволяє створювати додатки до Visual Studio. Бібліотека DLL розширень може підтримувати панелі інструментів і реагувати на події Visual Studio.

MFC ActiveX ControlWizard - майстер елементів управління реалізує процес створення проекту, що містить один чи декілька елементів управління ActiveX, заснованих на елементах керування MFC.

Win32 Application - цей майстер дозволяє створити проект звичайного Window-додатки. Проект створюється незаповненим, файли з вихідним кодом в нього слід додавати вручну.

Win32 Console Application - майстер створення проекту консольного застосування. Консольна додаток - це програма, яка виконується з командного Рядок вікна DOS або Windows і не має графічного інтерфейсу (вікон). Проект консольного застосування створюється порожнім, припускаючи додавання файлів вихідного тексту в нього вручну.

Win32 Dynamic-Link Library - створення порожнього проекту динамічно підключається бібліотеки. Установки компілятора і компонувальника будуть налаштовані на створення DLL. Вихідні файли слід додавати вручну.

Win32 Static Library - це засіб створює порожній проект, призначений для генерації статичної (об'єктної) бібліотеки. Файли з вихідним кодом в нього слід додавати вручну.

Переваги майстрів проектів

Розглянемо переваги використання майстрів у процесі створення додатків. Перш за все, потрібно відзначити, що створення проекту - це не тільки творчість, а й великий обсяг технічної роботи, що вимагає уваги й акуратності.

Наприклад, всі Windows-програми мають досить загальну структуру, і, отже, можна побудувати деякі шаблонні заготовки, що підходять для того чи іншого типу проектів. Побудови таких заготовок сприяє те, що додатки, створювані на основі MFC, будуються з елементів фіксованих класів. Логічним розвитком цієї ідеї було введення спеціальних класів і спеціальної архітектури побудови програми, яка підходила б широкого класу застосувань. Про таку архітектурі вже згадувалося, коли йшлося про бібліотеку MFC, - це архітектура Document-View. Вона є основною, але не єдиною при побудові проектів в середовищі Visual C + +.

Суть цієї архітектури в тому, що роботу багатьох додатків можна розглядати як обробку документів. При цьому можна відокремити сам документ, який відповідає за подання і зберігання даних, від образу цього документа, видимого на екрані і допускає взаємодія з користувачем, який переглядає і (або) редагує документ. Відповідно до цієї архітектурою бібліотека MFC містить два сімейства класів, похідних від базових класів CDocument і CView.

У результаті з'явилася двоетапна технологія створення проектів. Спочатку створюється якась заготовка проекту із загальними властивостями, придатними для багатьох проектів цього типу. На другому етапі проводиться вже настройка, враховує специфіку задачі. Для кожного етапу фірма Microsoft розробила свій інструментальний засіб.

Початкова заготовка - остов додатки - створюється в діалозі з користувачем інструментальним засобом AppWizard. В процесі діалогу користувач визначає тип і характеристики проекту, який він хоче побудувати. Визначивши, які класи з MFC необхідні для цього проекту, AppWizard будує остови всіх потрібних похідних класів. Побудований AppWizard остов додатка містить всі необхідні файли для створення стартового додатка, який є закінченим додатком і володіє розумними функціональними властивостями, спільними для цілого класу додатків. Природно, ніяких специфічних для даного застосування властивостей остов не містить. Вони з'являться на наступному етапі, коли програміст почне працювати з остовом, створюючи з заготівлі своє власне застосування. Тим не менш стартове додаток можна транслювати і запускати на виконання.

Термін остов (додатки, класу, функції) застосовується для заготовок, створюваних інструментальними засобами AppWizard і ClassWizard. Потрібно підкреслити - остов додатки і каркас додатка - різні поняття.

Створюваний остов додатка складений так, що в подальшій роботі з проектом можна використовувати інше інструментальне засіб - ClassWizard (майстер-класів).