当窗口的一部分需要重绘时,该区域被标记为无效,而当我重绘该区域时(在WM_PAINT
事件处理程序中),我应该将该区域标记为有效。
但我不明白为什么需要将区域标记为无效然后稍后对其进行验证,我的意思是为什么不直接执行以下操作:当需要重新绘制区域时,只需发送一个 WM_PAINT
消息(不将该区域标记为无效),然后重新绘制该区域(不将其标记为有效)。
最佳答案
想象一下有人向栅栏扔球。球击中栅栏后,您会重新粉刷栅栏吗?不,当且仅当自上次重新粉刷后有球击中围栏时,您才重新粉刷围栏。
您建议在任何时候将某个区域标记为无效,而不是向应用程序发送 WM_PAINT
消息。这样做的大问题是,如果同一区域多次无效,将导致发送许多 WM_PAINT
消息,并且无法知道其中许多已被处理。所以在你最需要高性能的时候(因为你在绘图上落后了)你不得不一遍又一遍地重复相同的绘图操作。这没有意义。
关于c - 为什么要使用 validating/invalidating 区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447831/