Возможности задания областей сложной конфигурации расширяет функция Val i dateRect С HWND hWnd, RECT *lpRect). Она объявляет область неповрежденной и не подлежащей обновлению.

На рис. 3.5 показаны два изображения окна (проект InvalidateRect). Правое окно формируется по щелчку правой кнопкой мыши, а левое - по щелчку левой кнопкой мыши. В обоих случаях окно заполняется лучами, выходящими из начала координат.

Но на правом рисунке дефектной объявлена вся рабочая область, а на левом - только ее часть. Решение этой задачи требует правильной организации очистки окна перед выводом линий.

Нужную дефектную область можно сформировать при помощи следующего фрагмента кода:

case WM_LBUTTONUP:
Invali dateRect(hWnd.&R1.TRUE):
ValidateRect(hWnd.&R); break;.

Если вставить его в оконную функцию, то по щелчку левой кнопкой мыши сформируется сообщение WM_PAINT. Однако для вывода показанного слева изображения окно должно быть предварительно очищено. Если окно было предварительно заполнено линиями, то очистится только дефектная область, сформированная из прямоугольников R1 и R, потом она же заполнится линиями, и мы опять получим изображение правого окна.

Формирование статических изображений

Управление областью отсечения

Рис. 3.5. Управление областью отсечения Можно привести еще один неработоспособный вариант"opengl4_55.html">⇐ Предыдущая| |Следующая ⇒