快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱乐安卓下载和:感悟VB细水长流话API(六2)



感悟VB细水长流话API(六-1)

第九话 探求子窗口

这里又是一个特其余例子,图像处置惩罚我还会两下,不过这可不是处置惩罚来的,而是真实的抓图。我把开始按钮移到这里来了。再看看图6,怎么样?故意思吧?

这里我要先容几个API:

Private Declare Function FindWindow Lib "user和记娱乐安卓下载和32" 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则是阐明缓冲区的大年夜小。

那么接下来我是若何用它们的呢?看这里:

Dim hTaskbar As Long, hStartbutton As L和记娱乐安卓下载和ong

Dim sClass As S和记娱乐安卓下载和tring * 250

hTaskbar = FindWindow("Shell_traywnd", vbNullString)

hStartbutton = GetWindow(hTaskbar, GW_CHILD)

Do

GetClassName hStartbutton, sClass, 250

If LCase(Left$(sClass, 6)) = "button" Then Exit Do

hStartbutton = GetWindow(hStartbutton, GW_HWNDNEXT)

Loop

我应用FindWindow从桌面上找到了一个类名为 “Shell_traywnd”的窗口,它便是义务栏(不要问我是怎么知道它的类名的)。然后我又用GetWindow函数,从义务栏找到第一个子窗口。接下来,我用一个Do…Loop布局的轮回为上一次找到的子窗口反省其类名,假如类名是button,则阐和记娱乐安卓下载和明是个按钮,一样平常来说,义务栏上只有一个是button类的,以是一找到,它势必便是“开始”按钮了。假如没找到,则仍应用GetWindow,但此次和第一次不合,我通报的不是义务栏的句柄,而是上一次找到的子窗口的句柄,为的是找下一个同级窗口,就这样一次次轮回直到找到开始按钮。

那么,开始按钮就被我这么找到了,然后我就可以像对待其他窗口一样对待它:比如将它移动。不要忘了上一期所讲的内容,SetWindowPos将在这里孕育发生感化,你可以移动它,或者为着末一个参数组合上SWP_HIDEWINDOW,闪开始按钮变得弗成见,或者组合SWP_SHOWWINDOW从新显示……

接下来轮到义务栏了,你从图6中可以看到在开始按钮的位置有另一个“厉害”的按钮取代它,这是上一话的内容:SetParent。我用SetParent为蓝本在Form1上的按钮指定了新的父窗口——义务栏。假如你查看我的示例源法度榜样,你会发明在此按钮的GotFocu和记娱乐安卓下载和s事故中,我把焦点转移给了另一个按钮,缘故原由在上一话已经说了。

在示例源法度榜样中,我还演示了暗藏和显示义务栏,仍旧是SetWindowPos的功勋,提醒一下,为了不改变窗口的一些属性,要在着末一个参数组合上相宜的值。

好了,这一期的内容就这么多,我想这一次你应该好好钻研我的源法度榜样,里面的器械涉及到上一期和本期的内容,把它消化下去吧。

源法度榜样下载地址是:http://www.cfan.net.cn/qikan/cxg/0206gwv.zip。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: