Личный контекст отображения

Этим контекстом обладают окна класса со стилем CS_OWNDC. Личный контекст получают один раз и настраивают его атрибуты, а освобождают только при завершении работы приложения. Функции BeginPaint, EndPaint, GetDC и ReleaseDC не влияют на личный контекст. Личный контекст экономит расход оперативной памяти.

Рассмотрим пример с таким контекстом. В предыдущем приложении стиль класса изменим на класс окон с личным контекстом:

wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;

Тогда произойдут следующие изменения:

1. При запуске приложения устанавливаются атрибуты контекста только для окна hwnd1:

ContAttr(hwnd1);

Это можно заметить сразу после запуска. Окно hwnd1 при выводе использует атрибуты личного контекста, установленные функцией ContAttr. Окно hwnd2 использует атрибуты личного контекста, установленные по умолчанию операционной системой.

2. Экспериментируя с окнами, нажимая на клавиши мыши, можно заметить, что изменения атрибутов контекста одного окна никак не изменяют атрибутов вывода в другом окне. То есть каждое окно обладает своим личным контекстом.

Родительский контекст отображения

Этот контекст используют дочерние окна. Он позволяет дочерним окнам "унаследовать" атрибуты контекста отображения у родительского окна. Например, дочернее окно может использовать для вывода текста тот же шрифт и цвета, что и родительское окно.

С этой целью в стиле класса дочерних окон указывают значение CS_PARENTDC.




double arrow
Сейчас читают про: