当需要更新窗口的一部分时,发出WM_PAINT消息.通过指定BeginPaint/EndPaint(),您告诉gdi您实际上在做这项工作.如果没有为指定区域调用BeginPaint(),WM_PAINT消息将生成很长时间,直到有人实际更新它.该功能只为您提供DC,因为它很方便.内部BeginPaint()/ EndPaint()可能调用GetDC()/ ReleaseDC().
与GetDC和ReleaseDC相比,您告诉GDI 您现在要在DC上绘制一些东西,而gdi请求您必须这样做.
是的,当然.BeginPaint()检索更新区域并自动再次清空它.如果你使用GetDC()那么你会注意到你的程序烧掉了100%的cpu核心,一遍又一遍地运行WM_PAINT处理程序,因为更新区域从未被清除过.你必须调用ValidateRect()来避免这种情况.
| 归档时间: |
|
| 查看次数: |
1586 次 |
| 最近记录: |