简单问题 WS_CLIPCHILDREN WS_CLIPSIBLINGS 到底什么意思?msdn没看懂

babala2009 2009-02-24 04:56:47
简单问题 WS_CLIPCHILDREN WS_CLIPSIBLINGS 到底什么意思?msdn没看懂?
最好能举例 然后总结一下


谢谢
...全文
2355 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸萌 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 robert_duan 的回复:]
所有的overlapped窗口和popup窗口,都有WS_CLIPSIBLINGS 属性,
这些窗口不能在它的sibling窗口上绘图

对于child窗口,如果没有这个属性,它能在它的sibling窗口上绘图

+-----------+
|A |
| +--------+-------
| | | B |
| | C | |
+---+-------+ …
[/Quote]
正确,所有的overlapped窗口和popup窗口,都有WS_CLIPSIBLINGS 属性,即WS_CLIPSIBLINGS 仅对子窗体有效,对所有的overlapped窗口和popup窗口已经固定为WS_CLIPSIBLINGS = True
cnzdgs 2009-02-24
  • 打赏
  • 举报
回复
设置WS_CLIPCHILDREN风格后,窗口的绘制不影响其子窗口(具有WS_CHLID风格的窗口)。
设置WS_CLIPSIBLINGS风格后,窗口的绘制不影响其兄弟窗口,本窗口要具有WS_CHLID风格才有效。
robert_duan 2009-02-24
  • 打赏
  • 举报
回复
WS_CLIPCHILDREN,使得父窗体在绘制时留出其上的子窗体的位置不去画它,而那片区域留着子窗体去画。
WS_CLIPSIBLING,必须用于子窗体,使得该子窗体在收到WM_PAINT时同时令其共父的诸多子窗体(MSDN讲必须不在该区域,即不与之重叠)也会被PAINT。
逸萌 2009-02-24
  • 打赏
  • 举报
回复
WS_CLIPCHILDREN Excludes the area occupied by child windows when you draw within the parent window. Used when you create the parent window.
在parent window重绘时不对子窗体占有的区域进行绘制。WS_CLIPCHILDREN仅对父窗体。
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.

WS_CLIPSIBLINGS 仅对子窗体。在重绘时不对兄弟窗体占有的区域进行绘制(在相互重叠时)。

可以在Dialog中测试:Dialog的背景色和child windows的背景色全都不一样,然后仅对父窗体改变WS_CLIPCHILDREN, 对子窗体改变WS_CLIPSIBLINGS为True/False
查看效果!

父窗体,child window1,child window2共8种方式
逸萌 2009-02-24
  • 打赏
  • 举报
回复
WS_CLIPCHILDREN Excludes the area occupied by child windows when you draw within the parent window. Used when you create the parent window.
在parent window重绘时不对子窗体占有的区域进行绘制。WS_CLIPCHILDREN仅对父窗体。
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.

WS_CLIPSIBLINGS 仅对子窗体。在重绘时不对兄弟窗体占有的区域进行绘制(在相互重叠时)。

可以在Dialog中测试:Dialog的背景色和child windows的背景色全都不一样,然后仅对父窗体改变WS_CLIPCHILDREN, 对子窗体改变WS_CLIPSIBLINGS为True/False
查看效果!

父窗体,child window1,child window2共8种方式
robert_duan 2009-02-24
  • 打赏
  • 举报
回复
所有的overlapped窗口和popup窗口,都有WS_CLIPSIBLINGS 属性,
这些窗口不能在它的sibling窗口上绘图

对于child窗口,如果没有这个属性,它能在它的sibling窗口上绘图

+-----------+
|A |
| +--------+-------
| | | B |
| | C | |
+---+-------+ |
| |
+---------------+
如果A, B都是child窗口,
如果A具有WS_CLIPSIBLINGS属性,
那么A重绘时不会重绘C部分

clip是裁减,去除的意思 相当与英文的Exclude

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧