VB 的程式设计模式是以物件为核心, 但 Windows 的程式设计模式却是以 handle 为核心。
Microsoft Windows 操作环境通过分配句柄(即 hWnd)来标识应用程序中的每个窗体和控件。hWnd 属性用于 Windows API 调用。许多 Windows 操作环境函数要求活动窗口的 hWnd 作为参数。
hWnd 属性(ActiveX 控件)返回窗体或控件的句柄。注意 OLE 容器控件不支持该属性。
语法 object.hWnd object 占位符表示一个对象表达式,该表达式将计算为“应用于”列表中的对象。
Form1.Caption = "新的标题"
若以 API 来执行相同的工作, 则叙述如下:
ret = SetWindowText( Form1.hwnd,"新的标题" )
其中 Form1.hwnd (hwnd 是 handle of window 的缩写)代表的是 Form1 这个表单「视窗」的 handle 。以下是呼叫此一 API 函数的完整程式:
Private Declare Function SetWindowText Lib _
"user32" Alias "SetWindowTextA" _
(ByVal hwnd As Long,ByVal lpString As String) As Long
Private Sub Command1_Click()
ret = SetWindowText(Me.hwnd,"新的标题")
End Sub
简单地说, VB 所提供的物件并没有把 Windows 的 handle 程式设计模式丢到一边, 而是将 handle 封装起来, 使之成为物件的一个属性。注:虽然说 Windows 的程式设计是以 handle 为核心, 但仍然有不少 API 函数是与 handle 无关的, 例如字串的复制, 这类 API 函数通常不会使用到 Windows 所配置的系统资源, 所以不需要使用 handle。
msdn 未安装:API Viewer
开始菜单-> 程序-> mircrosoft visual basic6.0-> microsoft visual basic 6.0工具->
你就可以看到了,然后在api viewer中的文件选项->加载文本文件->win32api.txt,就可以了
vb的函数的参数传递方式默认方式是地址传递(ByRef)
数值型别在 API 的参数定义中可能有两种形式:「参数名 As 数值型别」及「ByVal 参数名 As 数值型别」, 所代表的意义分别是数值的「传址」及「传值」呼叫,
在 API 函数中, 字串参数的宣告只有「ByVal 参数名 As String」一种形式(没有「参数名 As String」形式), 按照 VB 习惯, 这是「传值」呼叫, 但实际上, API 对于所有字串参数的处理, 却一概以「传址」视之, 所以当我们传递字串到 API 函数时, 心理上应有的准备是「这个字串的内容可能会被 API 改变掉」,
VB 字串可分成「非固定长度」及「固定长度」两种:
两者的差别除了长度是否可变之外, 非固定长度字串会在字串的最尾端补上 Chr(0) 字元, 以 "VB5" 字串为例, 在记忆体内部其实含有 "VB5"+Chr(0) 共 4 个字元, 至于固定长度的字串则会先用「空白」字元补满整个字串, 然后才补上 Chr(0) 字元虽然 VB 会在字串的尾端补上 Chr(0) 字元, 但这个字元并不会计入字串的长度S = "某字串" + Chr(0)