我们的应用程序使用SetWindowRgn()
函数中的OnPaint()
API创建自定义形状的叠加窗口。该区域窗口仅具有客户区域。它还有一个所有者窗口,这是一个普通的矩形窗口。
我们观察到,如果区域的形状很复杂,有时SetWindowRgn()
中的OnPaint()
调用需要很长时间才能返回,例如,如果窗口区域是文本或复杂的设计。即使是此区域窗口下方的窗口也会缓慢呈现。这主要发生在调整视图大小时。我们发现从OnNcCalcSize()
内部调用SetWindowRgn()
并且OnNcCalcSize()
的默认处理需要很长时间才能返回。此外,在某些机器上,区域窗口下方窗口的绘制速度非常慢。
为什么复杂形状的区域窗口渲染会变慢?我们可以通过自定义处理OnNcCalcSize()
或其他事件等事件来加快速度吗?
注意:请不要建议使用分层窗口,因为技术限制迫使我们使用区域窗口。