显示设备上下文

应用程序通过调用 BeginPaintGetDC 或 GetDCEx 函数并标识显示相应输出的窗口来获取显示 DC。 通常,仅当应用程序必须在工作区中绘制时才获取显示 DC。 但是,可以通过调用 GetWindowDC 函数来获取窗口设备上下文。 应用程序完成绘图后,它必须通过调用 EndPaintReleaseDC 函数释放 DC。

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

  • 通用
  • 专用
  • 窗口
  • Parent

类设备上下文

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

常见设备上下文

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

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

专用设备上下文

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

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

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

窗口设备上下文

窗口设备上下文使应用程序能够绘制窗口中的任意位置,包括非封闭区域。 窗口设备上下文通常由处理具有自定义非自定义区域的窗口 的WM_NCPAINTWM_NCACTIVATE 消息的应用程序使用。 不建议出于任何其他目的使用窗口设备上下文。 有关详细信息,请参阅:请参阅 GetWindowDC

父设备上下文

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