HWND

时间:2023-05-25 12:56:15编辑:优化君

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

上一篇:谷文泽

下一篇:霍洛维茨