vb6下如何拖动无边框窗体



vb有两种办法实现,一直接编程实现

Option Explicit
Dim BolIsMove As Boolean, MousX As Long, MousY As Long
 
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then BolIsMove = True
MousX = X
MousY = Y
End Sub
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim CurrX As Long, CurrY As Long
If BolIsMove Then
 CurrX = Me.Left - MousX + X
 CurrY = Me.Top - MousY + Y
 Me.Move CurrX, CurrY
End If
End Sub
 
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
BolIsMove = False
End Sub

 二调用windows API编程实现

'移动窗体 
Private Declare Function ReleaseCapture Lib "USER32" () As Long 
Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long 
Const WM_NCLBUTTONDOWN = &HA1, HTCAPTION = 2 


Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
 If Button = 1 Then 
 Call ReleaseCapture 
 SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0& 
 End If 
End Sub



Long 和RGB 互转