显示设备上下文

应用程序通过调用 BeginPaint、GetDCGetDCEx函数 并标识将在其中显示相应输出的窗口来获取显示 DC。 通常,应用程序仅在必须在工作区中绘制时获取显示 DC。 但是,用户 可能会通过调用 GetWindowDC 函数来获取窗口设备上下文。 应用程序完成绘制后,必须通过调用 EndPaint或 ReleaseDC 函数释放 DC。

视频显示器有五种类型的DC:

  • 通用
  • 专用
  • 窗口
  • Parent

类设备上下文

严格支持类 设备上下文,以兼容 16 位版本的 Windows。 编写应用程序时,请避免使用类设备上下文;请改为使用专用设备上下文。

常见设备上下文

常见的设备上下文 是系统在特殊缓存中维护的显示 DC。 常见设备上下文用于执行不常用的绘图操作的应用程序。 在系统返回 DC 句柄之前,它会使用默认对象、属性和模式初始化通用设备上下文。 应用程序执行的任何绘制操作都使用这些默认值,除非调用其中一个 GDI 函数来选择新对象、更改现有对象的属性或选择新模式。

由于只有有限数量的常用设备上下文存在,因此应用程序应在完成绘制后释放它们。 当应用程序发布通用设备上下文时,对默认数据的任何更改将丢失。

专用设备上下文

与常见的设备 上下文不同,专用设备上下文是显示 DC,即使应用程序释放默认数据,它们仍保留对默认数据的任何更改。 专用设备上下文用于执行大量绘图操作的应用程序,例如计算机辅助设计 (CAD) 应用程序、桌面发布应用程序、绘图和绘制应用程序等。 专用设备上下文不是系统缓存的一部分,因此使用后无需释放。 在销毁该类的最后一个窗口后,系统会自动删除专用设备上下文。

应用程序在初始化 _ WNDCLASS结构的样式成员并调用 RegisterClass函数时,首先指定 CS OWNDC 窗口类样式,以创建专用设备上下文。 (有关窗口类详细信息,请参阅 窗口类.)

使用 CS OWNDC 样式创建窗口后,应用程序可以调用 _ GetDC、GetDCExBeginPaint函数一次,以获取标识专用设备上下文的句柄。 应用程序可以继续使用此句柄 (关联的 DC) 直到删除使用此类创建的窗口。 对图形对象及其属性或图形模式的任何更改都将由系统保留,直到删除该窗口。

窗口设备上下文

窗口设备上下文 使应用程序能够在窗口的任何位置(包括非工作区)进行绘制。 对于具有自定义非客户端区域的窗口,处理 WM _ NCPAINTWM _ NCACTIVATE 消息的应用程序通常使用窗口设备上下文。 不建议将窗口设备上下文用于任何其他目的。 有关详细信息,请参阅请参阅 GetWindowDC

父设备上下文

设备上下文 使应用程序能够最大程度地减少设置窗口剪辑区域所需的时间。 应用程序通常使用父设备上下文加快控制窗口的绘制速度,而无需专用或类设备上下文。 例如,系统将父设备上下文用于按钮和编辑控件。 父设备上下文仅用于子窗口,从不与顶级窗口或弹出窗口一起使用。 有关详细信息,请参阅请参阅 父显示设备上下文