c - 为什么要使用 validating/invalidating 区域?

标签 c winapi

当窗口的一部分需要重绘时,该区域被标记为无效,而当我重绘该区域时(在WM_PAINT 事件处理程序中),我应该将该区域标记为有效。

但我不明白为什么需要将区域标记为无效然后稍后对其进行验证,我的意思是为什么不直接执行以下操作:当需要重新绘制区域时,只需发送一个 WM_PAINT 消息(不将该区域标记为无效),然后重新绘制该区域(不将其标记为有效)。

最佳答案

想象一下有人向栅栏扔球。球击中栅栏后,您会重新粉刷栅栏吗?不,当且仅当自上次重新粉刷后有球击中围栏时,您才重新粉刷围栏。

您建议在任何时候将某个区域标记为无效,而不是向应用程序发送 WM_PAINT 消息。这样做的大问题是,如果同一区域多次无效,将导致发送许多 WM_PAINT 消息,并且无法知道其中许多已被处理。所以在你最需要高性能的时候(因为你在绘图上落后了)你不得不一遍又一遍地重复相同的绘图操作。这没有意义。

关于c - 为什么要使用 validating/invalidating 区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447831/

相关文章:

winapi - 可以有一个没有可执行文件支持的图像的过程吗?

Delphi 10 Seattle 更改为 Win32 GetPath 以及冗余 TPoint 和 _POINTL 记录类型

c++ - 如何在 C++ 中创建仅显示任务对话框的 Windows 应用程序

c++ - 验证加载的 DLL 是否具有有效证书的最安全方法是什么?

c - 为什么我的程序无法识别另一个命令?

c++ - 适用于 Linux 的 C/C++ RPC 教程

c - 使用 OpenSSL API 验证 Authenticode 签名的可执行文件和 DLL

c++ - 连接 LPTSTR 与 const char* (Win32 C++)

c - 在 Perl 中解析多嵌套条件 C 预处理器语句

c - vscode调试后如何自动关闭任务终端