搞清楚系列:什么是一个子(child)窗口
作者:BlogUpdater |
时间:2020-09-12 |
浏览:2498 |
评论已关闭 条评论
“还”有这么一个简单的问题
搞了这么久的Windows开发,我依然会频繁地对另一个问题比较茫然:什么是一个子(child)窗口?
那,今天就再来叨叨一下。
一个子窗口是一个设置了WM_CHILD的窗口,并且它又如下属性:
> 它有一个父窗口
> 它始终显示在父窗口的客户区(不能显示到父窗口外面)
> 如果父窗口被移动了,子窗口也会跟着移动(子窗口相对于父窗口的位置不会改变)
更多解析
> 为了创建一个子窗口,我们必须给这个窗口设置WM_CHILD属性并在CreateWindow(Ex)调用中传入一个有效的父窗口句柄。如下所示:

> 通常,子窗口的位置是通过相对于父窗口客户区来指定的。在上面的例子中,5和6指的是相对于父窗口客户区左上角的原点的坐标偏移。下面是两个具体的例子:


> 对于MDI子框架窗口,还需要设置额外的扩展属性:WM_EX_MDICHILD
> WM_CHILDWINDOW和WM_CHILD这两个属性等效
> 通常,控件(例如按钮,列表框等)都是子窗口
> 所有的没有带有WM_CHILD属性的窗口都是top-level窗口
> 请不要把子窗口和被拥有窗口搞混了:尽管一个窗口可以被拥有(它有一个父窗口),但是它可能没有设置WM_CHILD属性。
总结
请不要混淆:WM_CHILD window(设置了WM_CHILD)和owned window(有父窗口)。
今日份叨叨完毕。
最后
本文来自”代码大拿”(CodeGuru):《Windows SDK: What is a child window?》
如需转载,请注明来自:拓扑梅尔智慧办公平台 | TopomelBox 官方站点
- 下一篇: 一年一度的CppCon它又来了
- 上一篇: 搞清楚系列:什么是一个顶级(top-level)窗口
相关推荐
- 如何寻找IE浏览器的执行路径
- Posted on 09月25日
- 使用Visual Studio调试Linux Core Dump
- Posted on 09月19日
- 让我们从头开始搞一个程序,好吗?
- Posted on 11月02日
- VS2022 17.8: Build Insights 中的函数视图
- Posted on 11月26日



评论已关闭。