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这个函数来改变标题栏的标题,通常具有标题栏的窗口还具有最大、最小、关闭按钮,和系统菜单。如果一个窗口没有标题栏,那么Window是不会创建这些东西的,即使是用户指定了这些属性,系统菜单是依赖标题栏窗口的存在而存在的,如果没有标题栏那么是一定不会有系统菜单的存在的。具有标题栏的窗口通常具有单线的边界具有可以改变窗口大小的属性,通常具有标题栏的窗口是不能具有对话框的边界属性的,除非为窗口设置WS_EX_DLGMODALFRAME属性。 WS_MINIMIZEBOX
当为窗口设置这个属性的时候,窗口的标题栏上会有一个最小化的按钮,其实对于Window来实现这个属性的时候,只是在标题栏上面放置了一个最小化的位图,当用户点击这个最小化位图的时候,窗口最小化,如果最大化位图最在,那么最小化位图被放置在最大化位图的左边。没有这个属性的窗口是不能够最小化的。
WS_MAXIMIZEBOX
当为窗口设置这个属性的时候,窗口的标题栏的右上会被放置一个最大化的位图,如果窗口设置了这个属性,用户可以点击最大化的位图或者是通过系统菜单来实现窗口的最大化,没有这个属性的窗口是不能够被最大化的。
WS_SYSMENU
如果为窗口指定这个属性,那么就会在窗口的左上角上放置系统菜单位图,系统菜单为用户提供了操作窗口的接口,通常系统菜单会有下面这些系统命令:
恢复最小化的窗口使用键盘移动窗口使用键盘改变窗口的大小最小化窗口最大化窗口关闭窗口切换到其他的任务