Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова_робота_СП.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

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|); }

Формальними параметрами цієї функції є|з'являються| покажчики на функцію вікна і рядок з|із| ім'ям класу. Ім'я, список формальних пара­метрів| і тип повернення функції можуть бути будь-якими іншими. Головне, щоб|аби| додатку|застосуванню| після|потім| реєстрації були доступні ім'я зареєстрованого| класу, а операційній системі - функція вікна цього класу.