漫漫开发路|搞清楚系列:什么是一个顶级(top-level)窗口
【漫漫开发路|搞清楚系列:什么是一个顶级(top-level)窗口】_本文原题为:搞清楚系列:什么是一个顶级(top-level)窗口
有这么一个简单的问题
搞了这么久的Windows开发 , 我依然会频繁地对这个问题比较茫然:什么是一个顶级(top-level)窗口?
那 , 今天就来叨叨一下 。
一个top-level窗口是一个不是子窗口的窗口(绕口令来了) 。 说白了 , 就是说 , 这个窗口不带有WM_CHILD属性 。
更多解析
>top-level窗口和子窗口不同 , 一个top-level窗口可以被显示在屏幕的任何位置 , 而子窗口一般只能显示在它的父窗口的客户区 。
>有很多文档里定义top-level窗口为:一个没有父窗口的窗口 。 这个说法可能到导致某种误解:很多人认为使用CreateWindow(Ex)并传递一个有效的父窗口句柄可以创建一个”有父窗口”的窗口 。 如果根据这个定义 , 则这个窗口就不是一个top-level窗口 。
>一个top-level窗口可以被或者不被拥有 , 但是它永远也不可能是一个子窗口 。 我们可以说一个窗口有一个拥有者 , 但是它没有一个父窗口 。
>top-level窗口可以是一个重叠(Overlapped)窗口(带有WS_OVERLAPPED属性 , 通常作为应用程序主窗口),也可以是一个弹出式窗口(带有WM_POPUP属性 , 通常用于各类弹出消息框) 。
>一些涉及窗口操作的API如CreateWindow(Ex),MoveWindow,SetWindowPos , 总是使用屏幕坐标系(左边原点位于屏幕左上角) 。
俩例子儿
下面创建了一个top-level窗口 , 因为它没有设置WM_CHILD属性 。 同时 , 它没有设置父窗口 , 所以它没有被拥有 。
文章图片
下面也是创建了一个top-level窗口 , 因为它没有设置WM_CHILD属性 。 同时 , 它设置了父窗口 , 所以它被这个父窗口所拥有 。
文章图片
总结
经过这么一番咀嚼 , 应该是搞明白什么是一个top-level窗口了吧?
今日份叨叨完毕 。
最后
本文来自”代码大拿”(CodeGuru):《WindowsSDK:Whatisatop-levelwindow?》
文章图片
- iphone12|iPhone 12赶在双十一前发布,可以等,但先搞清楚这三个问题!
- iphone12|解读iPhone12定价策略,降价的理由其实说得清楚了
- 电力工程技术|真空断路器介绍,一文讲清楚!,低压柜配置
- 漫漫异世界|火影学习魔法的副作用是什么另外两个大圣的地方呢
- |“平行世界”你经历过吗?她都惊了,我也解释不清楚!
- 那一段泪痕隐藏微笑|发现路边有异样,弄清楚后,美女做法让人敬佩,美女早上出门买菜
- 车驰夜幕|华为、荣耀有何区别?网友:终于搞清楚了,同样是“华为的手机”
- iphone12|这下终于清楚了!AMD公开发话,美国意图被“揭开”
- 星新看世界|前途难测!华为手机前路漫漫!网友:商家大量囤积绝版华为手机!
- 微信|微信更新,你那些没用的联系人可以一键清楚了!