windows建立的是怎样的一套窗口理论体系,

window窗口有下面的几个基本的分类

  • Overlapped Windows 重叠窗口
  • Pop-up Windows 弹出窗口
  • Child Windows 子窗口
  • Layered Windows 分层窗口
  • Message-Only Windows

什么是层叠窗口

层叠窗口最典型的就是我们的一个应用窗口的主窗口,如果用WS_OVERLAPPEDWINDOW的属性创建了窗口,那么窗口一定会有标题栏,窗口边框,窗口菜单,和最大最小按钮。

层叠窗口是没有父窗口的,也就是用GetParent()获取到的父窗口是NULL

什么是弹出窗口

弹出窗口跟层叠窗口最大的区别就是弹出窗口一般都会有个父窗口的,如我们常用的MessageBox就是弹出窗口,而它的父窗口一般就是我们调用地方的窗口。

弹出窗口是特殊的层叠窗口,通常会是dialog对话框,message对话框

创建窗口的时候指定WS_POPUP风格就会创建弹出窗口

什么是子窗口

子窗口通常会有 WS_CHILD风格,并且只能够被分配到父窗口的客户区域。子窗口必须要有父窗口,父窗口可以是层叠窗口也可以是弹出窗口甚至也可以是其它的子窗口

和父窗口的关系
一个已经存在的子窗口是可以通过SetParent来改变它的父窗口的,也就是可以将子窗口从旧的父窗口的客户区中删除掉,而移动到新的父窗口的客户区域。也就是说子窗口其实是可以随意改变父窗口的

因为子窗口的关系,于是应用程序常常会维持着一个窗口关系链,就像是一个族谱一样。我们可以使用IsChild来判断一个窗口是否是另一个窗口的子窗口

什么是分层窗口

使用分层窗口能够显著的提升拥有混合形状的窗口的性能和视觉效果。这些窗口可能会有动态形状,或者你希望使用alpha混合效果,分层窗口都是不错的选择。系统能够自动的组合并且重绘分层窗口和基本的应用窗口。因此分层窗口能够被平滑的渲染,并且不会有典型混合窗口区域的闪烁的情况。此外分层窗口还能够有部分窗口半透明的效果,这是因为alpha效果的混合

也就是在多窗口叠加的时候使用这个属性?

分层窗口实际上一种在Windows下能够自动地与非活动窗口进行合成的一种窗口.

利用分层窗口可以实现不规则窗口和窗口的Alpha混合效果。操作系统自动混合和重画分层窗口而且平滑渲染和没有抖颤。

分层窗口的特点就在于,它将窗口的绘制操作进行了重新定义::【由操作系统(而不是应用程序),完成重绘操作,完成的方式是"合成":将窗口看成一副位图,窗口外形的变化只是"位图"的变化!而不需要非得通过对WM_PAINT消息来进行.这样就能够保证分层窗口在概念上包括两层含义:与传统相比,这种窗口从外观上看起来恩奇怪(它可以是透明或者半透明的,或者是异性的);二是【重定向】:对窗口的重绘操作不需要你手工添加代码来维护,系统会自动将重绘操作在后台完成!

http://msdn.microsoft.com/en-us/library/ms997507.aspx

什么是“仅消息”窗口

一个“仅消息”的窗口允许你发送和接收消息。它是不可见的,没有z序,不能够被枚举,并且不能接收广播消息。这种窗口只是简单的派遣(中转)消息。


总参考:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#types
http://bbs.csdn.net/topics/390716333?page=1


watermelon
179 声望7 粉丝

小技能:C++,Python,Sqlite,WTL,Linux,Nginx,Windows,MFC