'发送消息
<DllImport("user32.dll", EntryPoint := "SendMessage")> _
Public Function SendMessage(hWnd As IntPtr, wMsg As Integer, wParam As Integer, lParam As Integer) As Integer
End Function
'获取滚动条位置
<DllImport("user32")> _
Public Function GetScrollPos(hwnd As IntPtr, nBar As Integer) As Integer
End Function
'设置滚动条位置
<DllImport("user32.dll")> _
Public Function SetScrollPos(hWnd As IntPtr, nBar As Integer, nPos As Integer, bRedraw As Boolean) As Integer
End Function
Public Const EM_LINESCROLL As Integer = &Hb6
“====================================================================
Public myform As Windows.Forms.Form
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
Public Declare Function ReleaseCapture Lib "user32" () As Integer
Public Const BorderWidth As Integer = 6
Public _resizeDir As ResizeDirection = ResizeDirection.None
Public Enum ResizeDirection
None = 0
Left = 1
TopLeft = 2
Top = 3
TopRight = 4
Right = 5
BottomRight = 6
Bottom = 7
BottomLeft = 8
End Enum
Public Property resizeDir() As ResizeDirection
Get
Return _resizeDir
End Get
Set(ByVal value As ResizeDirection)
_resizeDir = value
'Change cursor
Select Case value
Case ResizeDirection.Left
myform.Cursor = System.Windows.Forms.Cursors.SizeWE
Case ResizeDirection.Right
myform.Cursor = System.Windows.Forms.Cursors.SizeWE
Case ResizeDirection.Top
myform.Cursor = System.Windows.Forms.Cursors.SizeNS
Case ResizeDirection.Bottom
myform.Cursor = System.Windows.Forms.Cursors.SizeNS
Case ResizeDirection.BottomLeft
myform.Cursor = System.Windows.Forms.Cursors.SizeNESW
Case ResizeDirection.TopRight
myform.Cursor = System.Windows.Forms.Cursors.SizeNESW
Case ResizeDirection.BottomRight
myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE
Case ResizeDirection.TopLeft
myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE
Case Else
myform.Cursor = System.Windows.Forms.Cursors.Default
End Select
End Set
End Property
Public Const WM_NCLBUTTONDOWN As Integer = &HA1
Public Const HTBORDER As Integer = 18
Public Const HTBOTTOM As Integer = 15
Public Const HTBOTTOMLEFT As Integer = 16
Public Const HTBOTTOMRIGHT As Integer = 17
Public Const HTCAPTION As Integer = 2
Public Const HTLEFT As Integer = 10
Public Const HTRIGHT As Integer = 11
Public Const HTTOP As Integer = 12
Public Const HTTOPLEFT As Integer = 13
Public Const HTTOPRIGHT As Integer = 14
Public Sub MoveForm()
ReleaseCapture()
SendMessage(myform.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End Sub
Public Sub ResizeForm(ByVal direction As ResizeDirection)
Dim dir As Integer = -1
Select Case direction
Case ResizeDirection.Left
dir = HTLEFT
Case ResizeDirection.TopLeft
dir = HTTOPLEFT
Case ResizeDirection.Top
dir = HTTOP
Case ResizeDirection.TopRight
dir = HTTOPRIGHT
Case ResizeDirection.Right
dir = HTRIGHT
Case ResizeDirection.BottomRight
dir = HTBOTTOMRIGHT
Case ResizeDirection.Bottom
dir = HTBOTTOM
Case ResizeDirection.BottomLeft
dir = HTBOTTOMLEFT
End Select
If dir <> -1 Then
ReleaseCapture()
SendMessage(myform.Handle, WM_NCLBUTTONDOWN, dir, 0)
End If
End Sub
Public Sub myform_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left And myform.WindowState <> Windows.Forms.FormWindowState.Maximized Then
ResizeForm(resizeDir)
End If
End Sub
Public Sub myform_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
'Calculate which direction to resize based on mouse position
If e.Location.X < BorderWidth And e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.TopLeft
ElseIf e.Location.X < BorderWidth And e.Location.Y > myform.Height - BorderWidth Then
resizeDir = ResizeDirection.BottomLeft
ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y > myform.Height - BorderWidth Then
resizeDir = ResizeDirection.BottomRight
ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.TopRight
ElseIf e.Location.X < BorderWidth Then
resizeDir = ResizeDirection.Left
ElseIf e.Location.X > myform.Width - BorderWidth Then
resizeDir = ResizeDirection.Right
ElseIf e.Location.Y < BorderWidth Then
resizeDir = ResizeDirection.Top
ElseIf e.Location.Y > myform.Height - BorderWidth Then
resizeDir = ResizeDirection.Bottom
Else
resizeDir = ResizeDirection.None
End If
End Sub
老师,这两组代码通过修改能兼用吗?