Читайте также:
|
|
Все события, возникающие в среде Windows, приводятся к одному общему виду, называемому сообщением.
Сообщение - это запись определенной структуры, которая содержит исчерпывающую информацию о происшедшем событии.
Структура сообщения в Windows имеет следующий вид:
TMsg = record
hwnd:HWnd;
message: Integer;
wParam:Integer;
lParam:Longint;
time:Longint;
pt:Tpoint;
end;
Поле hwnd содержит 16-разрядный дескриптор окна, в котором возникло сообщение.
В поле message помещается двухбайтный код (тип) сообщения, выделяющий данное сообщение из более чем 120 имеющихся в Windows. Программист также, конечно же, может определять свои собственные сообщения.
Поля wParam и lParam сожержат дополнительную информацию и зависят от типа сообщения. В сообщениях, определяемых пользователем, они могут использоваться для передачи необходимой информации.
В поле time система Windows помещает время в миллисекундах, которое истекло с момента запуска системы до постановки сообщения в очередь.
Поле pl указывает позицию курсора мыши в экранных координатах на момент возникновения события.
Сообщения могут поступать в программу от многочисленных источников:
Столь большое количество возможных сообщений требует наличие стройной системы их обработки.
Схема обработки сообщения.
Схема обработки сообщений достаточна сложна, поэтому рассмотрим ее только на примере работы Windows с клавиатурой и мышью. (см. Рис.2)
Рис.2 Схема обработки сообщений от клавиатуры и мыши.
События, генерируемые клавиатурой, мышью или другим устройством, обрабатываются соответствующим драйвером и помещаются в системную очередь сообщений. Системная очередь в Windows одна, в ней может находится одновременно до тридцати сообщений.
Из системной очереди сообщения распределяются по приложениям. Для каждого приложения Windows организует отдельную очередь сообщений прикладной программы, которая по умолчанию вмещает до восьми сообщений.
В процессе распределения сообщений по приложениям Windows извлекает очередное сообщение из системной очереди, определяет, с каким оно окном связано, и помещает в очередь того приложения, которому принадлежит окно.
Windows допускает выполнение одновременно нескольких приложений, каждое из которых может иметь множество окон. Однако только одно окно в каждый момент времени может получать сообщения от клавиатуры. Принято говорить, что окно это имеет фокус ввода. Фокус ввода может быть изменен, например, с помощью мыши (для этого достаточно щелкнуть мышью в требуемом окне). Приложение, окно которого имеет фокус ввода, называется активным. Сообщения от клавиатуры помещаются в очередь активного приложения. Сообщения от мыши обрабатываются по-другому, они передаются тому приложению, в окне которого находится указатель мыши.
Обработку прикладной очереди сообщений осуществляет уже само приложение. Для этого программа организует так называемый цикл обработки сообщений. В нем осуществляется выбор нового сообщения из очереди прикладной программы и вызов диспетчера для его обработки соответствующей функцией (в данном случае А илиВ). В связи с тем, что сообщения связаны с окнами, функции обработки сообщения называют оконными функциями.
67. Выбор семейств шрифтов. Доступ к функциям Windows. Использование соглашения о вызовах языка Pascal. Заголовочный файл Windows: WINDOWS.H. Компоненты приложения для Windows.
Дата добавления: 2015-09-03; просмотров: 150 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Выбор семейств шрифтов. Окна сообщений Windows. Окна диалога Windows. Шрифты Windows. Растровые изображения Windows. Перья Windows. Кисти Windows. | | | Соглашения о вызовах |