Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Контекст устройства — это структура данных 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 для непосредственного рисования в представлении.