WINDOWS下的窗口及风格

以下内容是我在近一段时间工作中对windows系统中窗口概念的理解和认识,主要是对容易引起混淆的WS_CHILD、WS_POPUP、WS_OVERLAPPED等风格的理解,有不当之处,大家直说无妨!

=====================================================


Child窗口和top-level窗口

Windows窗口总体上可以分为2类,一类带有WS_CHILD风格的窗口,我们称之为Child窗口;另一类是不带WS_CHILD风格的
窗口,称为top-level窗口,这类窗口又分为弹出式窗口(Popup)和重叠窗口(Overlapped)。

【坐标系】
Child窗口使用CLIENT坐标,top-level窗口则使用SCREEN坐标

【父窗口】
1. child窗口必须拥有parent,top-level窗口则可有可无;
2. child窗口只能显示在parent的客户区内,超出部分无法显示;top-level窗口的显示区域则不受parent限制
3. child窗口和top-level窗口都会覆盖住与parent窗口的重叠区域

【显示效果】
1. top-level窗口默认带有边界(border)、标题栏(title bar)、系统菜单(system menu);child窗口默认则没有
2. child窗口通常作为parent窗口的一个元素,共同完成界面效果;top-level窗口则是独立存在的,独立完成界面效果
3. top-level窗口通常包含若干child窗口;child窗口一定直接或间接的属于某一个top-level窗口

=====================================================

Popup窗口和Overlapped窗口

【概念】
1. Popup窗口指带有WS_POPUP风格的窗口
2. Overlapped窗口指带有WS_OVERLAPPED风格,但是不带WS_POPUP(WS_POPUPWINDOW),或WS_CHILD(WS_CHILDWINDOW)风格的窗口,WS_OVERLAPPED风格经常与WS_POPUP、WS_CHILD等风格联合使用。

【区别】
1. Popup窗口的父窗口可有可无,而Overlapped窗口则一定没有父窗口,即使强制设定parent也是无效的
2. Popup窗口的标题栏(title bar)可有可无,而Overlapped窗口则必须有,微软对Overlapped窗口的解释是带有border和title风格的窗口

【共同点】
1. 都是top-level窗口,都使用SCREEN坐标
2. 默认都具有边框、标题栏、系统菜单等风格

你可能感兴趣的:(WINDOWS下的窗口及风格)