Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_на_ассембл_для_WINLOWS.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
908 Кб
Скачать
☆

2. Структура сообщения

Выполняемая в среде Windows программа реагирует на события. Событиями являются, например, щелчки и перемещение мыши, нажатие клавиш и вообще любое изменение среды окружения данной программы. Система сообщает приложению о событии при помощи сообщения, которое описывает изменение, произошедшее в окружающей приложение среде. Сообщения извлекаются из системной очереди. Каждое сообщение связывается с конкретным окном приложения, с каждым из которых, в свою очередь, связана собственная оконная процедура. Приложение получает сообщение с помощью функции GetMessage, после чего обращается к Windows посредством функции DispatchMessage. Затем Windows вызывает соответствующую оконную процедуру и передает ей это сообщение для обработки. Если сообщение не обрабатывается оконной процедурой, она передает его для обработки системе.

Структура сообщения представлена во включаемом файле следующим образом:

MSGSTRUCT struc

MsHWND UINT ?

MsMESSAGE UINT ?

MsWPARAM UINT ?

MsLPARAM ULONG ?

MsTIME ULONG ?

MsPT ULONG ?

ULONG ?

MSGSTRUCT ends

Поле MsHWND указывает, какому окну передается сообщение. В поле MsMESSAGE передается код сообщения. Поля MsWPARAM и MsLPARAM содержат специфичную для сообщения информацию. Например, если поле сообщения содержит VM_MOUSEMOVE, то поле MsWPARAM содержит Продолжение прил. 4

информацию о том, какая клавиша нажата, а MsLPARAM – информацию о координатах курсора. Поля MsTIME и MsPT содержат соответственно время и позицию курсора, определенные в момент создания сообщения.

3. Структура paintstruct

Взаимодействие приложения с устройствами вывода информации осуществляется с помощью функций интерфейса графических устройств (Graphic Device Interface – GDI). При работе с этими функциями, будь то рисование линии или вывод текста на экран, приложение оперирует с неким стандартизированным описанием параметров устройства, так называемым контекстом устройства (Device Context – DC). Контекст устройства как структура данных автоматически создается системой и размещается в перемещаемом сегменте памяти. Для каждого окна необходимо иметь информацию о контексте устройства. Поэтому алгоритм вывода информации в рабочую область окна можно представить тремя действиями: запрос на создание контекста устройства, операция вывода, освобождение контекста устройства.

Если оконная процедура обрабатывает сообщение WM_PAINT, кроме контекста устройства необходимо получить адрес структуры данных PAINTSTRUCT. Сообщение WM_PAINT передается приложению тогда, когда необходимо перерисовать окно. Структура PAINTSTRUCT содержит информацию для перерисовки окна приложения и в файле win32.inc представлена следующим образом:

PAINTSTRUCT STRUC

PShdc UINT ?

PSfErase UINT ?

PSrcPaint UCHAR size RECT dup (?)

PSfRestore UINT ?

PSfIncUpdate UINT ?

PSrgbReserved UCHAR 16 dup(?)

PAINTSTRUCT ENDS

Тип UCHAR в файле win32.inc представлен как синоним DB.

Поле PShdc должно содержать дескриптор контекста устройства.

Поле PsfErase определяет, должен ли быть уничтожен фон. Содержимое этого поля отлично от нуля, если приложение уничтожает фон.

Поле PsrcPaint определяет структуру RECT, которая содержит информацию о верхнем левом и правом нижнем углах прямоугольника, который необходимо перерисовать.

Остальные поля зарезервированы для внутренних нужд Windows.