我建立了一个模块,代码如下:
Declare Function ReleaseCapture Lib "user32" () As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_SYSCOMMAND = &H112
Public Const SC_MOVE = &HF012然后在Form1中加入一个Label1控件,在mouse_down下加入代码如下:
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage Label1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
End If
End Sub
可编译的时候出现这样的错误:
.hwnd未找到方法和数据成员
小弟初学VB希望能得到大家的帮助 谢谢~~

解决方案 »

  1.   

    Lable 控件没有句柄,就是没有 hWnd 属性
      

  2.   

    我刚才用Picture做同样的事,没出现错误,可是控件不能拖动,这又是为什么呢?
      

  3.   

    Dim oldx, oldy As Integer不用这么麻烦使用API
    在窗体上创建label1 
    然后将如下代码粘贴,用鼠标左键即可拖动LABELPrivate Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    oldx = X
    oldy = Y
    End SubPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
    Label1.Left = Label1.Left + (X - oldx)
    Label1.Top = Label1.Top + (Y - oldy)
    End If
    End Sub
      

  4.   

    补充说明: oldx 和 oldy 是创建于  MOUSEDOWN 和MOUSEMOVE过程外的公共变量。
      

  5.   

    Option ExplicitPrivate Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button <> 0 Then
            Label1.Left = Label1.Left + X
            Label1.Top = Label1.Top + Y
        End If
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button <> 0 Then
            Picture1.Left = Picture1.Left + X
            Picture1.Top = Picture1.Top + Y
        End If
    End Sub
      

  6.   

    总结陈词:
    qzgrmc() 正解
    wzzwwz(棒子面窝头)有误完毕