Type NewType sName As String lNumber As Long End Type
定义了一个名为NewType的自定义类型。以后可以用Dim MyType As NewType 来定义一个NewType类型的变量。
sName As String类型的变量有两种,一种是变长,即运行时的字符串长度是 可变的,另一种是定长,运行时字符串的长度是固定的。平常我们定义一个字符 串变量: Dim strA As String 即定义了一个变长的字符串,但在使用API时经常 要用到定长的字符串,应该这样定义: Dim strB As String * 30,即定义了一个 可容纳30个字节字符的变量。
2.声明
VB中使用API之前,需要先对API进行声明,声明的方法是使用Declare关键字 ,如: Public Declare SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 声明了一个名为SendMessage的API函数。许多API的声明可以在API浏览器中找到 ,而且本文在讲述一个API时也会给出声明,更深入的知识将在以后讲述。
在默认情况下,Visual Basic会把未声明的变量认为是新变量(即使是你不 小心打错字了),这样很容易出现错误,而且要找出这样的错误往往很不容易。 加上API的操作基本上都会涉及到系统本身,一旦出错就有可能出现Visual Basic 崩溃甚至系统崩溃。所以到Visual Basic的选项设置中选上Require Variable Declaration(需要变量声明)。在 Enviroment(环境)页中的When a program starts(当程序启动时)处选上Prompt To Save Changes(提示保存)或 Save Changes(自动保存)。这样Visual Basic会检查变量是否已经声明,不再允许没 有声明的变量出现了。
Private Sub cmdResize_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim nParam As Long
With cmdResize '之所以在0和100之间以及下面 .Width-100 和 .Width 之间,是让鼠标只在按钮 边缘才可以拉动按钮 If X > 0 And X < 100 Then nParam = HTLEFT ElseIf X > .Width - 100 And X < .Width Then nParam = HTRight End If If nParam Then Call ReleaseCapture Call SendMessage(.hwnd, WM_NCLBUTTONDOWN, nParam, 0) End If End With End Sub
Private Sub cmdResize_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim NewPointer As MousePointerConstants
With cmdResize If X > 0 And X < 100 Then NewPointer = vbSizeWE ElseIf X > .Width - 100 And X < .Width Then NewPointer = vbSizeWE Else NewPointer = vbDefault End If If NewPointer <> .MousePointer Then .MousePointer = NewPointer End If End With