h 代表handle, Wnd 是表示window,所以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 函数)、用户自定义类型的定义(用来传递到函数中的数据结构),以及常数声明(传递给函数以及从函数中返回的值)。