当启用桌面合成双缓冲仍需要?
在微软的应用程序兼容性指南 :
图形设备接口(GDI)
到Windows Vista和Windows Server 2008之前,一个窗口句柄(HWND)直接涂在屏幕上,它有一定的好处,但限于Windows如何能显示和管理顶层窗口。 在Windows Vista和Windows Server 2008,所有顶层窗口被渲染到离屏位图(类似于WS_EX_LAYERED),和桌面窗口管理器的图像融合在一起,绘制桌面。
这听起来像所有的渲染,现在做了一个离屏位图:
窗口被呈现给离屏位图
这个对吗?
我之所以问是因为我仍然看到标准的油漆周期中闪烁:
- WM_ERASEBKGND
- WM_PAINT
而桌面组合启用:
我会假设调用之间
BeginPaint(hWnd, paintStructure);
...
EndPaint(hWnd, paintStructure);
所有的画会发生在一个后台缓存:
窗口被呈现给离屏位图
与此同时,前缓冲器将保持不变。