当前位置: 首页 > 图文教程 > 开发语言 > VB > VB中用API实现文件拖放

VB
运用VB.net创建Web服务访问程序
Visual Basic .NET中操作MsAgent
Visual Basic.NET快速开发MIS系统
Windows 98/2000下多屏显示技术的实现
Visual Basic中实现I/O端口控制
Visual Basic.NET和GDI+共创图标编辑器
VB多类图片数据库存取技巧
在Visual Basic 6.0中操纵XML文件
用VB6设计有趣的动画场景
用VB设计有安全认证服务的Email
VB.NET实现超级ptm查看器
与Visual Basic .NET一起使用.NET Framework
VB.NET注册表编程
VB中利用OpenGL绘制三维地质构造图
域名专题 - 域名劫持---163.net被h的分析
asp.net中的vb7中如何调用dll中的函数
在ASP.NET中处理datetime的一些通用函数(VB)
从 Visual Basic 6.0 到 Visual Basic.NET 的转换(1)
从 Visual Basic 6.0 到 Visual Basic.NET 的转换(2)
从 Visual Basic 6.0 到 Visual Basic.NET 的转换(3)

VB中用API实现文件拖放


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 70 ::
收藏到网摘: n/a

  对于每个需要引用的API函数,我们需要先在程序中说明,如果只在某一窗体内声明并使用它,则把它声明为Private,而如果在模块中声明,且需要在整个工程内使用它,则需要把它声明为Public。

Public Declare Function CallWindowProc& Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc&, ByVal hWnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)
   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&)
   Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&,ByVal nIndex&, ByVal dwNewLong&)

  SetWindowLong函数的作用是在窗口结构中为指定的窗口设置属性,利用它我们来改变窗口的属性参数,其中各个参数的意义如下表所示:

参数 意义
hwndLong,欲为其取得信息的窗口的句柄
nIndexLong,这里取GWL_WNDPROC,表示设置该窗口的窗口函数的地址
dwNewLongLong,由nIndex指定的窗口信息的新值

  返回值 Long,指定数据的前一个值

  在默认状态下WINDOWS操作系统会指定一个窗口函数来接受和处理WINDOWS消息,而通过使用SetWindowLong函数改变窗口函数的地址使它指向我们自己写的一个函数WindowProc,这样WINDOWS消息就会转由WindowProc函数接收和处理。于是我们就能判断文件拖放的消息并进行处理。改变窗口属性的语句如下:

procOld = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WindowProc)

  DragAcceptFiles、DragQueryFile、DragFinish三个函数的作用分别是:把某个窗口设置为接收拖放的容器、返回拖放的文件的数量和信息、终止拖放。