拖拽文件获得路径

这里主要用到一个函数

UINT DragQueryFile(          HDROP hDrop,

    UINT iFile,

    LPTSTR lpszFile,

    UINT cch

);

    hDrop: HDROP标识符,即响应函数中的hDropInfo参数
    iFile: 待查询的文件索引号,从0开始。可以同时拖拽多个文件,因此就需要一个索引号来进行区分。如果该参数为                        0xFFFFFFFF,则该函数返回拖拽的文件的个数
    lpszFile: 用于存放文件名的缓冲区首地址
    cch: 缓冲区长度
    返回值:文件名长度

 

接受一个文件的实例:

1.新建mfc对话框。

2.对话框行为里面,accept files属性设置为true。

3.添加一个Edit Control编辑控件,编辑控件分别命名为IDC_EDIT用于输出文件路径.

4.打开mfc类向导,为对话框添加消息WM_DROPFILES处理函数(注意对话框对应类名).添加代码.

 【1】.VC6.0的ClassWizread不支持消息WM_DROPFILES处理函数的添加,因此需要手动添加

 1.在对话框的.h文件中,定义处理函数  

afx_msg void OnDropFiles(HDROP hDropInfo); 

 

 2.在对话框的.cpp文件中,定义消息映射

ON_WM_DROPFILES() 

 

3.在对话框的.cpp文件中实现函数

void CSYSLoaderDlg::OnDropFiles(HDROP hDropInfo)

{

TCHAR filePath[ MAX_PATH ]={0};              

//单文件操作,第二参数置0,第三个参数返回文件路径                           

 

    DragQueryFile(hDropInfo, 0, filePath, MAX_PATH-1);     

SetDlgItemText(IDC_EDIT,filePath);

   DragFinish(hDropInfo); //释放拖放占用内存,必须!

}

 

 【2】.vs2010可直接添加WM_DROPFILES处理函数

 

可接受好几个文件的拖拽:

void CDragDlg::OnDropFiles(HDROP hDropInfo) 

{

// TODO: Add your message handler code here and/or call default

UINT count;          

char filePath[200];            

count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);          

if(count)           

{

for(UINT i=0; i<count; i++)                    

{

int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath));                             

AfxMessageBox(filePath); 

}

}

DragFinish(hDropInfo); 

CDialog::OnDropFiles(hDropInfo);

}

时间: 2024-09-15 10:38:13

拖拽文件获得路径的相关文章

Java 拖拽文件到文本框

Java中如何把文件拖拽到文本框呢? 先看一个例子:       核心代码: Java代码   /***       * 拖拽文件到文本框       * @param component       */       public void drag(final Component component)// 定义的拖拽方法       {           // panel表示要接受拖拽的控件           new DropTarget(component, DnDConstants.

c++-求教关于C++拖拽文件的问题

问题描述 求教关于C++拖拽文件的问题 C++怎么实现像QQ群上传文件一样,往聊天窗口的编辑框里拖拽一个文件,然后编辑框里面就会显示文件的图标和文件名,并且可以点击图标,也可以右键打开.复制等,也可以把这个图标一次删除掉 (我用的是VS2008的Win32项目,不是MFC项目). 我现在只可以实现往富文本框里面拖拽文件,然后显示图标和文件名,但是图标和文件名不是一个整体而是分开显示的,也不能点击图标,加不了右键菜单. 求教大神应该怎么做? (只剩下这一点点C币了...) 解决方案 http://

win7系统deamweaver cs6无法拖拽文件打开

问题描述 win7系统deamweaver cs6无法拖拽文件打开 win7系统刚装了个 deamweaver cs6 打开以后文件直接拖进去的话没有效果 一般情况不是直接拖进去就是打开吗 现在拖进去没用 有知道怎么解决的吗 麻烦告诉我一下 要不用着很不方便 解决方案 WIN7无法拖拽文件 解决方案二: 可能是安装不完整,重新安装过看一下!

Windows界面编程第七篇 文件拖拽(文件拖放)

本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5128654 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8634451 欢迎关注微博:http://weibo.com/MoreWindows   前面已经有六篇文章介绍了Windows界面编程,目录如下: 1. <Windows界面编程第一篇位图背景与位图画刷> 2. <Windows界面编程

HTML5文件实现拖拽上传

通过HTML的文件API ,Firefox.Chrome等浏览器已经支持从操作系统直接拖拽文件,并上传到服务器. 相对于使用了十多年的HTML表单,这是一个革命性的进步.虽然IE的落后让很多开发者还在观望中,但是Gmail邮箱的附件拖拽功能已经给部分用户带来了极大的方便,而需要大量上传文件的CMS(内容管理系统)也将会从中受益. 让我们看一下Firefox 是如何使用拖拽上传功能的: 首先提供一个区域来放置文件 Html代码 <div name="image" id="

html5-js实现鼠标拖拽div块释放鼠标打开文件

问题描述 js实现鼠标拖拽div块释放鼠标打开文件 左边一列导航栏,右面有个大的div块,想实现在导航栏中拖动div块到中间的div块中.鼠标将目标拖动到div中**释放鼠标打开导航栏的链接**应该怎么写?新手小白在网上找了一些东西 看不懂这是我改后的代码 拖动放到此处 $(document).ready(function(){ $(""#firstpane .menu_body:eq(0)"").show(); $(""#firstpane p

JAVA拖拽选择文件

最简单的选择文件的方式是使用文件选择框,但是这种方式在操作起来很麻烦,很多人在操作的时候喜欢直接使用鼠标拖拽,今天就为大家演示一下JAVA中如何实现直接用鼠标拖拽文件选择. import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.d

让自己的软件实现拖拽打开文件

让自己的软件实现拖拽打开文件                              作者: 帅宏军 //声明 protected     procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES; ------------------------------------------------------------------------------------------------------------------

Dropzone.js实现文件拖拽上传功能(附源码下载)_javascript技巧

dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 效果演示      源码下载 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone"&