Курсовая работа: Програмування в Delphi

Рис. 1. Загальна структура програми в Windows

Багатовіконність

Кожній програмі в Windows зіставляється вікно — деяка область на екрані, в якій можна виводити інформацію. Вікно може займати весь екран, чи тільки його частину, воно може перебувати за межами екрана, бути згорнуте (сховане) за бажанням користувача чи перекрито вікнами інших додатків.

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

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

Крім зручного представлення інформації для користувача, вікно має другу важливу функцію з погляду програми - в будь-який момент часу одне з вікон «знаходиться в фокусі» (є «активним») і потоки інформації, що вводяться, направляються операційною системою в програму, якій належить це вікно. Механізм такого перенапрямку потоків введення заснований на подіях. Розглянемо докладніше структуру програми в Windows.

Програма, керована подіями

Windows стежить за змінами в стані системи (натискання клавіш, переміщення миші і натискання її кнопок, і т.д.) і генерує спеціальні структури даних, що містять наступну інформацію:

1. Посилання на вікно, що знаходилося в фокусі, коли відбулася подія.

2. Ідентифікатор події Message(значення типу Word).

3. Додаткова інформація для даної події (два значення - одне типу Word, друге типу Longlnt), наприклад, код натиснутої клавіші для повідомлення про натискання клавіші, чи координати миші для повідомлення про переміщення миші.

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

FunctionWindowProc(Window: HWnd; Message, WParam: Word: LParan: Longint): Longint; export;

Життєвий цикл повідомлення представлений на рис. 2.

Викликана віконна функція повинна проаналізувати подію по її ідентифікатору Message, використовуючи додаткові параметри WParam і LParam, виконати дії, обумовлені логікою програми, і повернути як результат функції код завершення обробки.

Рис. 2. Повідомлення в Windows

Якщо додаток не може проаналізувати код події (обробка такої події не передбачена у віконній функції), то повинний бути викликаний оброблювач за замовчуванням. Таким чином, велику частину віконної функції звичайно займає оператор множинного вибору Case, що на підставі інформації про повідомлення виконує необхідні дії. У секції Else такого оператора викликається оброблювач за замовчуванням (див. рис. 3).

Рис. 3. Обробка повідомлення у віконній функції

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

Розглянемо основні етапи роботи програми в ОС Windows:

1. Створення і реєстрація класу вікна, передача операційній системі посилання на віконну функцію.

2. Створення вікна на основі класу.

3. Організація попереднього аналізу черги повідомлень, робота віконної функції, визваної ядром Windows.

4. Знищення вікна, дерегістрація класу вікна.

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

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

К-во Просмотров: 630
Бесплатно скачать Курсовая работа: Програмування в Delphi