A 【普通DC】用于绘制窗口的客户区。默认情况下,Win32 API为其窗口类未明确指定显示DC样式的任何窗口提供常见的DC。通常的DC通常用于可以绘制而不对DC属性进行广泛更改的窗口。常见的DCs是方便的,因为它们不需要额外的内存或系统资源,但是如果应用程序在使用它们之前必须设置许多属性,那么它们可能会变得不方便。
Windows从显示器DC缓存中检索所有常见的DC。应用程序可以在创建窗口后立即检索公共DC。因为普通的DC是来自缓存,应用程序必须在绘图之后尽快释放DC。公共DC发布后,它不再有效,应用程序不得尝试绘制。要再次绘制,应用程序必须检索一个新的公共DC,并在每次绘制窗口时继续检索和释放一个公共的DC。如果应用程序使用GetDC函数检索DC句柄,则必须使用ReleaseDC函数来释放句柄。类似地,对于每个BeginPaint函数,应用程序必须使用相应的EndPaint函数。
当应用程序检索DC时,Windows调整原点,使其与客户区域的左上角对齐。它还设置剪切区域,使得到DC的输出被剪切到客户端区域。否则将出现在客户端区域外的任何输出都将被剪切。如果应用程序使用BeginPaint检索公共DC,则Windows还包括剪切区域中的更新区域,以进一步限制输出。
当应用程序释放通用DC时,Windows将恢复DC的属性的默认值。修改属性值的应用程序每次检索公共DC时都必须这样做。释放DC释放应用程序可能选择的任何绘图对象,因此应用程序在释放DC之前不需要释放这些对象。在所有情况下,应用程序绝不能假定普通DC在发布后保留非默认选择。