寫了下面的程序,測試下父窗口設置 WS_CLIPCHILDREN 前后,對父窗口調用 RedrawWindow 或 InvalidateRect 對子窗口刷新造成的影響

操作 |
有WS_CLIPCHILDREN |
無WS_CLIPCHILDREN |
InvalidateRect |
父窗口的無效區域增加
對子窗口無影響 |
父窗口的無效區域增加
子窗口的無效區域增加
且無效區域坐標相同(屏幕坐標系下) |
RedrawWindow
FLAG: RDW_INVALIDATE |
父窗口的無效區域增加
對子窗口無影響 |
父窗口的無效區域增加
子窗口的無效區域增加
且無效區域坐標相同(屏幕坐標系下) |
RedrawWindow
FLAG: RDW_INVALIDATE|RDW_ALLCHILDREN |
父窗口的無效區域增加
子窗口的無效區域增加
且無效區域坐標相同(屏幕坐標系下) |
父窗口的無效區域增加
子窗口的無效區域增加
且無效區域坐標相同(屏幕坐標系下) |
RedrawWindow
FLAG: RDW_INVALIDATE|RDW_NOCHILDREN |
父窗口的無效區域增加
對子窗口無影響 |
父窗口的無效區域增加
對子窗口無影響 |
其他窗口在父子窗口上移動 |
父窗口會接收到WM_PAINT消息,但是無效區域是 父窗口 排除子窗口后的區域和 其他當前移動的窗口區域的交集
子窗口會接收到wm_paint消息,無效區域是 子窗口和當前移動的窗口的區域的交集 |
父窗口會接收到WM_PAINT消息,但是無效區域是 父窗口當前移動的窗口區域的交集
子窗口會接收到wm_paint消息,無效區域是 子窗口和當前移動的窗口的區域的交集
|
>