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

Приложение получает дисплей контроллера домена, вызывая функцию BeginPaint, GetDC или GetDCEx и определяя окно, в котором будут отображаться соответствующие выходные данные. Как правило, приложение получает дисплей контроллера домена только в том случае, если оно должно рисовать в клиентской области. Однако контекст оконного устройства можно получить, вызвав функцию GetWindowDC . После завершения рисования приложение должно освободить контроллер домена, вызвав функцию EndPaint или ReleaseDC .

Существует пять типов контроллеров домена для видеотрансляции:

  • Класс
  • Распространенные
  • Private
  • Окно
  • Parent

Контексты устройства класса

Контексты устройств класса поддерживаются строго для совместимости с 16-разрядными версиями Windows. При написании приложения избегайте использования контекста класса устройства; вместо этого используйте контекст частного устройства.

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

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

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

Контексты частных устройств

Контексты частных устройств — это отображаемые контроллеры домена, которые, в отличие от общих контекстов устройств, сохраняют любые изменения данных по умолчанию даже после их выпуска приложением. Контексты частных устройств используются в приложениях, выполняющих множество операций рисования, таких как приложения автоматизированного проектирования (САПР), классические приложения для публикации, приложения для рисования и рисования и т. д. Контексты частных устройств не являются частью системного кэша и поэтому не должны освобождаться после использования. Система автоматически удаляет контекст частного устройства после того, как будет уничтожено последнее окно этого класса.

Приложение создает контекст частного устройства, сначала указывая стиль CS_OWNDC оконного класса при инициализации элемента стиля структуры WNDCLASS и вызове функции RegisterClass . (Дополнительные сведения о классах окон см. в разделе Классы окон.)

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

Контексты оконных устройств

Контекст устройства окна позволяет приложению рисовать в любом месте окна, включая неклиентную область. Контексты оконных устройств обычно используются приложениями, обрабатывающими WM_NCPAINT и WM_NCACTIVATE сообщения для windows с настраиваемыми неклиентными областями. Использование контекста оконного устройства не рекомендуется для каких-либо других целей. Для получения дополнительных сведений; См . раздел GetWindowDC.

Контексты родительского устройства

Контекст родительского устройства позволяет приложению свести к минимуму время, необходимое для настройки области обрезки для окна. Приложение обычно использует контексты родительского устройства для ускорения рисования окон управления без необходимости использования частного или классового контекста устройства. Например, система использует контексты родительского устройства для нажатия кнопки и редактирования элементов управления. Контексты родительских устройств предназначены для использования только с дочерними окнами, никогда не с окнами верхнего уровня или всплывающих окон. Для получения дополнительных сведений; См . раздел Контексты родительского отображаемого устройства.