父窗口設置 WS_CLIPCHILDREN

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


操作

有WS_CLIPCHILDREN

無WS_CLIPCHILDREN

InvalidateRect

父窗口的無效區域增加

對子窗口無影響

父窗口的無效區域增加

子窗口的無效區域增加

且無效區域座標相同(屏幕座標系下)

RedrawWindow

FLAG: RDW_INVALIDATE

父窗口的無效區域增加

對子窗口無影響

父窗口的無效區域增加

子窗口的無效區域增加

且無效區域座標相同(屏幕座標系下)

RedrawWindow

FLAG: RDW_INVALIDATE|RDW_ALLCHILDREN

例:RedrawWindow(&rect, NULL, RDW_INVALIDATE|RDW_ALLCHILDREN);

父窗口的無效區域增加

子窗口的無效區域增加

且無效區域座標相同(屏幕座標系下)

父窗口的無效區域增加

子窗口的無效區域增加

且無效區域座標相同(屏幕座標系下)

RedrawWindow

FLAG: RDW_INVALIDATE|RDW_NOCHILDREN

父窗口的無效區域增加

對子窗口無影響

父窗口的無效區域增加

對子窗口無影響

其他窗口在父子窗口上移動

父窗口會接收到WM_PAINT消息,但是無效區域是 父窗口 排除子窗口後的區域和 其他當前移動的窗口區域的交集

子窗口會接收到wm_paint消息,無效區域是 子窗口和當前移動的窗口的區域的交集

父窗口會接收到WM_PAINT消息,但是無效區域是 父窗口當前移動的窗口區域的交集

 

子窗口會接收到wm_paint消息,無效區域是 子窗口和當前移動的窗口的區域的交集


發佈了37 篇原創文章 · 獲贊 6 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章