软件注册站
热情软件屋

 
如何在程序运行后,用鼠标的左键拖动控件到窗体的任意位置
编号: QA002148    
建立日期: 1999年12月2日 最后修改日期: 2005年8月22日
所属类别: Visual Basic - 键盘与鼠标
   
    操作系统: pwin98
    编程工具: vb6
    问题: 如何在程序运行后,用鼠标的左键拖动label到窗体的任意一个位置?(小周)
   
    绝大多数VB控件都支持拖放。可以将控件的DragMode设置为手动(默认),使用Drag方法开始拖动操作。例子:
    Dim oldX As Single, oldY As Single
    Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
     Source.Move Left + X - oldX, Top + Y - oldY
    End Sub
    
    Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     oldX = X + Left
     oldY = Y + Top
     Label1.Drag 1
    End Sub
    
    Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
     Label1.Drag 2
    End Sub
    
    

    
    NewViewStudio的意见:
    我有个更好的方法,它不仅可以拖动窗体内的控件,还可以拖动窗体本身,尤其是对BorderStyle=0的窗体非常奏效.
    Public 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 Sub MoveObject(ByVal hWndOfObject As Long)
    
     ReleaseCapture
     SendMessage hWndOfObject, &HA1, 2, 0
    
    End Sub
    
    

    hWndOfObject 只要给窗体或其它控件的hWnd属性即可。如果没有hWnd的,则需要你自己去弄了,可以利用API来实现。
    
    相关问题:
    QA001292 "怎样使窗体移动时,窗体都以显示内容的方式来显示"
    QA002807 "如何在同一个工程中进行拖放操作"
    QA002099 "从网页上拖URL到程序中是怎么实现的"
    QA001575 "如何接受从其它程序中拖来的文字"
    QA000091 "如何实现浮动没有标题的窗体"
    2216

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 键盘与鼠标, mouse, keyboard, hid

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio