父窗口与物主窗口

父窗口与物主窗口

 

 

在windows形形色色的窗口家族中,每个窗口也只能是三种基本类型之一:

1.    重叠窗口(Overlapped)

2.    弹出窗口(Pupup)

3.    子窗口    (Child)

当调用CWnd的Create/CreateEx或是CDialog的Create创建一个基于以上三种类型之一的窗口时,会要求同时指定Parent或pParentWnd参数(以下统称Parent)。这其中涉及到了父/子窗口(CHILD & PARENT) 和 物主/从属窗口(CHILD & OWNER) 的概念差别。个人理解就像是父亲/儿子 同 监护人/养子 对之间的关系。其具体差别请参考以下行为列表。

 

1.    父/子窗口

若新创建的窗口类型为子窗口,则参数Parent须指定为其父窗口,且不能为NULL.

 

2.    物主/从属窗口

若新创建的窗口为重叠窗口或弹出窗口,参数Parent指定为其物主窗口,其值为NULL时,物主窗口为桌面窗口。

 

 

父/子窗口

 

物主/从属窗口

 

移动窗口

 

子随父

 

分离(两者无相互影响)

显示位置

子在父内

分离

销毁窗口

子随父

从属随物主

隐藏

子随父

分离

父最小化

子被隐藏

从属被隐藏

子最小化

分离

分离

 

父/子窗口示例子窗口无法“逃离”到父窗口之外

 

 

物主/从属窗口示例:从属窗口位置不受物主窗口约束

 

 

 

注:

1.   一个子窗口可能是另一个子窗口的父窗口,但绝不可能是一个物主窗口。如果试图使一个子窗口成为一个物主窗口,那么系统只能使那个子窗口的最顶层窗口作为物主窗口。

2.   CWnd::SetParent 可改变父窗口。

3.   CWnd::SetOwner 可改变物主窗口。

 

 

 

应用:

         在基于对话框的应用程序中,若需要在多个对话框之间进行切换,可建立一个父窗口并将其它所有窗口作为其子窗口嵌入其中进行管理控制,以避免个对话框之间移动等问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值