Приложение получает дисплейный контекст устройства (DC) при помощи вызова функции BeginPaint, GetDC или GetDCEx и идентифицирует окно, в котором появится соответствующий вывод данных. Обычно, приложение получает дисплейный DC только тогда, когда оно должно рисовать в рабочей области. Когда приложение заканчивает рисовать, оно должно освободить DC при помощи вызова функции EndPaint или ReleaseDC.
Имеется три типа DC для видеодисплеев:
Контексты устройства класса (class device contexts) поддерживаются строго для совместимости с 16-битовыми версиями Windows. Когда вы пишите свое приложение, избегайте использовать контекст устройства класса; вместо него используйте частный контекст устройства.
Общие контексты устройства (common device contexts) - это дисплейные контексты устройства (DC) , которые сохраняются в специальном КЭШе системы. Общие контексты устройства используются в прикладных программах, которые выполняют нечастые операции рисования. Прежде, чем система возвратит дескриптор DC, она инициализирует общий контекст устройства с заданными по умолчанию объектами, атрибутами и режимами. Любые операции рисования , выполняемые приложением, используют эти значения по умолчанию, до тех пор, пока не будет вызвана одна из функций GDI, чтобы выбрать новый объект, изменить атрибуты существующего объекта, или выбирать новый режим.
Поскольку существует только ограниченное число общих контекстов устройства, приложение должно освобождать их после того, как оно закончило рисование. Когда приложение освобождает общий контекст устройства, любые изменения заданных по умолчанию данных, теряются.
Частные контексты устройства (private device contexts) - это дисплейные контексты устройства (DC) , которые в отличие от общих контекстов устройства, сохраняют, любые изменения данных по умолчанию - каждое после того, как приложение освобождает их. Частные контексты устройства используются в прикладных программах, которые выполняют многочисленные операции рисования типа прикладных программ автоматизированного проектирования (CAD), программы настольных издательских систем, рисующие и окрашивающие прикладные программы, и так далее. Частные контексты устройства - не часть системного КЭШа, и поэтому не должны освобождаться после использования. Система автоматически удаляет частный контекст устройства после того, как было разрушено последнее окно этого класса .
Приложение создает частный контекст устройства в начале определяя стиль класса окна CS_OWNDC, когда оно инициализирует член style структуры WNDCLASS и вызывает функцию RegisterClass. (Для получения дополнительной информации о классах окна, см. тему Классы окна.)
После создания окна со стилем CS_OWNDC, приложение может вызывать функцию GetDC, GetDCEx, или BeginPaint один раз, чтобы получить дескриптор, идентифицирующий частный контекст устройства. Приложение может продолжать использовать этот дескриптор (и связанный с ним DC) до тех пор, пока оно не удалит окно, созданное с этим классом. Любые изменения графических объектов и их атрибутов, или графические режимы сохраняются системой до тех пор, пока окно не удалено.