Windows窗口绘制、窗口类型小结

一、绘图
1、更新区域(update region)
    1)更新区域是窗口中过期或无效,需要重绘的区域。系统依靠更新区域向应用程序发送WM_PAINT消息。
        WM_PAINT产生的条件:有需要更新的区域,并且消息队列中没有其它消息时。
    2)相关API:
        InvalidateRect/InvalidateRgn:无效化一块区域;
        ValidateRect/ValidateRgn:有效化一块区域,将这块区域从更新区域中去掉。
        GetUpdateRect/GetUpdateRgn:获得更新矩形/区域。
        UpdateWindow:如果更新区域非空,立即发送WM_PAINT消息;
        RedrawWindow:不管更新区域是否为空,立即发送WM_PAINT消息。

二、窗口
1、窗口的类型
    Windows窗口分为3种类型:
     #define WS_OVERLAPPED             0x00000000L
       #define WS_POPUP                       0x80000000L
       #define WS_CHILD                       0x40000000L
    Child窗口是其它窗口的子窗口;
    popup窗口是弹出窗口,适合做主窗口;
    overplapped是重叠窗口,默认有标题栏和边框。即使显示去掉WS_CAPTION和WS_BORDER这些风格,Windows还是会加上标题栏和边框。适合做主窗口。重叠窗口是top-level窗口,不能成为子窗口。
2、窗口与窗口的关系
    1)Destop窗口
     桌面窗口,一个特殊的窗口,可以理解为就是桌面。
    2)top-level窗口
    没有WS_CHILD属性的窗口,父窗口一般为Desktop或者NULL。Windows发送某些消息的时候一般要求是top-level窗口,如HWND_BROADCAST、WM_DISPLAYCHANGE等。
    3)子窗口
    具有WS_CHILD属性的窗口为子窗口。子窗口只能出现在父窗口的客户区内。如果要使一个窗口随另一个窗口一起移动,可以考虑使其成为另一个窗口的子窗口。需要注意的是,当父窗口移动时,子窗口不会收到WM_MOVE等消息,因为子窗口相对于父窗口并没有移动。
    4)parent和owner关系
    这个暂时还没发现实际中owner有啥用,主要是parent-child关系常用。
3、常用窗口风格
    WS_CLIPSIBLINGS:用于兄弟窗口,即有相同父窗口的子窗口。设置了该风格的子窗口需要重绘(收到WM_PAINT消息)时,将剪裁其它子窗口的重叠部分,被遮挡的区域不进行重绘。如果没有这个属性,子窗口绘制时可能会绘制到兄弟窗口的客户区上。因此所有的top-level窗口都具有这个属性。
    WS_CLIPCHILDREN:用于父窗口。设置了这个属性,当父窗口进行绘制时,子窗口的区域父窗口不负责进行绘制,子窗口自行绘制。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值