如果做出Windows操作系统中的拖动效果?将一个文件拖动在全屏幕漫游,然后捕获目标位置放下?

解决方案 »

  1.   

    好像用不到api的,可惜我也不会弄,只能帮你顶了~`
      

  2.   

    允许oledrag就可以了.vb直接支持.
      

  3.   

    也许可以这样做:抓取控件外形制作成鼠标光标,然后用Hook的方法判断并执行操作。
      

  4.   

    我的想法是那样的,具体的做法不知道。
    具体来说,要求是这样的,首先我在PICTUREBOX上面画了一个小方框,然后要求能够移动小方框和小方框内的内容,随鼠标移动(可在控件内也可在屏幕任意地方),放下鼠标的时候,方框消失。
      

  5.   

    这里有一个不大不小的问题啊!!如果想要在任意地方移动,那你的控件...还是先说说句柄的父子关系吧.你的控件只能在你程序窗体内移动,是因为这个控件是你程序窗体的"子"窗体(窗体?对啊,按钮,标签,文本框等控件从理论上来讲都是Window,所这这个OS才叫Window"S"吧,呵呵).所以,如果你想让控件在其他窗体内移动(桌面也是一个窗体),那除非让那个控件成为它的子窗体才行啊!!!至于具体的方法,一是要得到目标窗体的句柄,二是要得到目标控件的句柄,三才是使用API把这个控件设置为目标窗体的子窗体.我昨年在学习API时,做了一个简单的玩具程序,你可以下载下来参考一下:(使用方法在程序里有说明)http://m5home.365wl.com/soft/swindowhack.exe
      

  6.   

    Public Declare Sub DragAcceptFiles Lib "shell32.dll" (ByVal hwnd&, ByVal fAccept&)
      Public Declare Function DragQueryFile& Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop&, ByVal iFile&, ByVal lpszFile$, ByVal cch&)
      Public Declare Sub DragFinish Lib "shell32.dll" (ByVal hDrop&)拖放文件可用API上面三个实现
    用子类技术.监视 WM_DROPFILes=&H233 文件拖放消息.设置拖放文件的接受容器.比如一个文本框.
    然后就可以自己处理了...
      

  7.   

    小马兄的App好cute~`那个F9弄的我......
    ^_^佩服啊......
    不知道是否公源的?
      

  8.   

    在VB6.0中如何拖动窗体或控件许多Windows下的应用程序,都采用了图形化的界面,这样做的好处是可以使程序界面更漂亮生动,更具吸引力。但是在这样的界面下就不能使用Windows原来的标题条了,否则将会影响界面的美观性。那么在没有标题条的情况下,如何用鼠标拖动窗体呢?或者拖动其它的控件呢?
    其实,采用API函数调用很容易实现,下面我们以拖动窗体(Form1)为例来具体讲一下实现方法:
    1.新建立一个项目,名称为:test.vbp.
    2. 填加一个模块,名称为:test.bas,并且在声明部分加入以下代码:
    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
    其中ReleaseCapture函数是用来释放鼠标捕获的,SendMessage函数是一个在WindowsAPI中非常重要的函数,在这里的作用是用来向Windows发送移动窗体的消息。WM_SYSCOMMAND是向Windows发送消息的常量。SC_MOVE是控制移动窗体的常量。请注意:这里SC_MOVE的赋值一定要是&HF012,它表示鼠标对象。
    3.在窗体的MouseDown过程中加入以下代码:
    ReleaseCapture
    SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
    其中ReleaseCapture函数用来释放鼠标捕获,SendMessage函数向Windows发送移动窗体的消息。
    4.保存并运行程序,按下鼠标,你会发现窗体会随着鼠标的移动而移动。就和其它著名的应用程序一样。
    以上讲述了如何在VB中用鼠标拖动窗体,其实,控件的拖动的原理是一样的。
    例如以下代码可以实现图片框的拖动:
    ReleaseCapture
    SendMessage Picture1.hwnd, WM_SYSCOMMAND, SC_MOVE, 0
    其实,运用API函数可以实现许多你意想不到的功能。如果需要更多有关VB的其它经验与技巧。
      

  9.   

    我倒~~~~~不是这个啦~~~~~人家问的是怎样拖动东西到任意地方,而不是移动控件关于我的那个小东西的代码,可以给我来个E-mail:myjian01#I^&^*^#yahoo.com.cn(把不认识的字符换成@吧~~~~防垃邮~~~~~)嘿嘿,用F9.....知道厉害了吧~~~~~~我不是在程序上写得很明白嘛,"小心使用".....哈哈哈哈...谁叫你自己不先看说明:)
      

  10.   

    不要被骗了,不是真的拖着控件到处跑,这是在屏幕上画的和控件一样的方框,用API在屏幕上画图即可
      

  11.   

    两个picturebox控件,picture2在pictrue1里面
    option explicit
    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 Any) As Long
    private const WM_NCBUTTONDOWN=&HA1
    private const HTCAPTION=2
    private sub picture1_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)
          if button=1 then
             releasecapture
             sendmessage picture2.hwnd,WM_NCBUTTONDOWN,HTCAPTION,0
          end if
    end sub                 'picture2的dragmode一定要为0,不能设置成1,否则无法任意拖动
      

  12.   

    刚才忘说了一句,你的小方框可以画在picture2的内部