HWND

返回窗體或控制項的窗口句柄

HWND是Handle to A Window的縮寫,窗口句柄. h 是類型描述,表示句柄(handle), Wnd 是變數對象描述,表示窗口,所以hWnd 表示窗口句柄。

hWnd含義


h 代表handle, Wnd 是表示window,所以hWnd 表示窗口句柄
通俗地說,如果把窗口當做一個人的話,那麼HWND就是該人的身份證號碼。

hWnd屬性


返回窗體或控制項的句柄(注意 OLE 容器控制項不支持該屬性。句柄:是由操作環境定義的一個僅有的整數值,它被程序用來標識或者切換到對象,如窗體或控制項等。)。

語法


object. hWnd
object 所在處代表一個對象表達式,其值是“應用於”列表中的一個對象。

說明

Microsoft Windows 運行環境,通過給應用程序中的每個窗體和控制項分配一個句柄(或 hWnd)來標識它們。 hWnd 屬性用於Windows API調用。許多 Windows 運行環境函數需要活動窗口的 hWnd 作為參數。
注意 由於該屬性值在程序運行時可以改變,絕對不要將 hWnd 存儲在變數中。
如果 User Control 的 Windowless 屬性設為 True, 則 hWnd 屬性將返回 0 。
作用對象:
CheckBox 控制項
ComboBox 控制項
CommandButton 控制項
DataGrid控制項
DirListBox 控制項
DriveListBox 控制項
FileListBox 控制項
Form 對象、Forms 集合
Frame 控制項
HScrollBar、VScrollBar 控制項
ListBox 控制項
MDIForm 對象
OLE 容器控制項
OptionButton 控制項
PictureBox 控制項
PictureClip 控制項
TextBox 控制項

示例

這個例子強制窗體保持在最前面。要試用此例,先創建一個窗體(不是一個 MDI 子窗體),然後為該窗體創建一菜單叫做 Main。在其中插入一子菜單叫做 Always On Top,並且把它的名字設置為 mnuTopmost。利用“工程”菜單中的“添加模塊”命令創建一個新模塊。把 Declare 語句粘貼到新模塊的聲明部分,確保該語句在一行,並且沒有斷點或隱藏字。然後把 Sub 過程粘貼到窗體的聲明部分並按 F5 鍵。
' 聲明 Windows 常式.
' 該語句應在模塊中。
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
' 設置一些常數值(從 WIN32API.TXT).
Const conHwndTopmost = -1
Const conHwndNoTopmost = -2
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40
Private Sub mnuTopmost_Click ()
' 從菜單中加入或刪除檢查標誌.
mnuTopmost.Checked = Not mnuTopmost.Checked
If mnuTopmost.Checked Then
' 打開 TopMost 屬性.
SetWindowPos hWnd, conHwndTopmost, 0, 0, 0, 0, conSwpNoActivate Or conSwpShowWindow
Else
' 關閉 TopMost 屬性.
SetWindowPos hWnd, conHwndNoTopmost, 0, 0, 0, 0, conSwpNoActivate Or conSwpShowWindow
End If
End Sub
無論何時只要 ComboBox 收到焦點,在這個例子中都會自動放下 ComboBox 控制項的列表部分。要試用此例,”創建一個包含 ComboBox 控制項和 OptionButton 控制項的新窗體(只為獲得焦點用)。用先獲得“工程”菜單中的“添加模塊”命令創建一個新的模塊。把 Declare 語句粘貼到新模塊的聲明部分,確保該語句在一行,並且沒有斷點或自動換行。然後把 Sub 過程粘貼到窗體的聲明部分,並按 F5 鍵。用 TAB 鍵將焦點移動到 ComboBox 以及從 ComboBox 移出。
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Sub Combo1_GotFocus ()
Const CB_SHOWDROPDOWN = &H14F
Dim Tmp
Tmp = SendMessage(Combo1.hWnd, CB_SHOWDROPDOWN, 1, ByVal 0&)
End Sub

對象表達式

說明具體對象的表達式,可以包含對象的容器。例如,應用程序可以擁有 Application 對象,其中包含 Document 對象,而 Document 對象又包含 Text 對象。
Windows API Windows API(應用程序編程介面)由函數、消息、數據結構、數據類型以及語句組成,它們可在創建在 Microsoft Windows 下運行的應用程序中使用。API 中使用最多的部分是從 Windows 中調用 API 函數的代碼元素,包括過程聲明(Windows 函數)、用戶自定義類型的定義(用來傳遞到函數中的數據結構),以及常數聲明(傳遞給函數以及從函數中返回的值)。