WS_CLIPCHILDREN与WS_CLIPSIBLINGS
参照原文网址:
WS_CLIPCHILDREN与WS_CLIPSIBLINGS_clip siblings-CSDN博客
WS_CLIPCHILDREN与WS_CLIPSIBLINGS
英文单词解释
clip:夹子、子弹夹、回形针;夹住,修剪
sibling:同胞兄弟或姐妹
overlapped:重叠
这两个Window Stype的特性与异同素来不太清楚,今日作一笔记:
MSDN的解释为:
clip:夹子、子弹夹、回形针;夹住,修剪
sibling:同胞兄弟或姐妹
overlapped:重叠
这两个Window Stype的特性与异同素来不太清楚,今日作一笔记:
MSDN的解释为:
- WS_CLIPCHILDREN Excludes the area occupied by child windows when you draw within the parent window. Used when you create the parent window.
- WS_CLIPSIBLINGS Clips child windows relative to each other; that is, when a particular child window receives a paint message, the WS_CLIPSIBLINGS style clips all other overlapped child windows out of the region of the child window to be updated. (If WS_CLIPSIBLINGS is not given and child windows overlap, when you draw within the client area of a child window, it is possible to draw within the client area of a neighboring child window.) For use with the WS_CHILD style only.
此处另有一文的解释为:
JohnCz06-27-2006, 09:40 PM
WS_xxx are Window styles. Both clip of area of other window when window overlaps another window.
Clip sibling for example will cause MDI child window to paint itself over another child window (sibling) when overlapped. The same will happen
WS_CLIPCHILDREN will do exactly the same when parent overlaps child window.
综上所述
WS_CLIPCHILDREN,使得父窗体在绘制时留出其上的子窗体的位置不去画它,而那片区域留着子窗体去画。
WS_CLIPSIBLING,必须用于子窗体,使得该子窗体在收到WM_PAINT时同时令其共父的诸多子窗体(MSDN讲必须不在该区域,即不与之重叠)也会被PAINT。
//下面也是对WS_CLIPSIBLINGS的理解
所有的overlapped窗口和popup窗口,都有WS_CLIPSIBLINGS 属性,
这些窗口不能在它的sibling窗口上绘图
对于child窗口,如果没有这个属性,它能在它的sibling窗口上绘图
+-----------+
|A |
| +--------+-------
| | | B |
| | C | |
+---+-------+ |
| |
+---------------+
如果A, B都是child窗口,
如果A具有WS_CLIPSIBLINGS属性,
那么A重绘时不会重绘C部分
clip是裁减,去除的意思 相当与英文的Exclude
个人理解:WS_CLIPCHILDREN和WS_CLIPSIBLING都是为了减少重画,减少闪动,保证窗口的重叠部分只有一个窗口来实现PAINT。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义