Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГЗ_алгоритмзация_та_програмування_Неласа.doc
Скачиваний:
8
Добавлен:
12.11.2019
Размер:
1.5 Mб
Скачать

1.2.5 Створення додатку з декількома документами

Створення такого додатку в цілому мало чим відрізняється від створення додатку з єдиним документом. Основна відмінність тут виникає на етапі установки додаткових опцій дизайну вікна додатку. На вкладці Window Styles стає доступним поле MDI child frame styles , в якому встановлюються опції дочірніх вікон документів. Прапорці тут означають абсолютно ті ж опції, що і для основного вікна додатку.

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

Рисунок 1.15 – Додаткові рядкові параметри документів

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

  1. Створити консольний додаток. Змінити текст, що виводиться на екран.

  2. Створити діалоговий додаток, змінити стиль вікна. Розмістити активні елементи: кнопки, поля вводу, перемикачі.

  3. Створити додаток з єдиним документом, змінити стиль вікна, спробувати додати системне меню.

  4. Створити додаток з декількома документами, змінити стиль вікна.

1.4 Контрольні питання

    1. Які типи додатків можна створювати в системі Visual C++?

    2. Які фунції виконує Solution Explorer?

    3. Як додати новий файл до проекту?

    4. Як додати існуючий файл до проекту?

    5. Назвіть основні компоненти проекту та типи файлів, які їм відповідають.

    6. Поясніть значення параметрів, що обираються при створенні кожного з типів додатків.

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

Завдання №2 обробка повідомлень

Мета роботи: розібратися з механізмом обробки повідомлень Windows. Навчитися створювати і відлагоджувати прості програми з оброблюванням повідомлень.

2.1 Теоретичні відомості

2.1.1 Загальні відомості про обробку повідомлень

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

Процедура вікна за допомогою бібліотеки MFC створюється автоматично.

Процедури вікон виконують мінімальну стандартну обробку переданного повідомлення. Якщо необхідна власна обробка повідомлення, то створюється функція обробки повідомлення, що є членом класу управління вікном. Для визначення обробника повідомлення можна скористатися ClassWizard.

Наприклад, якщо покажчик знаходиться усередині вікна уявлення, то при натисненні лівої кнопки миші передається ідентифікатор wm_lbuttondown. Щоб передбачити власну обробку цього повідомлення, використовуйте майстер ClassWizard для створення функції класу уявлення.

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

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

Якщо ж об'єкт документа не містить обробник, бібліотека MFC направляє повідомлення об'єкту головного вікна програми. Якщо головне вікно також не має обробника, повідомлення прямує об'єкту додатку. Нарешті, якщо об'єкт додатку не забезпечує обробку, те повідомлення обробляється стандартним чином.

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

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

Наприклад, в програмі, створеній майстром AppWizard, команда Exit в меню File обробляється класом додатку, оскільки ця команда впливає на додаток в цілому. З другого боку, команда Save в меню File обробляється класом документа, оскільки цей клас відповідає за зберігання і запис даних документа.