参考文章:http://www.cnblogs.com/dhatbj/p/3288152.html
一、桌面窗口:
DesktipWindow,是所有窗口的父窗口,通过hwnd=::GetDesktopWindow()获取。
二、窗口样式:
只有三种窗口:重叠窗口(WS_OVERLAPPED)、弹出窗口(WS_POP)、子窗口(WS_CHILD,其中弹出窗口不能是子窗口)。
重叠窗口和弹出窗口统称为顶层窗口。
因此窗口样式再次分为:顶层窗口和子窗口。
可以这么说
三、topmost窗口:
topmost窗口是具有WS_EX_TOPMOST风格的窗口,是窗口的一种扩展风格,topmost窗口只能是顶层窗口,不能是子窗口。
具有topmost风格的窗口的顶层窗口的Z-ORDER比不具有该风格的要小,显示在前面。
四、Z-Order:
z-order在前(小)的窗口先显示出来,先显示出来的窗口会被后显示出来的窗口覆盖。
每个父窗口都有一个链表,用于保存子窗口,该链表保存子窗口的前后顺序就是该子窗口的z_order的顺序。z_order在前(z_order小)的窗口先显示出来。
对于顶层窗口,z_order在前的窗口显示在最前面,因为顶层窗口默认强制加了WS_CLIPSIBLINGS风格,导致后面刷新的窗口被覆盖的地方不刷新,使得z_order在前的窗口显示在最前面。
对于子窗口,情况与顶层窗口相反,z_order在前的窗口被在后的窗口覆盖。因为它默认没有添加WS_CLIPSIBLINGS风格。
而子窗口的z_order比父窗口的z_order要大,因为只有父窗口显示出来了才能显示子窗口,子窗口在后面显示表示它的z_order要大。
HWND hwnd=::GetWindow(hWnd_rel,flag)用于获取对hWnd_rel有flag关系的窗口的句柄。