Windows 窗口层次关系

合集下载

认识windows7的窗口和对话框

认识windows7的窗口和对话框

认识windows7的窗⼝和对话框认识windows7的窗⼝和对话框⼀、windows7窗⼝的构成及操作1、窗⼝构成在windows7下,程序都在各⾃的窗⼝中运⾏,掌握窗⼝的构成和操作⽅法是熟练使⽤计算机的基础。

应⽤程序的窗⼝虽然千差万别,但所有窗⼝都有着相同的结构并遵循着统⼀的操作规则。

每个程序运⾏后都在屏幕上占⽤⼀块矩形区域,这个区域称作应⽤程序窗⼝。

下图是记事本程序和画图程序在运⾏时的窗⼝。

各部分的结构如图所⽰,它们代表了两种典型的窗⼝。

1)标题栏窗⼝最上⽅的横条称作标题栏,标题栏上⼀般标着当前程序的名称和当前正在处理的⽂档的名称。

2)窗⼝最⼤化、窗⼝最⼩化和窗⼝关闭图标标题栏最右端是三个控制窗⼝的图标,这三个图标分别⽤于窗⼝的最⼤化、最⼩化和关闭。

3)窗⼝控制图标位于窗⼝左上⾓,通过该图标我们可以通过键盘来控制窗⼝的⼤⼩和移动,现很少使⽤。

按Alt+空格键可激活该图标下的菜单。

窗⼝控制菜单如下图所⽰。

激活菜单后可以通过键盘上的光标移动键(箭头键)选菜单项,回车键执⾏菜单命令,从⽽实现通过键盘完成窗⼝操作。

4)⽔平菜单栏/选项卡标签窗⼝标题栏下⽅的⼀⾏⽂字,称作窗⼝的⽔平菜单栏,相隔的每组⽂字都代表⼀组操作命令,也称作菜单项,点击某菜单项后可打开下级菜单,下级菜单也称作下拉菜单,参见下图3中的红框区域。

⽐如我们点击“⽂件”菜单项,则出现与“⽂件”操作相关的下拉菜单,下拉菜单中有⼀组与⽂件相关的操作命令。

Windows7有些程序将菜单栏改成了选项卡标签,虽然也可称作菜单,但选中后并不出现下拉菜单⽽是进⾏功能区的切换。

功能区分类集中存放了程序⽤到的⼤部分⼯具。

这种功能区实际是将菜单命令⽤图形来表⽰了。

下图就展⽰了画图程序的两种功能区。

展⽰了画图程序在选取不同“标签”时窗⼝功能区的变化。

左图是选中“主页”标签后的功能区,右图是选中“查看”标签后显⽰的功能区。

5)窗⼝⼯作区窗⼝的主要区域称作窗⼝⼯作区,不同的程序窗⼝⼯作区显⽰的内容不同,记事本程序窗⼝⼯作区⽤于输⼊⽂字,画图程序则⽤来绘制图形。

窗口之间的主从关系及Z-Order

窗口之间的主从关系及Z-Order

窗口之间的主从关系与Z-Order围(Scope)讨论Windows操作系统中窗口之间的关系(relationship between windows),除特别指明的部分之外,适用于各版本桌面平台和Windows Mobile平台。

概述(Summary)窗口(Window)是Windows操作系统中用来显示信息和接受用户输入的基本单元(Block)。

负责管理窗口相关功能的操作系统部件被称为窗口管理器(Window Manager)。

Windows操作系统初始化时会生成一个窗口,叫做桌面窗口(Desktop Window),调用GetDesktopWindow函数可获得它的句柄。

桌面窗口会覆盖整个屏幕,所有其它窗口都在其之上显示。

窗口类型(Window Type)Windows中有3种类型的窗口:层叠窗口(Overlapped Window)、弹出窗口(Popup Window)、子窗口(Child Window),在生成窗口(调用CreateWindowEx)时分别以WS_OVERLAPPED、WS_POPUP或WS_CHILD窗口风格(Style)来表示。

层叠窗口是窗口的缺省类型,如果不指定任何窗口类型则生成的是层叠窗口。

弹出窗口通常用于对话框。

它隐含带有WS_CLIPSIBLINGS窗口风格(后面会详细描述)。

层叠窗口通常被用作应用程序的主窗口,也隐含带有WS_CLIPSIBLINGS窗口风格。

在桌面平台上,层叠窗口还隐含带有WS_CAPTION窗口风格。

带有标题栏的窗口都隐含带有边框(Border),至于原因嘛,想像一下“光秃秃的标题栏”+“没有边框的窗口”会是个什么样子。

在Mobile平台上,层叠窗口与弹出窗口的界限已经很模糊了。

层叠窗口和弹出窗口统称为顶层窗口(top-level windows)。

剩下的一类是子窗口,例如常见的Button,Edit Box,List Box等窗口控件。

第2章 认识Windows XP的窗口

第2章  认识Windows XP的窗口

5、选项卡:是对对话框中功能进行进一步的详细分类,将对话 框中的丰富的选项设置分为不同的子功能。
2.3.2 对话框的移动和关闭
1、移动操作与移动其它窗口的操作类似。 2、关闭方式有如下几种: : 单击”确定”或”应用”按钮,可在关闭对话框的同时保存用户在 对话框中所作的设置和修改。 若要取消所作的修改时,可单击”取消”按钮,或在标题栏上单 击”关闭”按钮,也可使用Esc键退出。
第2章 认识Windows XP的窗口 认识Windows XP的窗口
本章重点: 本章重点: Windows XP的窗口组成和操作 XP的窗口组成和操作 对话框的使用
2.1 窗口的各组成部分
2.1.1 窗口的概念
窗口是屏幕上的一个长方形区域,它是Windows应用程序运行的 工作区域,而且查看程序、文件夹、文件、图标等操作都是在窗 口中进行的。
小 结
本章主要介绍了Windows XP的窗口及 本章主要介绍了 对话框的组成和操作 ,要求学生熟练掌握 各内容的操菜单一次。
2.3 使 用 对 话 框
当某个命令项后有” …”符号时,执行此命令后会产生相应的对 话框。
2.3.1 对话框的组成
1、列表框:在对话框中当有向下的箭头标志 ,单击它时会 出现一个具有多项选择的列表。 2、输入框:在框中可进行文字或文本信息的输入。 3、单选按钮:在有些选项前有一个圆环 只能选择其中一项。 4、复选框:在有些选项前有一方框 项。 时,表示此选项为多选 时,表示此选项是
2.1.2 窗口构成:在开始菜单中单击“我的电脑”命令,打开
窗口如下图1所示。 1、标题栏:位于窗口的最顶端,文字标明了窗口的名称;在其 标题栏: 中有最小化、最大化和关闭按钮;活动窗口的标题栏默认状态下 为蓝色,其余窗口的为灰色的。

windows xp3

windows xp3

3、窗口的切换: 、窗口的切换:
1)、在窗口的可见区域单击; 、在窗口的可见区域单击; 2)、单击任务栏上相应的窗口名; 、单击任务栏上相应的窗口名; 3)、Alt+Tab在打开的多个窗口间切换; 、 在打开的多个窗口间切换; 在打开的多个窗口间切换 包括最小化窗口) (包括最小化窗口) 4)、Alt+ESC在打开的前两个窗口间切换。 、 在打开的前两个窗口间切换。 在打开的前两个窗口间切换 不包括最小化窗口) (不包括最小化窗口)
4、最大化、是小化、还原窗口: 、最大化、是小化、还原窗口:
1)、利用标题栏右上角相应的按钮; 、利用标题栏右上角相应的按钮; 2)、右击任务栏上相应的按钮,自选; 、右击任务栏上相应的按钮,自选; 3)、单击标题栏上的控制菜单图标,自选 、单击标题栏上的控制菜单图标, 技巧:在窗口标题栏的空白处双击, 技巧:在窗口标题栏的空白处双击,可最 大化/还原窗口 还原窗口。 大化 还原窗口。
三、窗口的操作: 窗口的操作:
1、移动窗口: 、移动窗口:
1)、将鼠标移至窗口标题栏的空白处, 1)、将鼠标移至窗口标题栏的空白处,按左键不 放拖动即可; 放拖动即可; 2)、按Alt+Space→按方向键选择“移动” 、 按方向键选择“ 按方向键选择 移动” 按方向键改变位置→ →Enter →按方向键改变位置→Enter;
二、窗口的组成: 窗口的组成:
桌面上一次可打开多个窗口, 在Windows XP桌面上一次可打开多个窗口,但当 桌面上一次可打开多个窗口 前活动窗口只有一个。 前活动窗口只有一个。
标题栏
其组成元素有: 其组成元素有:
菜单栏 工具栏
地址栏
工作区
状态栏
1、标题栏:位于窗口项部,从左到 、标题栏:位于窗口项部, 右依次显示的是控制菜单图标、窗口名、 右依次显示的是控制菜单图标、窗口名、 最小化、最大化和关闭按钮; 最小化、最大化和关闭按钮; 2、菜单栏:位于标题栏下方, 2、菜单栏:位于标题栏下方,列出 Windows XP中常用的菜单项,用鼠标 XP中常用的菜单项 中常用的菜单项, 单击即会弹出一个下拉菜单。 单击即会弹出一个下拉菜单。每个菜单 下都包含一些子菜单, 下都包含一些子菜单,用于完成对窗口 对象的操作; 对象的操作;

电脑窗口有哪几部分组成的

电脑窗口有哪几部分组成的

电脑窗口有哪几部分组成的电脑窗口有哪几部分组成的1. 窗口的组成基本上我们所有的操作都离不了窗口,我们可以在窗口中存放、移动文件;在窗口中打开、执行应用程序。

双击“我的电脑”,打开“我的电脑”窗口,基本组成如下图所示。

1 标题栏标题栏位于窗口的顶部,显示窗口名称及图标,通过最右侧的三个按钮可以进行最小化、最大化、关闭窗口操作。

在标题栏空白处双击鼠标左键会自动切换窗口大小。

2 菜单栏菜单栏位于标题栏下方,其中存放了当前窗口中的许多操作选项。

一般菜单栏里包含了多个菜单项,分别点击其菜单项也可弹出下拉菜单,从中选择操作命令。

3 工具栏工具栏位于菜单栏的下方,其中列出了一些当前窗口的常用操作按钮。

4 地址栏地址栏位于工具栏的下方,其中显示了当前窗口所处的目录位置,即我们常说的'“文件路径”。

点击右侧的倒三角按钮,可以在其打开的下拉列表中选择我们所要访问的窗口。

5 任务栏任务栏位于窗口的左侧,其中提供了丰富的信息及命令,通常分为“系统任务”、“其它位置”、“详细信息”三类。

6 工作区工作区是窗口最主要也是最大的区域,用于显示对象和操作结果。

扩展资料:窗口的状态:当用户双击图标 A 而打开相应的窗口 A 时,该窗口便处于激活状态。

此时用户可以看见窗口A 中的所有元素,且窗口的标题条呈高亮度蓝色。

被激活窗口的应用程序在前台运行,它能接收用户键入的信息。

如果用户再双击图标 B 而打开窗口 B 时,窗口 B 又处于激活状态。

此时窗口 A 则转为非激活状态,且窗口 A 被窗口 B 所覆盖。

我们把窗口虽然已被打开,但却是处于非激活状态的称为打开状态。

在Windows 的桌面上,允许同时有多个处于打开状态的窗口,但其中只能有一个窗口处于激活状态,亦即,仅有一个应用程序在前台运行,其余的程序都在后台运行。

窗口的改变:用户可用鼠标来改变窗口的大小及其在桌面上的位置。

因此,既可用鼠标来拖拽窗口边框或窗口角,以改变窗口的大小,又可利用最大化和最小化按钮或控制菜单,来将窗口最大化或最小化。

windows窗口分析,父窗口,子窗口,所有者窗口

windows窗口分析,父窗口,子窗口,所有者窗口

windows窗⼝分析,⽗窗⼝,⼦窗⼝,所有者窗⼝(本⽂尝试通过⼀些简单的实验,来分析Windows的窗⼝机制,并对微软的设计理由进⾏⼀定的猜测,需要读者具备C++、Windows编程及MFC经验,还得有⼀定动⼿能⼒。

⽂中可能出现⼀些术语不统⼀的现象,⽐如“⼦窗⼝”,有时候我写作“child window”,有时候写作“child”,我想应该不会有太⼤影响,⽂章太长,不⼀⼀更正了)问题开始于我的最近的⼀次开发经历,我打算把程序的⼀部分界⾯放在DLL中,⽽这部分界⾯⼜需要使⽤到Tooltip,但DLL中的虚函数PreTranslateMessage⽆法被调⽤到,原因⼤家可以在⽹上搜索⼀下,这并不是我这篇⽂章要讲的。

PreTranslateMessage不能被调,那Tooltip也就不能起作⽤,因为Tooltip需要在PreTranslateMessage中加⼊tooltip.RelayEvent(&msg)来触发事件,⽅可正常显⽰。

解决⽅法有好⼏个,我⽤的是⽐较⿇烦的⼀个——完全⾃⼰⼿动编写Tooltip,然后⽤WM_MOUSEMOVE等事件来触发Tooltip显⽰,写好之后发现些⼩问题,那就是调试运⾏时候IDE给了个warning,说我在析构函数中调⽤了DestroyWindow,这样会导致窗⼝OnDestry和OnNcDestroy不被正常调⽤,这个问题我以前遇到过,当然解决⽅法也是显⽽易见的,只需要在窗⼝对象(C++概念,⾮Windows内核对象,下⽂同)销毁前,调⽤DestroyWindow即可。

对于要销毁的这个窗⼝的⼦窗⼝,是不需要显式调⽤DestroyWindow的,因为⽗窗⼝在销毁的时候也会销毁掉它们,OK,我把这个过程⽤个⽰意图说明⼀下:图1上图表⽰了App Window及其⼦窗⼝的关系,现在假设我们要销毁Parent Window 1(对应的对象指针是m_pWndParent1),我们可以m_pWndParent1->DestroyWindow(),这样Child Window 1,Parent Window 2,Child Window 2都被销毁了,销毁的时候这些窗⼝的OnDestry和OnNcDestroy都被调⽤了,最后delete m_pWndParent1,此时m_pWndParent1->m_hWnd已经是NULL,不会再去调⽤Destroy,在析构的时候也就不会出现Warning。

第4章 Windows操作系统中的窗口类

第4章 Windows操作系统中的窗口类
第4章 Windows操作系统 中的窗口类
窗口类概述
32位Windows支持三种窗口类
系统全局窗口类、应用专用窗口类、应用全局窗ห้องสมุดไป่ตู้类。
系统全局窗口类(System Global Class)
系统内定的窗口类,预先定义好的窗口类共有七种,不需要 注册。
COMBOBOX
EDIT USEBOX SCROLLBAR STATIC MDICLIENT
几种窗口类结构介绍
UINT cbSize HICON hIcon
扩展窗口类结构中图标、小图标分别用条款指出。
几个与窗口类有关的函数
LoadIcon函数 LoadImage()函数 LoadCursor()函数 CreateSolidBrush()函数
窗口类的式样
基本窗口式样 扩展窗口式样 注意问题 ShowWindow函数
窗口类概述
应用程序局部应用窗口类(Application Local Class)
进程注册窗口类,开始于进程的建立终止于进程的结束。
应用程序全局应用窗口类(Application Global Class)
应用程序的第1个进程生成的窗口类,其他进程用不到再注 册,可以直接应用。当窗口式样条款中加入 CS_GLOBALCLASS识别字时,注册的窗口类就是应用程序 全局应用窗口类 注册代码植入在某个DLL动态链接库中。

Windows 窗口层次关系

Windows 窗口层次关系

Windows 窗口层次关系相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。

下面就说说Windows 中桌面(Deskkop)以及顶层窗口,以及子窗口之间的关系。

在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的关系和自身的一些信息,如:是否可见,窗口的所有者,窗口的父/子关系等等信息,当窗口创建、销毁、显示的时候,就会用到这些信息。

在每一个窗口实例中,有四个元素被窗口管理器用来建立窗口管理链表。

∙Child :指向窗口子窗口的句柄∙Parent:指向窗口父窗口的句柄∙Owner:指向窗口所有者的句柄∙Next:指向下一个同属窗口的句柄众所周知当Windows 初始化的时候,它创建桌面这个窗口,桌面覆盖着整个窗口,窗口管理器用这个窗口作为窗口链表中第一个元素。

因此桌面在窗口的层次关系中在最上层。

在窗口层次关系中,桌面窗口下一层窗口叫做顶层窗口,顶层窗口就是那些不是子窗口的窗口,顶层窗口不能够有WS_CHILD 属性。

窗口管理器是如何把桌面窗口和顶层窗口联系起来的呢?窗口管理器把顶层窗口都组织到一个链表中,而这个链表的头存储的就是桌面窗口的子窗口句柄,每一个子窗口通过Next 就可以找到链表中下一个窗口了。

这个链表被称为子窗口链表,在同一个子窗口链表中的窗口是互为同属窗口,所有顶层窗口都是同属窗口。

窗口在子窗口链表中的次序,也表明了窗口距离距离桌面窗口的距离。

顶层窗口所形成的子窗口链表构成了一个Z 轴,窗口管理器就是根据Z 序列来觉得窗口的哪一部分是显示的,哪一部分是被遮盖的。

所有顶层窗口的父窗口都是指向桌面窗口的,这样一来顶层窗口就好像是桌面窗口的子窗口,所有顶层窗口构成的链表是桌面窗口的子窗口链表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows 窗口层次关系相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。

下面就说说Windows 中桌面(Deskkop)以及顶层窗口,以及子窗口之间的关系。

在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的关系和自身的一些信息,如:是否可见,窗口的所有者,窗口的父/子关系等等信息,当窗口创建、销毁、显示的时候,就会用到这些信息。

在每一个窗口实例中,有四个元素被窗口管理器用来建立窗口管理链表。

∙Child :指向窗口子窗口的句柄∙Parent:指向窗口父窗口的句柄∙Owner:指向窗口所有者的句柄∙Next:指向下一个同属窗口的句柄众所周知当Windows 初始化的时候,它创建桌面这个窗口,桌面覆盖着整个窗口,窗口管理器用这个窗口作为窗口链表中第一个元素。

因此桌面在窗口的层次关系中在最上层。

在窗口层次关系中,桌面窗口下一层窗口叫做顶层窗口,顶层窗口就是那些不是子窗口的窗口,顶层窗口不能够有WS_CHILD 属性。

窗口管理器是如何把桌面窗口和顶层窗口联系起来的呢?窗口管理器把顶层窗口都组织到一个链表中,而这个链表的头存储的就是桌面窗口的子窗口句柄,每一个子窗口通过Next 就可以找到链表中下一个窗口了。

这个链表被称为子窗口链表,在同一个子窗口链表中的窗口是互为同属窗口,所有顶层窗口都是同属窗口。

窗口在子窗口链表中的次序,也表明了窗口距离距离桌面窗口的距离。

顶层窗口所形成的子窗口链表构成了一个Z 轴,窗口管理器就是根据Z 序列来觉得窗口的哪一部分是显示的,哪一部分是被遮盖的。

所有顶层窗口的父窗口都是指向桌面窗口的,这样一来顶层窗口就好像是桌面窗口的子窗口,所有顶层窗口构成的链表是桌面窗口的子窗口链表。

当顶层窗口创建的时候,窗口管理器把顶层窗口放在Z 轴的顶上,这样使得整个窗口可见,窗口管理器把窗口插入到桌面窗口子窗口链表的前面。

WS_EX_TOPMOST 这个属性控制着窗口管理器创建顶层窗口,窗口管理器把没有WS_EX_TOPMOST 属性的窗口放在具有WS_EX_TOPMOST 属性的窗口的后面,这样就使得具有WS_EX_TOPMOST 属性的窗口一直显示在前面。

在顶层窗口之间还有另外一直关系,拥有或者属于其他的顶层窗口,属于其他窗口的窗口叫做归属窗口,拥有其他窗口叫做宿主窗口,在Z 轴中,归属窗口一定在他的宿主窗口的前面,如果一个宿主窗口最小化,那么归属他的窗口会隐藏掉,如果宿主窗口隐藏起来,归属他的窗口不会被隐藏掉。

如果有三个窗口A、B、C ,A 拥有B,B 拥有 C ,如果A 最小化,那么B 会隐藏,但是C 还是可见的。

怎么才能够在窗口之间建立所有关系呢?方法是在调用CreateWindow或者CreateWindowEx 创建窗口的时候,指定hwndParent参数。

桌面窗口是在窗口层次中的第一层,顶层窗口在窗口层次中的第二层,子窗口也就是那些创建的时候指定了WS_CHILD 属性的窗口占据了窗口层次的其他层。

窗口和子窗口之间的联系,就像桌面窗口和顶层窗口之间的关系一样。

子窗口显示在其父窗口的客户区域,所有同一个窗口的子窗口同样建立一个Z 轴,这个和顶层窗口是类似的,顶层窗口也是显示在其父窗口――桌面窗口的客户区域。

16 位和32 位窗口系统的区别窗口之间的父子关系、归属所有关系、以及根据Z 轴来显示的这些规则在16 位和32 位窗口系统中都是相同的。

这样可以是在两种窗口系统中高度的兼容。

两种窗口系统的区别在于安全和多线程。

Windows NT 在原有的窗口层次关系中多增加了一层,每一个运行着Windows NT 的系统中都有一个Windows 工作站对象,这个对象是安全对象的第一层,是所有用户安全对象的继承之源,每一个Windows 工作站对象可以拥有一些桌面对象,每一个桌面都拥有上面描述的那样的窗口关系。

Windows Nt 用了两个桌面窗口对象,一个是用来处理登陆界面、屏蔽、锁住工作站等,一个是我们登陆之后进来操作的窗口了。

通常用户是不能够创建和删除桌面的,不过那是通常,实际上在Windows 下面也可以实现类似Linux 中的多个桌面的效果,每一个桌面都是一个独立的世界。

两种窗口系统还有两位一个区别,在16 位窗口系统中不支持多线程,所以应用程序开发者在创建窗口的时候不必考虑线程的问题了。

而在32 位窗口系统中由于又支持了窗口的父子关系,归属与拥有关系,同一个窗口下面的所有线程都拥有相同的一个输入队列,应用程序开发者应该明白输入队列是共享的,在同一个时刻只能有一个线程处理消息,其他的线程都在等待输入队列一直到GetMessage 或者PeekMessage 返回,而且必须注意的是父窗口和子窗口或者是归属与拥有窗口共用同一个线程。

在32 窗口系统中定义两种新的窗口类型,前台窗口和背景窗口,这两种窗口没有列到窗口的层次关系中,前台窗口就是用户当前操作的窗口,其他的所有窗口都是背景窗口。

32 位窗口系统中支持两个函数来处理前台窗口SetForegroundWindow和GetForegroundWindow。

操作窗口列表下面是窗口列表操作的一些函数:EnumChildWindows使用这个函数得到一个窗口的所有子窗口,包括子窗口的子窗口。

不过在列举的过程中这个函数不能够列出正在创建的或者销毁的窗口。

EnumThreadWindows使用这个函数可以列出所有属于这个线程的窗口。

在这个函数调用之后创建的窗口是不能够被列举出来的。

EnumWindows使用这个函数列举出所有顶层窗口,不能够列举出子窗口,要列出所有的顶层窗口,使用这个函数比GetWindow安全。

使用GetWindow 来列出所有的窗口,可能会导致程序无限循环,因为在调用GetWindow 的过程中,可能一些窗口已经销毁了。

EnumWindows 不能够列举出调用这个函数之后创建的顶层窗口。

FindWindow可以使用这个函数通过类名或者使用窗口的标题来找到顶层窗口,这个函数不能够用来找子窗口,这个函数不区分参数的大小写。

这个函数在Z轴中寻找窗口,找到了之后,就会返回。

GetDesktopWindow得到桌面窗口句柄GetNextWindow使用这个函数得到这个窗口的同属窗口,在16 位窗口系统中GetNextWindow 和GetWindow 是两个不同的函数,在32 位系统中这个函数是通过GetWindow 来实现的。

GetParent如果一个窗口存在父窗口,那么可以通过这个函数得到窗口的父窗口,如果窗口是顶层窗口,则返回其所有者窗口句柄。

GetThreadDesktop这个函数用来得到指定线程的所属的桌面窗口句柄,在win95 和win98下面由于不支持多桌面,每次调用该函数都返回同一个值。

GetTopWindow可以用这个函数来得到给定窗口的第一个子窗口的句柄,如果传递给函数的参数是NULL 的话,那么这个函数将会返回最上面的顶层窗口。

GetWindow应用程序可以调用这个函数来在窗口列表中导航,这个函数有两个参数,一个是窗口的句柄,另外是要得到的窗口句柄和这个窗口之间的关系。

∙GW_HWNDNEXT:这个函数返回给定窗口的下一个同属窗口∙GW_HWNDFIRST:返回给定窗口的前一个同属窗口∙GW_HWNDLAST:返回给定窗口的最后一个同属窗口∙GW_HWNDPREV:返回给定窗口的第一个同属窗口∙GW_OWNER:返回给定窗口的所有者窗口句柄GW_CHILD:返回给定窗口的第一个子窗口句柄IsChild这个函数有两个参数,两个窗口句柄,判断两个窗口是否存在父子关系窗口的属性当应用程序调用CreateWindow 创建窗口的时候,我们必须为窗口指定属性,下面简要的介绍一下窗口的属性。

WS_OVERLAPPED交迭属性是顶层窗口的一种属性,使用这种属性创建的窗口,会被链接到桌面窗口的子窗口链表中,应用程序通常使用这种属性的窗口作为应用程序的主窗口,具有交迭属性的窗口通常具有有标题栏,即使是WS_CAPTION 这个属性没有指定。

具有交迭属性的窗口通常都是有边框的,具有交迭属性的窗口可以拥有自己的顶层窗口,也可以所属其他的顶层窗口,所有的这类窗口都具有WS_CLIPSIBLINGS 属性,即使是没有给窗口指定这个属性。

WS_POPUP弹出属性也是应用到顶层窗口的一种属性,使用这种属性创建的窗口会被链接到桌面窗口的子窗口链表中,应用程序通常为对话框窗口设置这个属性,弹出属性和交迭属性的主要区别在于具有弹出属性的窗口不是一定要有标题栏的,而具有交迭属性的窗口则是一定要具有标题栏,具有弹出属性的窗口可以没有边框。

和具有交迭属性的窗口一样,具有弹出属性的窗口可以有自己的顶层所属窗口,也可以所属其他的顶层窗口。

所有具有弹出属性的窗口必须具有WS_CLIPSIBINGS 属性,即使是用户没有指定这个属性。

具有弹出属性的窗口在创建的时候,它的大小和位置不能够使用CW_USEDEFAULT 值。

WS_CHILD子窗口必须具有这个属性,子窗口只能够出现在父窗口的客户区域,这是子窗口和具有交迭属性的窗口以及弹出属性的窗口的主要区别,创建子窗口的时候,位置和大小不能够使用CW_USEDEFAULT 这个值,否则是不能够创建窗口的。

WS_CAPTION当窗口被设置这个属性的时候,窗口的最上头会有标题栏,应用程序可以通过SetWindowText 这个函数来改变标题栏的标题,通常具有标题栏的窗口还具有最大、最小、关闭按钮,和系统菜单。

如果一个窗口没有标题栏,那么Windows 是不会创建这些东西的,即使是用户指定了这些属性,系统菜单是依赖标题栏窗口的存在而存在的,如果没有标题栏那么是一定不会有系统菜单的存在的。

具有标题栏的窗口通常具有单线的边界具有可以改变窗口大小的属性,通常具有标题栏的窗口是不能具有对话框的边界属性的,除非为窗口设置WS_EX_DLGMODALFRAME 属性。

WS_MINIMIZEBOX当为窗口设置这个属性的时候,窗口的标题栏上会有一个最小化的按钮,其实对于Windows 来实现这个属性的时候,只是在标题栏上面放置了一个最小化的位图,当用户点击这个最小化位图的时候,窗口最小化,如果最大化位图最在,那么最小化位图被放置在最大化位图的左边。

没有这个属性的窗口是不能够最小化的。

WS_MAXIMIZEBOX当为窗口设置这个属性的时候,窗口的标题栏的右上会被放置一个最大化的位图,如果窗口设置了这个属性,用户可以点击最大化的位图或者是通过系统菜单来实现窗口的最大化,没有这个属性的窗口是不能够被最大化的。

相关文档
最新文档