會員登錄 - 用戶注冊 - 網站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當前位置:主頁 > 技巧 > Access技巧 > API > 正文

了解句柄

時間:2005-08-16 11:24 來源:未知 作者:共享 閱讀:
在調用 DLL 函數前必須理解的另外一個重要概念是句柄。句柄是一個 32 位的正整數,Microsoft® Windows® 用它來識別窗體或其他對象,例如字體或位圖。

在 Windows 中,窗口可以有許多種。窗口可以是屏幕上的一塊矩形封閉區(qū)域,比如您熟悉的應用程序窗口。窗體上的控件(例如列表框或滾動條)也可以是窗口,但并不是所有類型的控件都是窗口。桌面上的圖標和桌面本身也是窗口。

因為所有這些類型的對象都是窗口,所以 Windows 可以用類似的方式處理它們。Windows 給每個窗口一個唯一的句柄,通過句柄操縱該窗口。許多 API 函數可返回句柄或者接受句柄作參數。

創(chuàng)建窗口時,Windows 給它指派一個句柄,窗口消失后句柄被釋放。雖然句柄在窗口的整個生存期內保持不變,但不能保證某窗口在被損壞并重新創(chuàng)建后還使用原來的句柄。所以,如果在變量中存儲了一個句柄,請記住窗口損壞后句柄就失效了。

例如 GetActiveWindow 函數就可以返回窗口的句柄,這里的窗口是一個當前活動的應用程序窗口。GetWindowText 函數接受窗口的句柄,如果該窗口有標題,則返回標題。下面的過程用 GetActiveWindow 返回活動窗口的句柄,用 GetWindowText 返回該窗口的標題:

Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Function ActiveWindowCaption() As String
Dim strCaption As String
Dim lngLen As Long

' 創(chuàng)建由空字符填充的字符串。
strCaption = String$(255, vbNullChar)
' 返回字符串長度。
lngLen = Len(strCaption)

' 調用 GetActiveWindow,返回活動窗口的句柄,
' 把句柄連同字符串和字符串長度一起傳遞給 GetWindowText。
If (GetWindowText(GetActiveWindow, strCaption, lngLen) > 0) Then
' 返回 Windows 寫到字符串中的值。
ActiveWindowCaption = strCaption
End If
End Function
GetWindowText 函數有 3 個參數:窗口句柄;準備接受窗口標題的 NULL 結束字符串;以及該字符串的長度。

(責任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
評價: