window响应拖拽文件操作
window响应拖拽文件操作
1.首先调用DragAcceptFiles,让控件或者窗体支持文件拖动操作
函数功能:用来为拖放文件作初始化。
函数原型:
void DragAcceptFiles(
HWND hWnd, //指明目标窗体的句柄
BOOL fAccept //为True时 则hWnd所指向的窗体可以接受拖放的文件.
);
2.消息事件中响应拖拽操作(WM_DROPFILES), 调用函数DragQueryFile和DragFinish
[1].DragQueryFile
函数功能:用来查下拖放文件的文件名。
函数原型:
UINT DragQueryFile(
HOROD hDrop,
UINT iFile,
LPTSTR lpszFile,
UINT cch,
);
参数说明:函数其本身的返回值是一个无符号整数;
hDrop是一个文件名缓冲区句柄(存放所拖放文件名称的数据结构),需要从windows消息WM_DROPFILES中获得;
iFile指明查询文件序号,取值0xFFFFFFFF时,函数返回值为所拖放文件数目,其他取值(0~文件拖放总数),对应文件名存放lpszFile缓冲区;
lpszFile取值为NULL时,函数返回对应文件名的长度;
cch决定缓冲区的长度;
[2].DragFinish
void DragFinish(HDROP hDrop)
使用DragFinish函数告诉windows拖放操作结束,使其释放文件名缓冲区,参数hDrop与DragQueryFiles函数中一样,也由windows消息WM_DROPFILES中获得;
3.例子:
LRESULT CALLBACK CWinEventsWin32::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
//......; //代码省略
switch (uMsg)
{
case WM_CREATE:
//......; //代码省略
DragAcceptFiles(hWnd, TRUE);//接受拖放事件设置
break; case WM_DROPFILES:
{
HDROP hdrop = (HDROP)wParam;
char sDropFilePath[MAX_PATH+];
int iDropFileNums = ;
iDropFileNums = DragQueryFile(hdrop, 0xFFFFFFFF, NULL, );//获取拖放文件个数
for (int i=; i<iDropFileNums; i++)//分别获取拖放文件名(针对多个文件操作)
{
DragQueryFile(hdrop, i, sDropFilePath, sizeof(sDropFilePath));
} //DragQueryFile(hdrop, 0, sDropFilePath, MAX_PATH);//分别获取拖放文件名(针对单个文件操作)
DragFinish(hdrop);//释放文件名缓冲区
}
break;
default:
break;
}
//......; //代码省略
}
window响应拖拽文件操作的更多相关文章
- Unity输出PC端(Windows) 拖拽文件到app中
需求:给策划们写一个PC端(Window)的Excel导表工具.本来用OpenFile打开FileExplorerDialog后让他们自己选择想要添加的Excel文件就行了,结果有个需求是希望能拖拽E ...
- 解决Duilib集成CEF浏览器在Win10无法向客户区拖拽文件
在Duilib中集成CEF浏览器项目实际开发中,遇到一个问题. 一个需求从资源管理器(桌面)拖拽文件到客户端,窗口捕获WM_DROPFILES消息然后进行消息处理,但客户区是集成的CEF浏览器,浏览器 ...
- Duilib嵌入CEF禁止浏览器响应拖拽事件
转载:http://blog.csdn.net/liuyan20092009/article/details/53819473 转载:https://blog.csdn.net/u012778714( ...
- [Java]接受拖拽文件的窗口
至于这个问题,Java的awt.dnd包下提供了许多完成这一功能的类 例如DropTarget.DropTargetListener等 先来讲一下DropTarget类,这个类完成和拖拽.复制文件等操 ...
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注 ...
- vm虚拟机Kali无法拖拽文件解决办法
vm虚拟机Kali无法拖拽文件解决办法 apt-get updateapt-get install open-vm-tools-desktop fusereboot
- H5新特性之拖拽文件
H5新增了drag事件,在H5中拖拽是十分常见的. 可以拖拽的分为页面内的和页面外的 页面内的一般默认可以拖拽的是img和a标签 页面外的常指的是文件 上代码吧~ let zoom = documen ...
- Winform程序拖拽文件到窗体
1:首先需要将接收拖拽的窗体属性AllowDrop设置为True. 2:编写窗体拖拽进入(DragEnter)和拖拽完成(DragDrop)事件. private void FrmCode_DragE ...
- js拖拽文件夹上传
由于项目需要上传文件到服务器,于是便在文件上传的基础上增加了拖拽上传.拖拽上传当然属于文件上传的一部分,只不过在文件上传的基础上增加了拖拽的界面,主要在于前台的交互, 从拖拽的文件中获取文件列表然后调 ...
随机推荐
- [javascript 实践篇]——那些你不知道的“奇淫巧技”
1. 空(null, undefined)验证 刚开始,我是比较蠢的验证(我还真是这样子验证的) if (variable1 !== null || variable1 !== undefined | ...
- cobbler简介+安装
(介绍部分的内容部分是借鉴网上的非原创) 回顾pxe+kickstart PXE PXE(preboot execute environment,预启动执行环境) PXE启动原理: 当计 ...
- js通过Date获取日期
获取当前系统时间 var myDate = new Date();//获取系统当前时间 获取特定格式日期 myDate.getYear(); //获取当前年份(2位) myDate.getFullYe ...
- java CountDownLatch 使用介绍
CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它 ...
- Spring Boot 系列(一)快速入门
简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置 ...
- CSS3浏览器兼容
不同的浏览器需要不同的前缀 -webkit chrome和safari -moz firefox -ms ie -o opera 一个炫酷标题效果: HTML: <!DOCTYPE HTML&g ...
- (转)java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- 【Django】学习资料
一.基础 http://www.ibm.com/developerworks/cn/linux/l-django/ 安装.数据库连接.url路由转发 http://djangobook.py3k.cn ...
- 流畅python学习笔记:第十五章:上下文管理器
在开始本章之前,我们首先来谈谈try-excep..final模块.在Python中,进行异常保护的最多就是用try..except..final.首先来看下下面的代码.进行一个简单的除法运算.为了防 ...
- javascript编程解决黑化的牛牛问题
问题描述 时间限制:1秒 空间限制:32768K 牛牛变得黑化了,想要摧毁掉地球.但他忘记了开启地球毁灭器的密码.牛牛手里有一个字符串S,牛牛还记得从S中去掉一个字符就恰好是正确的密码,请你帮牛牛求出 ...