Сообщение WM_PAINT
Сообщение WM_PAINT – передает программе, что часть или вся рабочая область окна недействительна (invalid) и ее следует перерисовать.
При первом создании окна недействительна вся рабочая зона и сообщение WM_PAINT заставляет оконную процедуру рисовать в рабочей области, что происходит также и при изменении размера окна.
Обработка сообщения WM_PAINT почти всегда начинается вызовом:
hdc = BeginPaint (hwnd, &ps);
и заканчивается функцией
EndPaint (hwnd, &ps);
первый параметр в обеих функциях – описатель окна, второй – указатель на структуру типа PAINTSTRUCT, в которой содержится информация, необходимая оконной процедуре для рисования в рабочей области.
При обработке вызова BeginPaint обновляется фон рабочей области, заданной кистью; вся рабочая область становится действительной и возвращается описатель контекста устройства, описывающий физическое устройство вывода информации (дисплей) и его драйвер.
Функция EndPaint освобождает описатель контекста устройства, после чего его значение нельзя использовать.
Для определения размера рабочей области окна вызывается функция
GetClientRect (hwnd, &rect);
параметр rect – структура типа RECT (rectangle – прямоугольник), содержащая четыре поля типа LONG (left – левое, top – верх, right – правое, bottom – низ), в которые помещаются размеры рабочей области окна; поля left, top всегда устанавливаются в 0, поля right, bottom – ширина и высота рабочей области в пикселях.
Структура rect используется в качестве четвертого параметра функции отображения текста:
DrawText (hdc, "Hello, Windows !", –1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
второй параметр – отображаемый текст; третий параметр (–1) указывает, что строка текста заканчивается нулевым символом; последний параметр – набор флагов, значения которых указывают, что текст следует выводить в одну строку, по центру прямоугольной области размером, заданным в rect. Вызов этой функции отображает строку «Hello, Windows!» в центре рабочей области созданного окна.
Дата добавления: 2014-12-30; просмотров: 962;