WS_CLIPCHILDREN与WS_CLIPSIBLINGS 收藏

简介: 英文单词解释clip:夹子、子弹夹、回形针;夹住,修剪sibling:同胞兄弟或姐妹overlapped:重叠这两个Window Stype的特性与异同素来不太清楚,今日作一笔记:MSDN的解释为:WS_CLIPCHILDREN   Excludes the area occupied by ch...
英文单词解释
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.  

此处另有一文的解释为:
 
JohnCz
06-27-2006, 09:40 PM
It is not a property per se.
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。
目录
相关文章
|
SQL 存储 分布式计算
从0到1介绍一下开源大数据比对平台dataCompare
从0到1介绍一下开源大数据比对平台dataCompare
921 0
|
安全 程序员 数据处理
CreateFileMapping函数详解
CreateFileMapping函数详解
|
12月前
|
算法 数据安全/隐私保护 C++
超级好用的C++实用库之MD5信息摘要算法
超级好用的C++实用库之MD5信息摘要算法
289 0
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架
【5月更文挑战第14天】Phaser是开源的2D游戏引擎,适合HTML5游戏开发,内置物理引擎和强大的图形渲染功能,适用于消消乐等2D游戏。Three.js是基于WebGL的3D库,用于创建3D场景和应用,支持各种3D对象和交互功能,广泛应用于游戏、可视化等领域。选择框架取决于项目需求,2D选Phaser,3D选Three.js。
214 4
|
设计模式 数据可视化 关系型数据库
设计之美-揭秘设计模式、原则与UML的魔法
设计模式、设计原则和UML是软件工程设计中的核心要素。设计模式为常见问题提供经验证的解决方案,复用性高且提升开发效率。设计原则指导我们创建灵活、可维护和可扩展的系统,确保代码质量和长期可维护性。UML(统一建模语言)则是一种强大的可视化工具,用于描述、构建和文档化软件系统的结构和行为。它帮助开发者更清晰地理解系统架构和组件间关系。综合应用设计模式、设计原则和UML,能够显著提高软件开发的效率和质量,减少维护成本,为复杂系统的设计和实施提供有力支持。
239 0
设计之美-揭秘设计模式、原则与UML的魔法
|
Java 关系型数据库 MySQL
Seata常见问题之Seata1.7.1不支持jdk1.8如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
存储 缓存 NoSQL
轻松突破文件IO瓶颈:内存映射mmap技术
轻松突破文件IO瓶颈:内存映射mmap技术
《C++避坑神器·十三》保留多少位小数和去掉小数位后面的零
《C++避坑神器·十三》保留多少位小数和去掉小数位后面的零
514 0
|
编译器 程序员 C++
c++新特性:=default
c++新特性:=default
302 0
|
C# Windows
.NET一个线程更新另一个线程的UI(两种实现方法及若干简化)
原文:.NET一个线程更新另一个线程的UI(两种实现方法及若干简化) 本片博文接上一篇:.NET多线程执行函数,给出实现一个线程更新另一个线程UI的两种方法。 Winform中的控件是绑定到特定的线程的(一般是主线程),这意味着从另一个线程更新主线程的控件不能直接调用该控件的成员。
1690 0