如果子控件覆盖无效矩形,父 Window 会收到 WM_PAINT 消息吗?

Will a parent Window receives a WM_PAINT message if a child control covers the invalid rectangle?

假设我有以下 Window 和一个按钮:

如果放置Button的矩形需要绘制,WM_PAINT消息是只发送给Button还是同时发送给父级Window?


编辑: 我的意思是 "needs to be painted" 例如:如果我最小化并恢复 window,如果我用另一个覆盖它 window 然后发现它(不确定这是否会在 Windows 7 中导致 WM_PAINT 消息),等等

要使按钮无效,您可以调用 InvalidateRect 并传递按钮的 window 句柄。这将导致 WM_PAINT 消息被传送到按钮。没有 WM_PAINT 消息传送到按钮的父级。

在评论中,您描述了一个场景,其中父级 window 被调整大小以显示以前隐藏的按钮。在那种情况下,父级和按钮都将无效,因此两者都会收到 WM_PAINT 消息。