火急

解决方案 »

  1.   

    Private Const HTCAPTION = 2
    Private Const WM_NCLBUTTONDOWN = &HA1
    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 LongPrivate Sub Command1_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(Command1.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
        End If
    End Sub
      

  2.   

    public ox,oy as single
    form_DragGrop(source as Object,x as single,y as single)
    source.move x-ox,y-oy
    end sub
    Object_MouseDown(x as single,y as single) //Object 指被拖动的控件,Shape无法拖动
    ox=x
    oy=y
    Oblect.Drag 1
    End Sub
      

  3.   

    (接上篇)
    Object_DragGrop(source as Object,x as single,y as single)
    source.move Object.left+ox-x,Object.left+oy-y
    end sub以上代码可以在FORM上精确拖动一个控件
      

  4.   

    谢谢Silenker 和 yefanqiu
    我想动态地拖大拖小,(最好有8个点的格矩形边框)该如何?
      

  5.   

    可以设置一个包含8个PictureBox的控件数组,大小和颜色可以在设置时调整。
    当大小需要调整的控件得到焦点时,将PictureBox数组中的各个元素安排到控件四周。
    在PictureBox的Mouse_Move事件中设置鼠标指针(根据PictureBox的index属性)。
    对PictureBox使用控件拖动的方法(移动时同时移动一条线上的另外2个PictureBox),调整被调控件大小。