Файл: 17. Основы графического вывода.pdf

Добавлен: 20.10.2018

Просмотров: 575

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

должно  обрабатываться  оконной  функцией    приложения  с  выполнением 

необходимого  графического  вывода.  Отсюда  следует,  что  весь  графический 

вывод  должен  быть  собран  внутри  обработчика  сообщения  wm_Paint, 

выполняющего следующие основные действия: 

 

запрос контекста устройства с помощью вызова BeginPaint (а не GetDC 

!!!); 

 

создание  всех  необходимых  инструментов,  активизация  нужных 

инструментов и использование их для рисования так, как было описано 

выше; 

 

уничтожение инструментов; 

 

освобождение контекста с помощью функции EndPaint. 

Важное отличие от ранее рассмотренной схемы состоит в том, что вместо 

пары  GetDC/ReleaseDC  используется  пара  функций  BeginPaint  и  EndPaint. 

Здесь  функция  BeginPaint  имеет  два  входных  параметра:  дескриптор 

контекста и переменная специального системного типа  PaintStruct, которая 

предварительно  должна  быть  объявлена,  хотя  явно  она  обычно  нигде  не 

используется. 

Довольно  часто  возникает  необходимость  программной  генерации 

сообщения  wm_Paint для принудительной перерисовки изображения в окне. 

Необходимость  в  принудительной  перерисовке  возникает  тогда,  когда 

приложение  хочет  динамически  изменить  уже  существующее  изображение, 

т.е. добавить или удалить какой-нибудь примитив, изменить цвет текста или 

примитива, изменить стиль заполнения фона какой-либо фигуры и т.д. Чаще 

всего  для  этих  целей  используется  системный  вызов  InvalidateRect.  Данная 

функция  позволяет  перерисовывать  только  часть  окна,  размеры  которой 

можно получить с помощью специальной функции, хотя практически всегда 

выполняется  полная  перерисовка  клиентской  части  окна.  Вызов 

InvalidateRect должен включаться в обработчик какого-либо события (меню, 

таймер и т.д.), при этом в обработчике сначала должны выполняться какие-

либо изменения в структуре или параметрах изображения.