窗口,父窗口parentwindow,所有者窗口ownerwindow
参考文档:http://www.cnblogs.com/fwycmengsoft/p/4026592.html
一、
parent:创建者,owner:所有者
小玉的父母生下小玉,养到8岁,卖给贾府当丫头
小玉的父母是parent,贾府是owner
二、
1.Pop-up窗口: 一个弹出窗口是必须具有WS_POPUP属性的窗口,弹出窗口只能是一个Top-Level窗口,不能是子窗口,弹出窗口多用于对话框和消
息框,也可以用于应用程序的主窗口, 弹出窗口可以不必具有标题栏
2.Overlapped窗口: 一个重叠窗口是一个必须具有WS_OVERLAPPED属性的窗口,也就是一个重叠窗口必须具有边框,标题栏,客户区域。重叠窗口
可以是一个子窗口,也可以是一个Top-Level窗口,重叠窗口一般都用于一个应用程序的主窗口
3.Top-Level窗口: 就是没有WS_CHILD属性的窗口,所有的Top-Level的父窗口为桌面窗口。并不是所有的Top-Level的窗口都在系统的任务栏中
显示,只有所有者窗口为NULL的Top-Level窗口才能在任务栏中显示窗口的标题
4.Child窗口: 具有父窗口的窗口叫子窗口, 子窗口必须具有WS_CHILD属性,同时子窗口也可以有子窗口,子窗口可以是一个重叠窗口,但不能是
一个弹出窗口。子窗口只能包含在父窗口的客户区,不能移出到父窗口客户区外,而且子窗口也不可能成为活动窗口,也不可能
将子窗口的标题显示在任务栏上。同时子窗口的最大化和最小化都在父窗口中显示,在建立一个子窗口时所指定的RECT是以父窗
口的客户区的左上角为原点。而建立一个非子窗口时所指定的RECT是以屏幕为坐标原点的。子窗口可以有系统菜单,但不能有菜
单栏.子窗口在父窗口销毁前被销毁,在父窗口隐藏前被隐藏,在父窗口显示后被显示,
5.Desktop窗口: 就是桌面,桌面窗口是一个特殊窗口,他既不是一个子窗口,也不是一个重叠窗口,也不是一个弹出窗口。
6.Parent窗口: 具有子窗口的窗口叫父窗口,父窗口销毁前所属的子窗口将自动被销毁。父窗口在最小化时,其子窗口也会被最小化,但不隐藏
而父窗口在恢复时其子窗口也会被恢复.
7.Owner窗口: 只有重叠窗口和弹出窗口才能是Owner窗口,子窗口不能为Owner窗口,Owner窗口销毁前,他的所有的Owned窗口都将被自动销毁,
当Owner窗口隐藏时他的所有Owned窗口不会隐藏。但当Owner最小化是他的Owned窗口会被隐藏。一个Owner窗口的所有Owned 窗口都将在Owner窗口的前面显示,而不会在其后面显示。
8.Owned窗口: 一个Owned窗口总是在Z-Order顺序中一般是在他的Owner窗口之前,Owned窗口的生命可以被他的Owner窗口控制,Owned窗口的显
示并不局限于他的Owner窗口区域,一个Owned窗口在建立后不能改变他的owner窗口,子窗口,弹出窗口,重叠窗口都可以做Owned
窗口。
9.窗口的Z-ORDER:
10.message-only窗口: 消息窗口不能被显示,不能接受键盘和鼠标消息,不会接收广播来的消息,同时消息窗口也不会被列举,不会出现在窗口的
Z-Order顺序中。其他的于一般窗口一样。能接收和发送消息。重叠,弹出,子窗口都能为消息窗口
11.background窗口: 非foreground窗口就叫background窗口
12.foreground窗口: 如果用户正某个线程建立的窗口上时,这时这个线程称为前台线程,这个窗口则称为前台窗口,此时其他的线程都称为后台
线程,后台线程的窗口则称为后台窗口, 前台线程的优先级将必后台线程的优先级要稍微高一点。当一个窗口成为前台窗
口时,这个窗口也成为了活动窗口。系统有一个RIT线程来维护硬件输入队列SHIQ,每个GUI线程都维护者一个虚拟输入消
息队列,而且在一个时间内只有一个线程的虚拟输入队列于SHIQ相联系,则这个于SHIQ相联系的线程就叫前台线程.
13.active窗口: 活动窗口是用户正在操作的一个Top-Level窗口,活动窗口一般放置在Z order的顶端,并且窗口的标题栏颜色高亮显示。只有顶
层窗口才能作为活动窗口,当用户在一个子窗口上工作时,则子窗口所属的一个Top-Level父窗口成为活动窗口,在一个时间
内只有一个顶层窗口是活动窗口,活动窗口就是当前正接收键盘和鼠标输入的窗口
14.disabled窗口: 不能响应键盘和鼠标输入的窗口
15.visible窗口: 不可看见的窗口
三、
确定窗口的父窗口和所有者窗口
在调用CreateWindow(Ex)函数来建立窗口时,根据hWndParent和dwStyle来确定一个窗口的父窗口和所有者窗口,下面根据hWndParent是否为NULL来区分:
1.hWndParent == NULL (必须是建立非WS_CHILD的窗口,才能hWndParent为NULL)
对于有WS_CHILD的dwStyle来说,hWndParent不能为NULL, 因此主要是建立重叠窗口和弹出窗口的情况,在这种情况下建立的窗口的父窗口将是系统的桌面窗口,而窗口的所有者窗口则是NULL。
2. hWndParent != NULL
对于有WS_CHILD的dwStyle来说,hWndParent就是新建窗口的父窗口,而新建窗口的所有者窗口为NULL; 对于没有WS_CHILD的重叠窗口或者弹出窗口来说,新建窗口的父窗口将为NULL, 而hWndParent则是新建窗口的所有者窗口, 只有hWndParent是一个重叠的和弹出的窗口才有资格成为一个所有者窗口,因此若hWndParent为桌面窗口时,则新窗口的所有者窗口为NULL, 而若当hWndParent为一个子窗口时,则新建窗口的所有者窗口是hWndParent窗口的Top-Level父窗口。
四、
在DREEATEWINDOW方法中,已经决定了父窗口或所有者窗口.
子窗口的父窗口必不为空,但其所有者必为空.
重叠窗口和弹出窗口如果HWNDPARENT不为空,则是其所有者窗口,它们的父窗口必空.
如此一来,子窗口必有父窗口,必无所有者窗口. 重叠,弹出窗口可能有所者窗口,一般无父窗口.
窗口,父窗口parentwindow,所有者窗口ownerwindow的更多相关文章
- mfc窗口,父窗口parentwindow,所有者窗口ownerwindow 区别
一. parent:创建者,owner:所有者 小玉的父母生下小玉,养到8岁,卖给贾府当丫头小玉的父母是parent,贾府是owner 二. 1.Pop-up窗口: 一个弹出窗口是必须具有WS_POP ...
- windows窗口分析,父窗口,子窗口,所有者窗口
(本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...
- flex 在父窗口监听弹出窗口里的某个按钮被点击
flex 在父窗口监听弹出窗口里的某个按钮被点击 这样可以从子窗口拿回数据在父窗口处理数据,不必再子窗口中处理.在某些情形下省去了不少麻烦. /** * 右键菜单项单击事件 * changed by ...
- Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了 ...
- Android窗口管理服务WindowManagerService对窗口的组织方式分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8498908 我们知道,在Android系统中, ...
- 窗口嵌入到另一个窗口(VC和QT都有)
1.用vc新建一个dialog1工程.属性默认. 2.insert一个dialog2,改为child. 3.在dialog1中包含dialog2头文件,在一个按钮事件中显示dialog2: Cdial ...
- QT在子窗口外单击关闭子窗口
网上查到了好多种方法,1.添加过滤器(eventFilter),2.重写鼠标单击事件,这两种方法都要判断鼠标单击位置是不是在子窗口上.而且在可编辑控件上如(下拉框.文本编辑框等),父窗口会直接传递到可 ...
- Python tkinter模块弹出窗口及传值回到主窗口操作详解
这篇文章主要介绍了Python tkinter模块弹出窗口及传值回到主窗口操作,结合实例形式分析了Python使用tkinter模块实现的弹出窗口及参数传递相关操作技巧,需要的朋友可以参考下 本文实例 ...
- (java)selenium webdriver学习--打开新窗口,并判断新窗口是否与目标窗口一致
描述:selenium webdriver学习--打开新窗口,并判断新窗口是否与目标窗口一致,若一致则切换到该窗口并获取标题 跳出if判断,获取父级标题,并关闭 HTML标签不太明显时,可以用路径表示 ...
随机推荐
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...
- std::vector push_back报错Access violation
C/C++ code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include < ...
- SpUtil多样加密存储,兼容android9.0
代码地址如下:http://www.demodashi.com/demo/15058.html 前言 在android系统不断升级的过程中,Sharepreferences存储出现多中问题,其中有些是 ...
- vs visual stdio 调试 显示指针为数组
假如有这样一个指针 int * idx16 那么要想在调试里面显示为数组并且要显示的数组元素个数为24的话,则要写成idx16,24 如下图
- OpenCV 对矩阵进行掩码操作
Mask operations on matrices https://docs.opencv.org/master/d7/d37/tutorial_mat_mask_operations.html ...
- [svc]linux紧急情况处理
如何判断 Linux 服务器是否被入侵? w-last-history top-lsof-strace netstat CPU利用率很高 800%爆了 netstat find 文件 查/etc/rc ...
- npm WARN React-native@0.35.0 requires a peer of react@~15.3.1 but none was installed.
解决方案: 方法一: npm install -save react@~15.3.1 方法二:在package.json中可以添加依赖 "dependencies": { &quo ...
- IOS-企业开发人员账号&邓白氏码申请记录
Apple开发人员账号分三种,个人.公司,还有企业.个人和公司都称为标准账号. 另一种是教育机构的账号. 账号介绍 个人和公司的就不说了.如今仅仅说企业账号 首先是申请企业账号的地址: https:/ ...
- C++ 函数模板的返回类型如何确定?
函数模板 #include <iostream> // 多个参数的函数木板 template<typename T1, typename T2> T2 max(T1 a, T2 ...
- Deepin 系统下安装VMware并激活
1.打开深度商店:搜索VMware,并下载安装. 2.打开启动器:点击VMware-install. 3.填写管理员密码. 4.下一步,完成安装. 5.打开VMware Workstation,输入密 ...