VB中用API实现文件拖放

2016-01-29 12:05 130 1 收藏

VB中用API实现文件拖放,VB中用API实现文件拖放

【 tulaoshi.com - vb 】

  对于每个需要引用的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三个函数的作用分别是:把某个窗口设置为接收拖放的容器、返回拖放的文件的数量和信息、终止拖放。


来源:https://www.tulaoshi.com/n/20160129/1484596.html

延伸阅读
使用控件有:Winsock控件,CommandButton 控件,TextBox 控件 编程步骤如下: 1.声明变量 2.把如下代码加到Command1的Command1_Click事件: Private Sub Command1_Click() Winsock1.LocalPort = 0 '设置本地使用的端口 Winsock1.Protocol = sckTCPProtocol '设置Winsock控件使用的协议,TCP或...
VisualBasic以友好易学的可视化开发环境闻名于世,成为人们学习计算机编程的首选语言。目前,全世界大概有300多万人使用着VisualBasic语言。如果您想在这茫茫众生中出类拔萃,那么您就不得不学习API(ApplicationProgramlnterface,即Windows的应用程序编程接口)编程。不懂API,那可成不了高手。 第一节:API基础 API说到底就是一系列的...
一. 注册表的API编程 关于注册表的知识相信您通过前面专题的介绍已经有了较深入的了解。系统有六个预定义好的关键字,这六个关键字是用户或系统访问注册表的入口点。我们常用到的只有前四个关键字。而在编程时我们一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE这两个关键字,因为与应用程序相关的数据存在于这两个关键字下。 许多商品...
包装器实现 包装器实现是一种将它们的实际工作委托给一个特定 对象集 的实现,它在该 对象集 所提供的功能之上又增加了额外的功能。 对design patterns(设计样式) 爱好者来说,这是一个 decorator(油漆工) 样式。虽然有点异国情调,但确实简单明了。 !-- frame contents -- !-- /frame contents -- ...
br> 许多程序员永远不需要实现他们自己的 对象集 类。用本课程上面所描述的实现,你可以做得非常好。然而,有一天,你可能发现你要编写一个你自己的核心 对象集 接口的实现。用由Java平台提供的 abstract implementations(抽象实现),这一点很轻易办到。但是,在我们要讨论如何编写一个实现之前,让我们先讨论一下为什么你要做这样一件事。...

经验教程

600

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部