那又如何自如的拖动PICTUREBOX控件?

解决方案 »

  1.   

    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 Long, lParam As Long) As LongConst HTCAPTION = 2
    Const WM_NCLBUTTONDOWN = &HA1Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = 1 Then
             Dim ReturnVal As Long
             X = ReleaseCapture()
             ReturnVal = SendMessage(Picture1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
        End If
    End Sub
      

  2.   

    我曾经制作两个控件之间的拉动条时用过PictureBox作拉动条,不过要实现自如的拖动该控件应该也就不麻烦了,具体方法是在MouseMove事件中利用方法PicDrag.Move PicDrag.Left + X(PicDrag为控件名称)。你可以参照此方法再把Y坐标也改变一下就可以了。(这是我第一次回答问题希望你能满意)
      

  3.   

    Dim Flag As Boolean
    Dim DifferenceX As Long
    Dim DifferenceY As LongPrivate Sub Form_Load()
    Flag = False
    End SubPrivate Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Flag = ture
    DifferenceX = X
    DifferenceY = YEnd SubPrivate Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
     
     If Button = 1 Then
            'If Flag = True Then
            
               Image1.Left = Image1.Left + (X - DifferenceX)
                Image1.Top = Image1.Top + (Y - DifferenceY)
                DoEvents
                
           ' End If
        End If
        
    End SubPrivate Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
      
     Flag = False
      
    End Sub