Поделиться через


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

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

Объекты CPaintDC инкапсулируют типовые конструкции Windows: сначала происходит вызов функции BeginPaint, затем выполняется рисование в контексте устройства, и после этого вызывается функция EndPaint. Конструктор CPaintDC вызывает BeginPaint для вас, а деструктор вызывает EndPaint. Упрощенный процесс заключается в создании объекта CDC , рисования и последующего CDC уничтожения объекта. В платформе большая часть даже этого процесса автоматизирована. В частности, ваша OnDraw функция передается уже подготовленной CPaintDC (через OnPrepareDC), и вы просто тянете в нее. Он уничтожается платформой, и базовый контекст устройства освобождается в Windows после возвращения из вызова функции OnDraw .

Объекты CClientDC инкапсулируют работу с контекстом устройства, представляющего исключительно клиентскую область окна. Конструктор CClientDC вызывает GetDC функцию, а деструктор вызывает функцию ReleaseDC . Объекты CWindowDC инкапсулируют контекст устройства, представляющий все окно, включая его кадр.

Объекты CMetaFileDC инкапсулируют рисование в метафайл Windows. В отличие от CPaintDC, переданного OnDraw, необходимо в этом случае самостоятельно вызвать OnPrepareDC.

Рисование мыши

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

В таком случае можно использовать объект контекста устройства CClientDC для непосредственного рисования в представлении.

Что вы хотите узнать больше о

См. также

Объекты окна