窗體區域繪制問題WS_CLIPCHILDREN與WS_CLIPSIBLINGS


WS_CLIPCHILDREN,使得父窗體在繪制時留出其上的子窗體的位置不去畫它,而那片區域留着子窗體去畫。
WS_CLIPSIBLINGS,必須用於子窗體,使得該子窗體在收到WM_PAINT時同時令其共父的諸多子窗體(MSDN講必須不在該區域,即不與之重疊)也會被PAINT。

//下面也是對WS_CLIPSIBLINGS的理解
所有的overlapped窗口和popup窗口,都有WS_CLIPSIBLINGS 屬性,
這些窗口不能在它的sibling窗口上繪圖

對於child窗口,如果沒有這個屬性,它能在它的sibling窗口上繪圖

 ┌────────┐
 │    A          │
 │               │
 │    ┌─────┼───┐
 │    │  C      │      │
 │    │         │      │
 └──┼─────┘      │
      │                  │
      │     B            │
      └────────


如果A, B都是child窗口,
如果A具有WS_CLIPSIBLINGS屬性,
那么A重繪時不會重繪C部分

clip是裁減,去除的意思 相當與英文的Exclude

WS_CLIPCHILDREN和WS_CLIPSIBLING都是為了減少重畫,減少閃動,保證窗口的重疊部分只有一個窗口來實現PAINT。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM