常见显示设备上下文

通用设备上下文用于在窗口的工作区中进行绘图。 默认情况下,系统为窗口类未显式指定显示设备上下文样式的任何窗口提供通用设备上下文。 常见设备上下文通常用于无需对设备上下文属性进行大量更改即可绘制的窗口。 常见的设备上下文很方便,因为它们不需要额外的内存或系统资源,但如果应用程序在使用之前必须设置多个属性,它们可能会很不方便。

系统从显示设备上下文缓存中检索所有常见设备上下文。 应用程序可以在创建窗口后立即检索通用设备上下文。 由于常见设备上下文来自缓存,因此应用程序在绘制后必须始终尽快释放设备上下文。 释放通用设备上下文后,它不再有效,应用程序不得尝试使用它进行绘制。 若要再次绘制,应用程序必须检索新的通用设备上下文,并在每次在窗口中绘制时继续检索和释放公共设备上下文。 如果应用程序使用 GetDC 函数检索设备上下文句柄,则必须使用 ReleaseDC 函数释放句柄。 同样,对于每个 BeginPaint 函数,应用程序必须使用相应的 EndPaint 函数。

当应用程序检索设备上下文时,系统会调整原点,使其与工作区的左上角对齐。 它还设置剪辑区域,以便将设备上下文的输出剪裁到工作区。 将剪裁在工作区之外的任何输出。 如果应用程序使用 BeginPaint 检索公共设备上下文,则系统还会在剪辑区域中包括更新区域,以进一步限制输出。

当应用程序释放通用设备上下文时,系统会还原设备上下文属性的默认值。 每次检索通用设备上下文时,修改属性值的应用程序都必须这样做。 释放设备上下文会释放应用程序可能已选择的任何绘图对象,因此应用程序无需在释放设备上下文之前释放这些对象。 在所有情况下,应用程序绝不能假定公共设备上下文在发布后保留非默认选择。