Створення консольного додатку

Найбільш простий із створюваних в Windows додатків – це консольний додаток (рис. 1.2).

Для створення такого додатку в майстрі створення додатків необхідно виконати наступні дії:

- у вкладці Visual C++ вибрати пункт Win32 Console Application;

- в рядку Location вибрати або ввести вручну шлях до своєї робочої теки;

- в рядку Name ввести ім'я поточного проекту;

- натиснути кнопку [OK];

Після цього з'явиться вікно вибору виду додатку (рис. 1.7).

 

Рисунок 1.7 – Вікно вибору виду консольного додатку

Оберемо тип «Console Application», та відмітимо пункт MFC. Після вибору виду додатку необхідно натиснути кнопку [Finish]. Відкриється основна сторінка коду програми.

Додамо вивід на екран повідомлення. У функції _tmainпісля рядку // TODO: code your application's behavior here додайте такі рядки:

 

_tprintf(_T("Hello world!\n"));

nRetCode = 0;

 

Проект створений. Тепер необхідно компілювати і компонувати додаток. Для цього треба вибрати пункт меню Build > Build "Ім`я Програми" або Build > Build Solution або натиснути клавішу [F7].

Після компіляції і компоновки необхідно запустити додаток натисненням комбінації клавіш [Ctrl+F5].

1.2.3 Створення простого діалогового додатку

Тепер створіть найпростіший віконний діалоговий додаток. Для цього в майстрі створення додатків треба вибрати тип проекту Visual C++ > MFC > MFC Application. В наступному вікні на вкладці Application Type (рис 1.8) вибрати пункт Dialog based.

 

Рисунок 1.8 – Вікно вибору виду віконного MFC додатку

Внизу знаходиться випадаючий список вибору мови, що підтримується ресурсами додатку. Рекомендується залишити за замовчанням Англійський (США).

Натискуємо на кнопку [Next >] і переходимо до вікна настройок додатку (рис 1.9). В цьому вікні доступна настройка елементів відображення майбутнього вікна.

 

Рисунок 1.9 – Вікно настройок додатку

Це вікно включає наступні пункти:

- Thick Frame – стиль рамки вікна;

- Minimize box – до заголовку вікна буде додана кнопка згортання;

- Maximize box – до заголовку вікна буде додана кнопка розгортання;

- Minimized – додаток буде запускатись згорнутим;

- Maximized – додаток буде запускатись у розгорнутому вигляді;

- System menu – до інтерфейсу буде додано системне меню;

- About box – включення в системне меню пункту About.

В полі введення можна ввести альтернативну назву заголовка додатку.

Після натиснення на кнопку [Next >] з'являється наступне вікно вибору стилю додаткових характеристик (рис. 1.10) наприклад:

- Context-sensitive Help – підготовка необхідних для включення довідки компонентів;

- Automation – можливість передачі управління іншому додатку через механізм ActiveX;

- ActiveX Controls – використовування в додатку елементів управління ActiveX;

- Windows Sockets – можливість доступу до Internet через Windows Sockets.

 

Рисунок 1.10 – Вікно вибору стилю проекту і наявності в тексті програми коментарів

Для діалогового додатку доступний тільки один стиль проекту – MFC Standart. Якщо вибрати генерацію коментарів, то після завершення створення проекту AppWizard автоматично створить необхідні пояснення до кожної функції в тексті програми.

Після натиснення на кнопку [Next >] з'являється останнє вікно (рис. 1.11), в якому відображаються створювані класи і дається можливість зміни їх назв.

 

Рисунок 1.11 – Вікно роботи із створеними класами

Тепер натискуємо кнопку [Finish] – з'являється вікно інформації про створений проект, натискуємо [OK] – проект створений.

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

Можна самостійно спробувати додати декілька різних елементів управління або змінити вже існуючі, натиснувши на них правою кнопкою миші і вибравши меню «Properties», відкомпілювати і запустити програму.

1.2.4 Створення додатку з єдиним документом

Для створення додатку з єдиним документом після запуску майстра створення додатків і вибору в ньому MFC AppWizard (exe) проекту, у вікні вибору виду додатку (рис. 1.10) необхідно вибрати пункт Single document і натискувати [Next >].

В наступному вікні (рис. 1.12) проводиться вибір рівня підтримки операцій з складовими документами:

- None – без підтримки складових документів;

- Container – підтримка зв'язаних або упроваджених об'єктів ActiveX;

- Mini-server – підтримка упровадження документів в інші додатки;

- Full-server – можливість автономної роботи з документами;

- Сontainer/ Full server – можливість як самостійної обробки, так і включення документів інших додатків.

 

Рисунок 1.12 – Підтримка операцій з складовими документами

Підтримка складових файлів – compound files – увімкнена за замовчанням.

Після цього з'явиться вікно, в якому можна здійснити вибір рівня підтримки додатком баз даних (рис. 1.12).

 

Рисунок 1.13 – Вибір підтримки баз даних

В цьому вікні існують наступні перемикачі:

- None – робота з базами даних в додатку не планується;

- Header files only – доступ до баз даних без використовування класів перегляду;

- Database view without file support – можливість розробки класів проглядання баз даних без підтримки засобів збереження-відновлення документів;

- Database view with file support – можливість розробки класів проглядання баз даних з підтримкою засобів збереження-відновлення документів.

В наступному вікні (рис. 1.14) пропонується вибрати зовнішній вигляд додатку і інші опції:

- Thick frame – потовщені рамки вікна, можливість зміни розмірів вікна;

- Minimize box – присутність кнопки мінімізації;

- Maximize box – присутність кнопки максимізації;

- System menu – присутність піктограми виклику системного меню;

- Minimized – при запуску додатку вікно буде згортатися в піктограму;

- Maximized – при запуску додатку вікно розгортається на весь екран.

- System menu – до інтерфейсу буде додано системне меню

- About box – включення в системне меню пункту About;

- Initial status bar – створення рядка стану;

Прапорець Use split window передбачає включення в початковий код додатку всіх необхідних компонентів, призначених для організації розділення вікна додатку на області (наприклад, як в редакторі Visual Studio).

Toolbar > standart docking – установка в додатку панелі інструментів, яка може бути зафіксована до однієї з меж вікна;

Рисунок 1.14 – Зовнішній вигляд додатку і інші опції

Після натиснення на кнопку [Next>] відкриється вікно задання додаткових параметрів програми (рис. 1.15):

- Context-sensitive Help – включення контекстної довідки;

- Printing and print preview – можливість роздруку і попереднього перегляду документів;

- Automation встановлюється в тому випадку, якщо є необхідність передачі управління іншому додатку через механізм автоматизації ActiveX;

- ActiveX Controls встановлюється, якщо планується використовування в додатку елементів управління ActiveX;

- MAPI (Messaging API) – можливість додатку обмінюватися повідомленнями по електронній пошті і відправляти факси;

- Windows Sockets – можливість доступу до Internet через Windows Sockets.

Також можна встановити довжину списку останніх файлів, що відкриваються, в полі меню File створюваного додатку. За замовчанням – довжина списку рівна 4.

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

1.4.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 обробляється класом документа, оскільки цей клас відповідає за зберігання і запис даних документа.

2.1.2 Карти повідомлень

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

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

2.1.3 Макроси карт повідомлень

- DECLARE_MESSAGE_MAP – використовується у файлі заголовка для оголошення карти повідомлень;

- BEGIN_MESSAGE_MAP – початок карти повідомлень в тексті програми;

- END_MESSAGE_MAP – кінець карти повідомлень в тексті програми;

- ON_COMMAND – перенаправлення обробки деякої команди функції-члену класу;

- ON_CONTROL – перенаправлення обробки коду сповіщення від елемента управління, введеного програмістом, функції-члену класу;

- ON_MESSAGE – перенаправлення обробки деякого повідомлення, введеного програмістом, функції-члену класу;

- ON_NOTIFY – перенаправлення функції-члену класу обробки заданого коду сповіщення, який супроводиться додатковими даними від елемента управління.

2.2 Хід виконання роботи