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拖拽文件夹上传
由于项目需要上传文件到服务器,于是便在文件上传的基础上增加了拖拽上传.拖拽上传当然属于文件上传的一部分,只不过在文件上传的基础上增加了拖拽的界面,主要在于前台的交互, 从拖拽的文件中获取文件列表然后调 ...
随机推荐
- maven Spring+Spring MVC+Mybatis+mysql轻量级Java web开发环境搭建
之前一直在做的一个GIS系统项目,采用了jsp+servlet框架,数据传输框架采用了apache的thrift框架,短时多传的风格还不错,但是较其他的java web项目显得有点太臃肿了,现在给大家 ...
- JAXP Dom 案例 对xml文件进行增加 查找 删除
利用 JAXP 对 XML文件 的处理,把xml当做一个数据库来对待
- 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
上篇博文中,我们介绍了做互联网级监控系统的必备-Influxdb的关键特性.数据读写.应用场景: 互联网级监控系统必备-时序数据库之Influxdb 本文中,我们介绍Influxdb数据库集群的搭建, ...
- 理解梯度下降法(Gradient Decent)
1. 什么是梯度下降法? 梯度下降法(Gradient Decent)是一种常用的最优化方法,是求解无约束问题最古老也是最常用的方法之一.也被称之为最速下降法.梯度下降法在机器学习中十分常见,多用 ...
- 大数据Python学习大纲
最近公司在写一个课程<大数据运维实训课>,分为4个部分,linux实训课.Python开发.hadoop基础知识和项目实战.这门课程主要针对刚从学校毕业的学生去应聘时不会像一个小白菜一样被 ...
- WIN10下设置惠普HP1050等打印机打印颜色,只打黑白或彩色
今天同事问了一个问题,如何在WIN10下,设置惠普打印机只打印黑白, 上网搜了下,没有找到任何信息,只有在WIN8前系统设置的内容,经过几番折腾,得出此文. WIN10下设置惠普HP1050等打印机打 ...
- [luogu P3801] 红色的幻想乡 [线段树][树状数组]
题目背景 蕾米莉亚的红雾异变失败后,很不甘心. 题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一 ...
- android studio生成junitLibs
apply plugin: 'com.android.application'android { compileSdkVersion 24 buildToolsVersion "25.0.0 ...
- 配置LAMP实现WordPress
环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3.Apache 2.4.6.MariaDB 5.5.52.PHP 5.4.1 ...
- 【Canvas】canva实例-星空、日出的效果
一.描述 模仿星空后黎明到来,日出的场景 二.代码 <!DOCTYPE html> <html> <head> <title></title> ...