再议WS_CLIPSIBLINGS
来源:互联网 发布:安卓版视频转换软件 编辑:程序博客网 时间:2024/05/16 08:27
近来为了解决一个bug.对WS_CLIPSIBLINGS做了深入的一番研究.
先看一个奇怪的现象.
先移动static1,再移动static2后.会出现重影现象.
如图:
首先看一下,static1和static2的属性.发现static1和static2都没有WS_CLIPSIBLINGS属性.
如果我为static1加上WS_CLIPSIBLINGS属性之后,就好了.
如图:
用小沈阳的一句名言就是,这是为什么尼
之前曾经转载过一遍关于WS_CLIPSIBLINGS的文章.不过当时理解不够深入.
现在写了一个demo测试了一下.
现在具体解释一下WS_CLIPSIBLINGS的意思.
具有WS_CLIPSIBLINGS属性的子窗口,当移动子窗口时,并不会移动在其z orde之上并且与其有重叠的窗口的部分.也就是会clip掉这些区域.但是是有条件的,1比现是z order在其之上,2是有重叠部分.
不具有WS_CLIPSIBLINGS属性的子窗口,当移动子窗口的时候,处理会比较简单,不管其他窗口的z order在我之上还是之上,统统移动.
注意这里用的是移动,而不是重绘.这里明确一下这两个概念,移动是window会直接在内存中对数据进行位的操作.而重绘是发生WM_PAINT消息来重绘.上面所述的两种情况,移动的子窗口是都不会收到WM_PAINT消息的.
另外,就是关于子窗口移动时,子窗口重绘的问题.
当某子窗口A的z order在B之上时,如果移动A,且A移动到的位置与B有重叠区域.则A并不会收到WM_PAINT消息.也就是说并不会重绘.
B也不会受到WM_PAINT消息.
当某子窗口B的z order在A之下,且部分区域被A覆盖,这时,如果移动A,A不会收到WM_PAINT消息,而B会收到WM_PAINT消息.
很容易理解window为什么会这样处理,只有在需要重绘的时候才会发送WM_PAINT消息.
windows代码估计都经过无数蹂躏了.这应当设计应该是经过反复设计和测试的.
写的有点乱,不知道你看明白没有
- 再议WS_CLIPSIBLINGS
- WS_CLIPCHILDREN & WS_CLIPSIBLINGS
- 再议Exception
- 再议Static
- 再议PCA
- 再议Seconds_Behind_Master
- 再议关键字
- android 再议
- 再议raw_input
- 再议封装
- Re: WS_CLIPSIBLINGS是什么意思
- WS_CLIPSIBLINGS是什么意思(zt)
- WS_CLIPCHILDREN与WS_CLIPSIBLINGS
- WS_CLIPCHILDREN与WS_CLIPSIBLINGS
- WS_CLIPSIBLINGS WS_OVERLAPPED WS_POPUP
- WS_CLIPCHILDREN和WS_CLIPSIBLINGS
- WS_CLIPCHILDREN和WS_CLIPSIBLINGS
- WS_CLIPCHILDREN,WS_CLIPSIBLINGS含义
- 什么情况下应该建立索引,索引优化及分析
- 解决ubuntu-9.10中flash乱码的问题 - Aland·Sun
- Mysql Error #2002: Can't connect to local
- C3P0错误APPARENT DEADLOCK!!!解决
- SRM 465(DIV1 DIV2)
- 再议WS_CLIPSIBLINGS
- MySQL表类型简单对比
- mysql_query("SET character_set_results=UTF8",$conn);
- vs2010 ultimate和Team Foundation Server 2010下载地址
- VS2010正式旗舰版ISO下载地址和安装要求
- 如何紧急恢复受损的Windows系统
- GCC G++ C C++的区别
- 学术资料账号密码全集汇总
- 一只鸭子带来的震撼 - Aland·Sun