Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Об'єктно орієнтовне програмування1.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.38 Mб
Скачать

12.2. Структура додатка Windows

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

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

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

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

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

Примітка. Такий складний механізм обробки повідомлень передусім пов'язаний з тим, що програма має регулярно повертати керування Windows для планування мультипрограмної обробки.

Усі корисні для користувача дії додатки програмуються у вигляді «реакцій вікна» на одержувані повідомлення.

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

У Windows визначено множину типів повідомлень. Кожне з них кодується унікальним 32-розрядним числом, якому відповідає стандартне ім'я, наприклад: VM_CHAR (посилається активному додатку при натискуванні і відпусканні клавіш на клавіатурі), WMJPAINT (надсилається вікну в разі необхідності його перемальовування), WM_CLOSE (посилається вікну за необхідності його закриття), VM_TIMER (надсилається додатку, коли збігає зазначений інтервал часу).

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

Н априклад, при зміні стану клавіатури (натискуванні чи відпусканні клавіші) драйвер клавіатури ініціює надсилання повідомлення WM_CHAR активному додатку (додатку, вікну якого належить фокус уведення). При цьому через параметри передаються ASCII-код символу, кількість повторень, обумовлена при утриманні клавіші в натисненому положенні, scan-код. Як додаткова інформація повідомляється, чи було клавішу натиснено чи відпущено, чи було клавішу натиснено до формування повідомлення, чи натиснено одночасно клавішу Alt і т. ін.

Додаток, одержавши повідомлення, що супроводжується настільки докладною інформацією, може вибрати ті дані, які йому необхідні і, наприклад, вивести цей символ у вікно додатка (рис. 12.5).

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

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

Однак не всі повідомлення потрапляють у функцію вікна додатка через чергу повідомлень. Додаток Windows одночасно маніпулює повідомленнями трьох типів:

зовнішніми (від Windows та інших додатків) і внутрішніми (від самого додатка) повідомленнями, що надходять через чергу повідомлень;

прямими викликами віконних функцій (такий виклик також оперує інформацією, форматованою під повідомлення);

Список літератури:

1. Симкин С. и др. Программирование на Java. Путеводитель / Пер. с англ. — К.: НИПФ «ДиаСофт Лтд», 1996. — 736 с.

2. Хабибуллин И. Ш. Самоучитель Java. — СПб.: БХВ-Петербург, 2001. — 464 с.

3. Экель Б. Философия Java. Библиотека программиста. — СПб.: Питер, 2001. — 880 с.

4. Морган. М. Java 2. Руководство разработчика: Учеб. пособие / Пер. с англ.: Издательск. дом «Вильямс», 2000. — 720 с.

5. Иванова Г. С. Обьектно-ориентированное программирование: Учебник для вузов / Г. С. Иванова и др. — М: Изд-во МГТУ им. Н. 3. Баумана, 2001. — 317 с.

6. Хабибуллин И. Ш. Самоучитель Java. — СПб.: БХВ-Петербург, 2001. —464 с.

52