Общие контексты устройства отображения


Общий контекст устройства (common device context) используется для того, чтобы рисовать в рабочей области окна. Система предоставляет общий контекст устройства по умолчанию для любого окна, класс которого явно не устанавливает стиль контекста устройства (DC) отображения. Общие контексты устройства обычно используются окнами, которые могут рисовать  без больших изменений атрибутов контекста устройства. Общие контексты устройства удобны тем, что они не требуют дополнительной памяти или системных ресурсов, но они могут быть неудобны тем, что приложение должно установить много атрибутов, перед тем, как использовать их.

Система извлекает все общие контексты устройства из кэша контекста устройства (DC) отображения. Приложение может немедленно извлечь общий контекст устройства после того, как окно будет создано. Поскольку общий контекст устройства извлекается из кэша, приложение должно всегда освобождать его как можно быстрее после операции рисования. После того, как общий контекст устройства освобожден, он больше не действителен и приложение не должно попытаться рисовать при помощи него. Чтобы рисовать снова, приложение должно извлечь новый общий контекст устройства и продолжать извлекать и освобождать общий контекст устройства каждый раз, когда оно рисует в окне. Если приложение извлекает дескриптор контекста устройства при помощи использования функции GetDC, то оно должно использовать функцию ReleaseDC, чтобы освободить дескриптор. Точно так же для каждой функции BeginPaint, приложение должно использовать соответствующую функцию EndPaint.

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

Когда приложение освобождает общий контекст устройства, система восстанавливает значения по умолчанию для атрибутов контекста устройства. Приложение, которое модифицирует значения атрибутов, должно делать так каждый раз, когда оно извлекает общий контекст устройства. Освобождение контекста устройства освобождает любые объекты рисования, которые приложение, возможно, выбрало внутри него, таким образом приложению не нужно освобождать эти объекты, перед тем, как освободить контекст устройства. Во всех случаях приложение никогда не должно предполагать, что общий контекст устройства, будучи освобожденным, сохраняет выбор не по умолчанию.

Назад в оглавление
На главную страницу
Переведено 06.01.2011 12:56 ©Copyright V. Sokovikov
Hosted by uCoz