Механизъм на съобщенията

Windows е управлявана от събития операционна система. Почти всички големи и второстепенни събития в средата на Windows са под формата на съобщения и се обработват от OC и приложенията.

Формат на съобщението

Самото съобщение е структура от данни, описана във файла WinUser.h:

typedef struct tagMSG

HWNDhwnd; //ID на получателя

UINT съобщение; //уникален за Windows код на съобщение

WPARAM wParam; //съдържанието зависи от конкретното съобщение

LPARAM lParam; //съдържанието зависи от конкретното съобщение

DWORD време;// време за изпращане на съобщение

ТОЧКА pt; //позиция на курсора в координатите на екрана, когато съобщението е изпратено.

Обработка на съобщения

Всички събития, възникващи в системата, са под формата на съобщения. Например, когато натиснете и след това отпуснете клавиш, се генерира прекъсване и се обработва от драйвера. Той извиква процедура в модула user.exe, която генерира съобщение, съдържащо информация за събитието. По същия начин се генерират съобщения, когато преместите мишката или когато натиснете бутоните върху тялото на мишката. Можем да кажем, че драйверите на I / O устройства превеждат хардуерните прекъсвания в съобщения.

Имайте предвид, че Windows използваслоеста системасъобщения.

Съобщениятаниско нивосе генерират, когато преместите мишката или натиснете клавиши от тялото на мишката или клавиатурата. Тези съобщения включват информацияза текущите координати на курсора на мишкатаили кодове на натиснати клавиши. Обикновено приложенията рядко анализират съобщения от ниско ниво. Всички тези съобщения се предават на операционната система Windows, която генерира съобщения от по-високопо-високониво въз основа на тях. Когато натиснетебутон в диалогов прозорец на приложение на Windows, приложението получава съобщение, че е натиснатbutton. Не е необходимо постоянно да анализирате координатите на курсора на мишката - Windows сама генерира съответното съобщение на високо ниво за вас.

Къде се изпращат съобщенията, генерирани от драйверите?

На първо място, съобщенията отиват всистемната опашкаот съобщения на Windows, имплементирана в модула user.exe. Опашка от системни съобщенияедно. Оттам съобщенията се разпределят къмопашката със съобщения на приложението. Всяко приложение има своя собствена опашка от съобщения.

Опашката от съобщения на приложението може да се попълва не само от системната опашка. Всяко приложение може да изпрати съобщение до всяко друго съобщение, включително себе си.

Основната задача, която едно приложение трябва да изпълнява, е даобслужва своя собствена опашкаот съобщения. Обикновено приложението проверява своята опашка със съобщения в цикъл. След като намери съобщение, приложението, използвайки специална функция от API на Windows, го разпространява до желаната функция на прозореца, която извършва обработката на съобщението.

съобщенията

Фиг.3 Обработка на съобщения

Тъй като Windows е многозадачна операционна система, тя е разработила механизъм за използване на ресурси като мишка и клавиатура от няколко приложения, работещи паралелно. Тъй като всички съобщения, генерирани от драйверите на мишката и клавиатурата, завършват в една и съща системна опашка за съобщения, трябва да има начин тези съобщения да се разпространяват в различни приложения.

Въпреки че много приложения могат да работят едновременно,само едное активно. Обичайно е да се казва, че това приложение имафокус на въвеждане. Всички съобщения от клавиатурата и мишката отиват в опашката на приложението,има входен фокус.

Можете да преместите фокуса на въвеждане от един прозорец в друг чрез натискане на определени клавиши или с помощта на мишката.

Съобщенията от драйвера на мишката винаги се предават на функцията на прозореца, над който курсорът на мишката е поставен. Ако е необходимо, приложението може да извърши операция за заснемане на мишката. В този случай всички съобщения от мишката ще отиват в опашката на приложението, което е уловило мишката, независимо от позицията на курсора на мишката.