Система повідомлень ОС Windows

Содержание

Слайд 2

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua Обробка

СИСТЕМА ПОВІДОМЛЕНЬ ОС 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

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Основою механізму повідомлень

ОС Windows є потік повідомлень. Windows виробляє повідомлення у відповідь на кожну апаратну подію, таке як натискання користувачем клавіші на клавіатурі або переміщення миші. Система передає ці повідомлення у відповідну чергу повідомлень потоку. Кожен потік в системі обробляє повідомлення у власній черзі повідомлень. Якщо повідомлення призначене для конкретного потоку, воно поміщається в чергу повідомлень цього потоку. Деякі повідомлення відносяться до всієї системи або призначені для декількох потоків. Ці повідомлення поміщаються в чергу відповідних потоків. Повідомлення це структура даних, яка визначена наступним чином:
Слайд 4

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua typedef

СИСТЕМА ПОВІДОМЛЕНЬ ОС 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 На

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

На малюнку показана

спрощена схема для одного потоку повідомлень і для одного повідомлення, що проходить через процедуру обробки повідомлення даного потоку. Для інших потоків цей процес відбувається аналогічно.
Слайд 6

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua Повідомлення

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Повідомлення з'являються не

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

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua Також

СИСТЕМА ПОВІДОМЛЕНЬ ОС WINDOWS

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Також можна здійснювати

відправлення повідомлень між програмами. В ОС Windows передбачена функція RegisterWindowMessage, що дозволяє динамічно виробляти унікальні ідентифікатори повідомлень. Ці ідентифікатори отримують такі послідовні номери, щоб вони не збігалися з номерами повідомлень, що застосовані в програмах з іншого набору програм. Стандартний спосіб обміну даними між програмами полягає у використанні динамічного обміну даними (DDE - dynamic data exchange). DDE - це ряд повідомлень, які визначені для використання в якості стандарту зв'язку.
Слайд 8

ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Слайд 9

ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

ДЕЯКІ ФУНКЦІЇ ДЛЯ РОБОТИ З ПОВІДОМЛЕННЯМИ

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Слайд 10

ПРИКЛАД ПРОГРАМИ Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua Приклад, який демонструє

ПРИКЛАД ПРОГРАМИ

Операційні системи. Кафедра Інформатики. E-mail: informatika@kture.kharkov.ua

Приклад, який демонструє застосування функцій

SendMessage, GetMessage, TranslateMessage, DispatchMessage, розглянемо програму MsgDemo, яка здійснює відправку повідомлень з головного вікна програми іншого вікна, і ці повідомлення управляють другим вікном. Друге вікно отримує ці повідомлення, обробляє їх і виконує дії, які повинні виконуватися при отриманні відповідних повідомлень.