窗口函数主要可分为四个类型(也许说为"这是为了这次讲课分类出来的"更适合一些)∶
1、窗口分级函数;
2、窗口位置与大小函数;
3、窗口信息函数;
4、其他窗口函数。
以下我们就一一讲述。但由于窗口函数比较多,在这里就选择性的进行讨论。关于窗口函数有多少,具体的用法如何,您可以注意"小雁侠"的VB API站点的技术文档,或者本站程序下载栏目中的WInAPI帮助文。由于帮助文其内容来自"小雁侠"的网站,因此其内容更新比较起来会较晚一些。
窗口分级函数
系统中运行的窗口是有级别的高低之分的。谁不知道这样?这当然是废话。很多文章都是采用类似的这种废话来做导语,在这里我只不过也是学学而罢。
一、父子关系。
每个窗口都可能有自己的父窗口和子窗口。但,系统中运行的窗口是有限的,说明总得有个窗口是没有其父,我们把它叫做顶级窗口。一般把一个应用程序的主窗口就是顶级窗口,VB独立窗体及MDI窗体都是顶级窗口。窗口间的父子关系一般遵循以下规则∶
1、父窗口显示时,所有包容在其中的可见的子窗口会随着父窗口的显示而显示出来。
2、父窗口隐藏时,所有包容在其中的子窗口会随着父窗口的隐藏而隐藏。
3、父窗口被卸载时,哈,您已经知道我想说什么了,当然是∶跟着自动卸载。
4、父窗口移动时,跟着移动。
二、兄弟关系及Z序列
当然,一位父亲有好几个儿女,都是常见的事情。同样,一个父窗口可以拥有多个子窗体。比如,位于一个窗体中的各种控件之间以及MDI窗口的各子窗口之间的关系。父窗口与子窗口的显示、隐藏、卸载及移动,其先后顺序是显而易见的。那么各兄弟窗口之间的情况会是如何呢?
显然,两个互相重叠的两个子窗体不能都同时显示出它的全貌,自然有个显示的顺序规则。这个顺序规则叫做Z序列。有个解释为,如果把屏幕坐标看层X和Y轴组成的平面(事实上正是如此),那么作为三维坐标系统Z轴可看做是垂直于屏幕的坐标轴。这样,可以认为屏幕上的所有窗口是垂直于这个Z轴的。在Z轴上,谁在前,谁在后,就产生了一个Z序列。很生动!可用WINDOWS API函数和Visual Basic Z序列方法对Z序列进行控制。
有了以上简单的知识以后,我们就不难应用API窗口分级函数,主要有以下及个∶
窗口分级函数
函数名 说 明
FIndWIndow 按类名或窗口名(CaptIon)查找一个窗口
FindWIndowEx 类似于FindWindow提供了更多的功能
GetLastActivePopup 针对指定的窗口,取回上一个活动的弹出式窗口的句柄
GetParent 获得指定窗口父窗口的句柄
GetTopWIndow 获得指定窗口的第一个子窗口的句柄
GetWIndow 如给定一个窗口句柄,该函数能取回具有特定关系的另一个窗口的句柄。如,第一个子窗口、父窗口或窗口列表内的上一个或下一个窗口。
SetParent 改变任何窗口的父窗口。
从我个人的经验来看,我最常用的是GetWindow和SEtParent函数。