- •Національний університет «Львівська політехніка» іепт ім. В’ячеслава Чорновола
- •Курсовий проект
- •1. Формулювання задачі
- •2. Методи та засоби розв’язання задачі
- •2.1 Клас вікон
- •2.2 Створення|створіння| вікон
- •2.3 Головна|чільна| функція додатка |застосування|
- •2.4 Полоса прокрутки
- •2.5 Створення|створіння| смуги прокрутки
- •2.6 Повідомлення|сполучення| від смуги прокрутки
- •2.7 Керування смугою прокрутки
- •2.8 Створення|створіння| списку
- •2.10 Функції виведення тексту
- •2.11 Меню
- •2.12 Створення|створіння| меню
- •2.13 Вставка елементів в меню
- •2.14 Видалення|віддалення| елементів з|із| меню
- •2.15 Акселератори
- •3. Алгоритм розв'язування задачі
- •4.1 Призначення програми
- •Мови програмування, на яких написана програма
- •Програмні засоби, необхідні для реалізації програми
- •Технічні засоби, необхідні для реалізації програми
- •5. Інструкція користувачеві
- •5.1 Головне вікно програми
- •Контрольний приклад та аналіз результатів комп'ютерної реалізації програми
- •Список використаної література
- •Додатки Додаток 1. Код TextEdit.Cpp
- •Додаток 2. Код MainFrm.Cpp
- •Додаток 3. Код MainFrm.H
- •Додаток 4. Код TextEdit.H
- •Додаток 5 Код TextEdit.Rc
1. Формулювання задачі
Проектування системи редагування текстової інформації:
1) програма повинна бути реалізована на мові С/С++, Assembler;
2) програма повинна працювати під керуванням операційної системи
Windows;
3) програма повинна мати інтерфейс у вигляді вікон та меню для вибору
режимів роботи програми;
4) керування режимами роботи програми виконати за допомогою
клавіатури та миші.
2. Методи та засоби розв’язання задачі
Програми для Windows| називають додатками|застосуваннями|. Користувач з|із| додатком|застосуванням| взаємодіє через вікна наступних|слідуючих| видів:
Вікно додатка|застосування|. Воно організовує роботу, з'являється|появляється| першим при| запуску і закривається|зачиняє| разом з припиненням роботи додатка|застосування|.
MDI-вікна|. Вони служать для одночасної обробки декількох документів|.
Вікно допомоги. Воно більшою мірою працює під управлінням операційної| системи, чим під управлінням додатка|застосування|.
Діалогове вікно. Воно забезпечує оперативний обмін даними між| користувачем і додатком|застосуванням|.
Для розробника вікно є|з'являється| сукупністю великої кількості| елементів, що функціонують під управлінням додатка|застосування| і операційної| системи.
З погляду мови|язика| програмування, вікна - це об'єкти | над якими виконують дії. Об'єкт належить опреділеному | класу (типові|типу|), який описує безліч даних (параметрів стану|достатку| вікна) і метод (функцію) зміни цих даних.
Головне|чільне| вікно має подвійні рамки, що обрамували|обрамляли|, заголовок|, різні кнопки, смугу меню, панель інструментів з|із| кнопками, смуги перегляду|проглядати|, рядок стану|достатку| і ін. Ці елементи також є|з'являються| вікнами, мають свої дані і метод їх зміни, тобто належать до класів вікон.
2.1 Клас вікон
Для створення|створіння| вікна операційній системі| вказують|вказують|, до якого класу| воно належить. Якщо до моменту створення|створіння| вікна операційною системою| відомий клас створюваного вікна| (наприклад, це визначений в системі або зареєстрований поточним або іншим застосуванням клас), то можна скористатися ім'ям цього класу. Інакше потрібно створити новий клас (описати функцію вікна і набір використовуваних ресурсів|) і зареєструвати його.
Опис використовуваних класом вікон pесурсів: |
Набір використовуваних ресурсів класу задають в структурі типа|типу| WNDCLASS|. Ця структура описана таким чином: typedef| struct|
{ UINT| style|;
WNDPROC| lpfnWndProc|;
int| cbClsExtra|;
int| cbWndExtra|;
HANDLE| hlnstance|;
HICON| hlcon|;
HCURSOR| hCursor|;
HBRUSH| hbrBackground|;
LPCTSTR| lpszMenuName|;
LPCTSTR| lpszClassName|; } WNDCLASS|;
Наприклад, якщо описана структура цього типа|типу|: WNDCLASS| wc|;
то привласнюють певні значення її полям. Призначення полів цієї структури:
style| набуває значень. |Наприклад:
wc.style = CS_HREDRAW| | CS_VREDRAW| | CS_DBLCLKS|;
- lpfnWndProc| вказує|вказує| на функцію вікна. Вона розглядається|розглядатиме| нижче.
- cbClsExtra| дорівнює кількості додаткових байт класу.
- cbWndExtra| дорівнює кількості додаткових байт вікна цього класу.
- hInstance| вказує|вказує| на дескриптор поточного застосування.
- hIcon| вказує|вказує| на ймення піктограма (ікони), в яку перетворюється| вікно при мінімізації. Ресурс ікони завантажують функцією LoadIcon|:
HICON| Loadlcon|( HINSTANCE| hlnst|, LPCTSTR| lplconName|);
Параметр lplconName| вказує|вказує| на рядок з|із| ім'ям завантажуваної ікони, а hInst| - дескриптор додатка|застосування|, чий виконуваний код містить| завантажуваний ресурс. Для завантаження|загрузки| стандартної ікони hInst| прирівнюють| NULL|, а як lplconName| задають одне із значень. Наприклад, наступний|слідуючий| оператор встановлює стандартну піктограму вікна додатка|застосування|: wc|.hlcon = Loadlcon|( NULL|, IDI_APPLICAT|!ON );
В разі|у разі| аварійного завершення функція повертає NULL| і при згортанні вікон цього класу операційна система як іконки| використовує логотип Windows|.
- hCursor| задає вид курсора миші при його проходженні над вікном. Ресурс курсора завантажують функцією LoadCursor|:
HCURSOR| LoadCursor|( HINSTANCE| hInst|, LPCTSTR| lpCursorName|);
Параметр lpCursorName| вказує|вказує| на рядок з|із| ім'ям завантажуваного ресурсу, а hInst| - дескриптор додатка|застосування|, чий виконуваний код містить| завантажуваний ресурс. Для завантаження|загрузки| стандартного курсора hInst| прирівнюють| NULL|, а як lpCursorName| задають одне із значень. Наприклад, наступного|слідуючого| оператора задає курсор у вигляді стандартной| стрілки:
wc|.hCursor = LoadCursor|(NULL|, IDC_ARROW|);
В разі|у разі| аварійного завершення функція повертає NULL| і вікно запозичуватиме курсор передування по руху миші вікна.
Функції LoadIcon| і LoadCursor| завантажують ресурс іконки або курсора|, тільки|лише| якщо ресурс не був завантажений; інакше вибирають дескриптор загруженного| ресурсу.
- hbrBackground| задає дескриптор грона зафарбування|зафарбовувати| фону вікна. В якості кисті|пензля| можна використовувати "чисті" кольори|цвіт| або піктограму|. Частіше використовують значення системного кольору|цвіту|. Кольори|цвіт| перетворять в типа|тип| HBRUSH|. Наприклад, слідуючий оператор| встановлює системний колір|цвіт| зафарбування |зафарбовувати| фону:
wc|.hbrBackground = (HBRUSH|)( COLOR_WINDOW+1|);
Система сама видаляє|віддаляє| гроно фону при звільненні|визволенні| класу. Якщо вказати NULL|, то додаток|застосування| само повинен фарбувати фон вікон. Для оприділення| необхідності зафарбування|зафарбовувати| додаток|застосування| обробляє повідомлення| WM_ERASEBKGND| або перевіряє поле fErase| структури PAINTSTRUCT|, заповненою функцією BeginPaint|.
- lpszMenuName| вказує|вказує| на ресурс головного|чільного| меню вікон цього класа|. Якщо задати NULL|, вікна цього класу не мають заданого по умовчанню| меню. Наприклад:
wc|.lpszMenuName = (LPCTSTR|)NULL|;
- 1pszClassName| вказує|вказує| на текстовий рядок, що містить|утримує| ім'я реєстрованого| класу вікон, наприклад: wc|.lpszClassName = szName|;
Для реєстрації класу вікон зручно використовувати функцію слідуючого | вигляду|виду|:
int| RegClass|( WNDPROC| Proc|, LPCTSTR| szName|){ WNDCLASS| wc|;
wc|.style = CS_HREDRAW| | CS_VREDRAW|;
wc|.cbClsExtra = wc|.cbWndExtra = 0;
wc|.lpfnWndProc = Proc|; wc|.hlnstance = hlnstance|;
wc|.hlcon = Loadlcon|(NULL|, IDI_APPLICATION|);
wc|.hCursor = LoadCursor|(NULL|, IDC_ARROW|);
wc|.hbrBackground = (HBRUSH|)(COLOR_WINDOW| + 1);
wc|.lpszMenuName = (LPCTSTR|)NULL|;
wc|.lpszClassName = szName|;
return| RegisterClass|(&wc|); }
Формальними параметрами цієї функції є|з'являються| покажчики на функцію вікна і рядок з|із| ім'ям класу. Ім'я, список формальних параметрів| і тип повернення функції можуть бути будь-якими іншими. Головне, щоб|аби| додатку|застосуванню| після|потім| реєстрації були доступні ім'я зареєстрованого| класу, а операційній системі - функція вікна цього класу.
