Слайд 1ЛЕКЦІЯ 6
Система повідомлень ОС Windows
Операційні системи
доц. Сінельнікова Т.Ф.
Слайд 2СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
Обробка повідомлень
лежить в основі роботи ОС сімейства Windows, а також додатків,
що працюють під їх управлінням. Система і додатки виробляють повідомлення у відповідь на кожну подію, що відбувається в Windows. Повідомлення дозволяють Windows виконувати кілька додатків одночасно. У системах Windows 95 і в ОС сімейства Windows NT кожен потік або процес отримує свою власну чергу повідомлень, що дозволяє їм працювати незалежно. У більш ранніх версіях Windows всі програми поділяли одну чергу повідомлень. У цих версіях Windows-додаток повинен був повертати управління Windows якомога швидше, щоб дати можливість іншим програмам обробляти повідомлення.
Слайд 3СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
Основою механізму
повідомлень ОС Windows є потік повідомлень. Windows виробляє повідомлення у
відповідь на кожну апаратну подію, таке як натискання користувачем клавіші на клавіатурі або переміщення миші. Система передає ці повідомлення у відповідну чергу повідомлень потоку. Кожен потік в системі обробляє повідомлення у власній черзі повідомлень. Якщо повідомлення призначене для конкретного потоку, воно поміщається в чергу повідомлень цього потоку. Деякі повідомлення відносяться до всієї системи або призначені для декількох потоків. Ці повідомлення поміщаються в чергу відповідних потоків. Повідомлення це структура даних, яка визначена наступним чином:
Слайд 4СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
typedef struct
tagMSG {
HWND hwnd; /* дескриптор окна */
UINT message; /* идентификатор
сообщения */
WPARAM wParam; /* значение wParam */
LPARAM IParam; /* значение IParam */
DWORD time; /* число миллисекунд с момента запуска */
POINT pt; /* положение курсора мыши в экранных координатах */
} MSG;
Дані повідомлення містять дескриптор вікна (hwnd), закодований тип повідомлення (message), дані wParam і lParam, які будуть передані функції головного вікна програми, позначку часу відправлення повідомлення time (в мілісекундах після запуску Windows) і структуру POINT (pt), що містить координати х і у курсора миші під час відправки повідомлення.
Слайд 5СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
На малюнку
показана спрощена схема для одного потоку повідомлень і для одного
повідомлення, що проходить через процедуру обробки повідомлення даного потоку. Для інших потоків цей процес відбувається аналогічно.
Слайд 6СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
Повідомлення з'являються
не тільки при виникненні апаратних подій (натискання на клавіатурі клавіши
або рух миші). Часто повідомлення використовуються для управління програмою або відправлення будь-якої інформації іншим програмам. Потоки можуть обмінюватися даними, відправляючи одне одному повідомлення. Повідомлення можуть поміщатися в чергу з використанням функції PostMessage (це називається виставленням повідомлення) або за допомогою функції SendMessage відправлятися прямо в чергу повідомлення для негайної обробки.
Слайд 7СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
Також можна
здійснювати відправлення повідомлень між програмами. В ОС Windows передбачена функція
RegisterWindowMessage, що дозволяє динамічно виробляти унікальні ідентифікатори повідомлень. Ці ідентифікатори отримують такі послідовні номери, щоб вони не збігалися з номерами повідомлень, що застосовані в програмах з іншого набору програм. Стандартний спосіб обміну даними між програмами полягає у використанні динамічного обміну даними (DDE - dynamic data exchange). DDE - це ряд повідомлень, які визначені для використання в якості стандарту зв'язку.
Слайд 8ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ
Операційні системи. Кафедра Інформатики. E-mail:
informatika@kture.kharkov.ua
Слайд 9ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ
Операційні системи. Кафедра Інформатики. E-mail:
informatika@kture.kharkov.ua
Слайд 10ПРИКЛАД ПРОГРАМИ
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
Приклад, який демонструє застосування
функцій SendMessage, GetMessage, TranslateMessage, DispatchMessage, розглянемо програму MsgDemo, яка здійснює
відправку повідомлень з головного вікна програми іншого вікна, і ці повідомлення управляють другим вікном. Друге вікно отримує ці повідомлення, обробляє їх і виконує дії, які повинні виконуватися при отриманні відповідних повідомлень.
Слайд 11ПРИКЛАД ПРОГРАМИ
Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua
На головному вікні програми
розташовані кнопки Close, Maximize, Minimize, Send Custom Message. Натискання на
кнопки Close, Maximize, Minimize ініціює відправку повідомлення в інше вікно, яке їх обробляє і здійснює відповідну дію - закривається, максимізується, мінімізується. Кнопка Send Custom Message дозволяє відправити довільне повідомлення, яке набирається в рядку під кнопками замість напису "My message text". Також текст цього повідомлення відображається і нижче для показу, що повідомлення надіслано. Друге вікно при отриманні такого повідомлення відображає його текст разом з іншими повідомленнями, які йому надійшли.
Вихідний код програми приведений в навчальному посібнику.