Windows窗口绘制、窗口类型小结
发布日期:2021-10-20 09:40:04 浏览次数:8 分类:技术文章

本文共 1173 字,大约阅读时间需要 3 分钟。

一、绘图
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:用于父窗口。设置了这个属性,当父窗口进行绘制时,子窗口的区域父窗口不负责进行绘制,子窗口自行绘制。

转载地址:https://blog.csdn.net/up2wing/article/details/17486041 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:LNK2001:无法解析的外部符号 错误常见解决方法
下一篇:关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月08日 14时54分29秒