一直对窗口之间的关系有些混乱,遇到需要指定父窗口的函数时常常要考虑很久,究竟父窗口是哪个窗口,遂上网查资料,略有所悟,简记如下:

对话框中的所有控件(比如Button等)都是其子窗口。
        文档/视图结构中,框架窗口是视图窗口的父窗口。
        同时在使用CreateWindow和CreateWindowEx时可以指定父窗口,建立窗口的父子关系。

另外,网上有篇文章讲Windows窗口的层级关系,也颇清楚,故转来备查:

一、windows窗口之间的关系包括所有与被所有关系,父子关系等。
       操作系统为每个窗口实例都分配一个内存空间,该空间被称为窗口实例的信息结构。该结构包含了窗口实例的所有信息,其中有四个窗口句柄:1、本窗口实例的Z_Order顺序最高的子窗口句柄;2、本窗口实例的下一个兄弟窗口的句柄(子窗口之间称为兄弟窗口);3、本窗口实例的父窗口句柄;4、本窗口实例的所有者窗口句柄。
二、桌面窗口(第一层窗口)
        windows初始化时,首先创建一个桌面窗口,其他所有窗口都显示在其上。::GetDesktopWindow()可以取得桌面窗口的句柄。桌面窗口位于系统窗口层次的最上层。
三、顶级窗口(第二层窗口)
       它没有被设置为WS_CHILD风格的窗口,但它是桌面的子窗口。虽然顶级窗口之间存在兄弟关系,但它们之间可以建立一种所有与被所有的关系(所有者窗口和受控窗口)。受控窗口位于所有者窗口前段,即它的Z_Order顺序可以被所有者窗口被激活而提高。所有者窗口最小化时,受控窗口被隐藏。当使用CreateWindow()和CreateWindowEx()创建一个顶级窗口时,参数hWndParent决定所有者窗口,若hWndParent为子窗口,则由系统搜索该子窗口的上级窗口,直到找到最近的顶级窗口,作为被创建窗口的所有者。
四、子窗口(第三层及其以下窗口)
       子窗口以同样的方式和父窗口连接。决定顶级窗口之间的Z_Order顺序的规则,同样适合子窗口之间,即由扩展风格WS_EX_TOPMOST和窗口激活的先后顺序共同决定。
五、重叠窗口与弹出窗口的区别
       它们都是顶级窗口。前者总有标题栏和边框,并且总是自动设置WS_CLIPSIBLINGS风格。调用CreateWindow()和CreateWindowEx()创建重叠窗口时,可以指定默认的窗口尺寸参数,即CW_USEDEFAULT,由系统设置窗口的初始尺寸。弹出窗口同样自动设置WS_CLIPSIBLINGS风格,但其他风格必须专门指定,不可以使用CW_USEDEFAULT作为初始尺寸。

MFC窗口的父子关系和层级关系的更多相关文章

  1. Unity NGUI和UGUI与模型、特效的层级关系

    目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效穿插层级管理 ...

  2. GetParent、SetParent、MoveWindow - 获取、指定父窗口和移动窗口,IsChild - 判断两个窗口是不是父子关系

    提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法. //声明: {获取父窗口句柄} GetParent(hWnd: HWND): HWND; ...

  3. NGUI 层级关系控制

    NGUI元素的遮挡情况是不依赖空间关系,所以在NGUI上添加特效有时候特别蛋疼,特别是美术同学还要依赖空间关系来控制特效效果,那先看看看NGUI的层级是怎么处理的,不过下面的描述都是针对单个相机下的P ...

  4. 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示

    树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...

  5. unity渲染层级关系小结(转存)

    最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这里就把自己解决问题中总结的经验记录下来. Unity中的渲染顺序自上而下大致分为三层. 最高层为Camera层,可 ...

  6. 【吐血分享】SQL Server With As 递归获取层级关系数据

    纯洁的一周又开始了,今天看到一则新闻,笑尿了,和袁友们一起娱乐下 最近两月在做基于Saas模式的人力资源管理产品,平常数据库设计我经常会遇到如下需求场景: 以前商城类网站在设计类型表的时候,设计成单表 ...

  7. CTE计算层级关系

    推广渠道表有ParentID字段,代表上下层级关系.现要统计每个推广员,推广了多少人? --创建表结构,插入测试数据 USE DBA_Monitor GO CREATE TABLE [dbo].[TG ...

  8. [转]NHibernate之旅(9):探索父子关系(一对多关系)

    本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHiberna ...

  9. 第五节:Task构造函数之TaskCreationOptions枚举处理父子线程之间的关系。

    一. 整体说明 揭秘: 通过F12查看Task类的源码(详见下面的截图),发现Task类的构造函数有有一个参数为:TaskCreationOptions类型,本章节可以算作是一个扩展章节,主要就来研究 ...

随机推荐

  1. 外贸中MFQ

    MFQ = Mask Fee Quantity 退掩膜费量Masking charge USD 2000. MFQ 100k in the first year

  2. C# Environment类_获取程序所在机器信息

    一.属性 CommandLine  获取该进程的命令行.CurrentDirectory 获取或设置当前工作目录的完全限定路径.ExitCode 获取或设置进程的退出代码.HasShutdownSta ...

  3. sqlserver 创建索引

    语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO /*实例*/  CREATE NONCLUSTERED INDEX ...

  4. UESTC_方老师的分身 II CDOJ 915

    方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  5. 剑指offer-面试题4.替换空格

    题目:请实现一个函数,把字符串中的每个空格都替换成"%20".例如输入"We are happy." 则输出"We%20are%20happy.&qu ...

  6. Java程序员面试题集(71-85)(转)

    转:http://blog.csdn.net/jackfrued/article/details/17566627 Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言) ...

  7. Eclipse/IDEA中使用Maven创建Web项目报错

    Eclipse中的错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp-1.0.jar:R ...

  8. ORACLE物理存储结构

    1.查看数据库实例基本信息: SQL> SELECT DBID,NAME,CREATED,LOG_MODE,OPEN_MODE,FORCE_LOGGING,CURRENT_SCN,FLASHBA ...

  9. aspnet_regiis 加密/解密 web.config

    加密: @echo off echo web.config c: cd c:\windows\Microsoft.NET\Framework64\v4.0.30319 aspnet_regiis -p ...

  10. CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)(转载)

    在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾斜.移动这四种类型的变形处理,本文将对此做详细介绍. 一.旋转 rotate 用法:transform: rotate(45 ...