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

Контекст устройства — это структура данных Windows, содержащая сведения об атрибутах рисования устройства, таких как экран или принтер.A device context is a Windows data structure containing information about the drawing attributes of a device such as a display or a printer. Все вызовы рисования выполняются через объект контекста устройства, который инкапсулирует интерфейсы API Windows для рисования линий, фигур и текста.All drawing calls are made through a device-context object, which encapsulates the Windows APIs for drawing lines, shapes, and text. Контексты устройств допускают независящие от устройства рисунки в Windows.Device contexts allow device-independent drawing in Windows. Контексты устройств можно использовать для рисования на экране, на принтер или в метафайл.Device contexts can be used to draw to the screen, to the printer, or to a metafile.

Объекты кпаинтдк инкапсулируют общую идиому окон, вызывая BeginPaint функцию, затем рисуя в контексте устройства и вызывая EndPaint функцию.CPaintDC objects encapsulate the common idiom of Windows, calling the BeginPaint function, then drawing in the device context, then calling the EndPaint function. CPaintDCКонструктор вызывает метод BeginPaint , и деструктор вызывает EndPaint .The CPaintDC constructor calls BeginPaint for you, and the destructor calls EndPaint. Упрощенный процесс — создание объекта CDC , рисование, а затем уничтожение CDC объекта.The simplified process is to create the CDC object, draw, and then destroy the CDC object. В платформе большая часть даже этого процесса автоматизирована.In the framework, much of even this process is automated. В частности, OnDraw функция передается CPaintDC уже подготовленным (через OnPrepareDC ), и вы просто рисуете в ней.In particular, your OnDraw function is passed a CPaintDC already prepared (via OnPrepareDC), and you simply draw into it. Он уничтожается платформой, и контекст базового устройства освобождается в Windows после возврата из вызова OnDraw функции.It is destroyed by the framework and the underlying device context is released to Windows upon return from the call to your OnDraw function.

Объекты кклиентдк инкапсулируют работу с контекстом устройства, представляющим только клиентскую область окна.CClientDC objects encapsulate working with a device context that represents only the client area of a window. CClientDCКонструктор вызывает GetDC функцию, и деструктор вызывает ReleaseDC функцию.The CClientDC constructor calls the GetDC function, and the destructor calls the ReleaseDC function. Объекты квиндовдк инкапсулируют контекст устройства, представляющий все окно, включая его фрейм.CWindowDC objects encapsulate a device context that represents the whole window, including its frame.

Кметафиледк объекты инкапсулируют рисунок в метафайл Windows.CMetaFileDC objects encapsulate drawing into a Windows metafile. В отличие от CPaintDC переданного OnDraw метода, необходимо в этом случае вызвать онпрепаредк самостоятельно.In contrast to the CPaintDC passed to OnDraw, you must in this case call OnPrepareDC yourself.

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

Большинство операций рисования в программе платформы, и, таким, в большинстве случаев работы с контекстом устройства, выполняются в OnDraw функции-члене представления.Most drawing in a framework program — and thus most device-context work — is done in the view's OnDraw member function. Тем не менее вы по-прежнему можете использовать объекты контекста устройства для других целей.However, you can still use device-context objects for other purposes. Например, чтобы обеспечить обратную отправку для отслеживания перемещения мыши в представлении, необходимо нарисовать непосредственно в представлении, не дожидаясь OnDraw вызова.For example, to provide tracking feedback for mouse movement in a view, you need to draw directly into the view without waiting for OnDraw to be called.

В этом случае можно использовать объект контекста устройства кклиентдк для рисования непосредственно в представлении.In such a case, you can use a CClientDC device-context object to draw directly into the view.

Что вы хотите узнать подробнееWhat do you want to know more about

См. также разделSee also

Объекты окнаWindow Objects