我知道 WM_PAINT 告诉一个窗口它需要完全重新绘制自己,但显然这不是当它被部分覆盖时发送的消息,然后它前面的窗口不再妨碍它,它需要重新绘制脏的部分。有谁知道在这种情况下发送了什么消息?
编辑:发现问题:
这个问题涉及我编写的一个 Delphi 控件,用于在 Delphi 表单上嵌入SDL渲染表面。SDL 有一个 API 可以在另一个窗口的 HWND 上构建其渲染器,并将其标记为“外部窗口”。
SDL 通常WM_PAINT
在内部处理,所以我最终不得不向 SDL 的 WindowProc 添加一些代码,以将消息转发到外部 WindowProc(如果它是一个外部窗口)。这有时是有效的,但事实证明有一个小故障从窗口的数据结构中剥离了外部窗口标志,所以它吞下了消息而不是将其传递给我的应用程序。一旦我解决了这个问题,我就开始一直收到WM_PAINT
消息。