正在阅读:感悟VB细水长流话API(六-2)感悟VB细水长流话API(六-2)

2004-02-14 09:34 出处:电脑爱好者 作者:张鸿 责任编辑:zwg
感悟VB细水长流话API(六-1) 第九话 寻找子窗口   这里又是一个特别的例子,图像处理我还会两下,不过这可不是处理来的,而是真实的抓图。我把开始按钮移到这里来了。再看看图6,怎么样?有意思吧? 这里我要介绍几个API: Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long   首先是FindWindow。FindWindow可以根据所给的条件,从桌面上寻找一个窗口,lpClassName是窗口的类名,而lpWindowName是窗口的标题。我们可以传递lpClassName,让它找符合的类名的窗口,或传递 lpWindowName,让它找符合的标题的窗口,如果我们不需要两个条件都符合,则另一个参数可以传递vbNullString,让它忽略。它的返回值就是找到的窗口的句柄。   那么什么是类名?避开C++的相关术语来说,其实Windows的窗口都是某种类中的一种,这个“类”可以是Textbox、 Combobox,也可以是由用户来定义的,这个窗口是属于哪一类的,它的类名就是什么。GetWindow也可以用来寻找某个窗口并返回其句柄,但它只限于在某个窗口中寻找子窗口,因此它需要传递hWnd以表示在哪个窗口里寻找。而 wCmd用来描述要找的子窗口与父窗口的关系。它的值如下: GW_CHILD:寻找第一个子窗口 GW_HWNDFIRST:寻找第一个同级窗口,或寻找第一个顶级窗口 GW_HWNDLAST:寻找最后一个同级窗口,或寻找最后一个顶级窗口 GW_HWNDNEXT:寻找下一个同级窗口 GW_HWNDPREV:寻找前一个同级窗口 GW_OWNER:寻找窗口的所有者(即父窗口)   我们先来理解什么是同级窗口和顶级窗口。打个比方,如果一个窗口有三个子窗口,则这三个窗口都是同一级的,互为同级窗口。如果我们从没寻找过一个子窗口,那么API 不知道我们要找的是和哪个窗口同级,那么此时它找的是顶级窗口,顶级窗口即是子窗口,但这个子的关系是直接的,而不会是子窗口的子窗口(即孙子,别笑,这里的术语不是我自己造的)。最后一个GetClassName和以前讲过的几个字符串相关的API用法差不多,hWnd是窗口句柄,lpClassName是用来接收窗口类名的缓冲区,nMaxCount则是说明缓冲区的大小。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品