Windows维护一个用于普通,父级和窗口DC的显示DC缓存。当应用程序调用{??989796010}或BeginPaint函数时,Windows从缓存中检索DC;当应用程序随后调用ReleaseDC或EndPaint功能时,Windows将DC返回到缓存。
在Windows 3.【x】中,缓存包含5个显示DC,但缓存中只有5个DC可以一次处于活动状态。为了确保其他应用程序可以访问这些DC,应用程序必须在使用该应用程序后立即释放设备上下文。否则最终会导致应用程序失败。
高速缓存可以容纳的DC数量没有预定的限制;如果没有可用的Windows,Windows将为缓存创建一个新的显示器DC。鉴于此,一个基于Win32的应用程序一次可以从缓存中提供五个以上的活动DC。但是,应用程序在使用后必须继续释放这些DC。由于缓存中的新显示器DC分配在应用程序的堆空间中,因此无法释放DC最终将消耗所有可用的堆空间。当Windows无法为新的DC分配空间时,Windows会返回错误。与缓存无关的其他功能也可能返回错误。
可移植性为了尽量减少移植工作,使用常见DC的应用程序应限制为不超过5个,并确保在使用通用DC后尽快发布常见的DC。