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拖拽文件夹上传
由于项目需要上传文件到服务器,于是便在文件上传的基础上增加了拖拽上传.拖拽上传当然属于文件上传的一部分,只不过在文件上传的基础上增加了拖拽的界面,主要在于前台的交互, 从拖拽的文件中获取文件列表然后调 ...
随机推荐
- 第1章 ssh和SSH服务(包含隧道内容)
本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机. 另外,本人翻译了ssh客户端命令的 ...
- Android源码博文集锦1
Android精选源码 功能齐全的实用Android视频播放器 实现滑动到底部,加载更多RecyclerViewDemo 使用Kotlin语言编写Android MVP案例KotlinMVPDemo ...
- 在ubuntu14.04上安装mono4.4 + jexus + mvc6
0.准备工作 在/usr下建立一个文件夹,方便管理源码 cd /usr mkdir opensource cd opensource 安装vim(文本编辑器,不习惯用vim可以换成其他的) apt-g ...
- Educational Codeforces Round 21 A-E题题解
A题 ............太水就不说了,贴下代码 #include<string> #include<iostream> #include<cstring& ...
- Java纸牌小demo以及日历小demo
//卡牌类 public class Card { //定义卡牌的点数 public static final String[] cardName = { "3", "4 ...
- 不同浏览器创建 ajax XMLHTTPRequest对象的方法及兼容性问题总结
XMLHttpRequest 对象是AJAX功能的核心,要开发AJAX程序必须从了解XMLHttpRequest 对象开始. 了解XMLHttpRequest 对象就先从创建XMLHttpReques ...
- Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection
Android系统--输入系统(十六)APP跟输入系统建立联系_InputChannel和Connection 0. 核心:socketpair机制 1. 回顾Dispatch处理过程: 1.1 放入 ...
- javaSE 第77节课
1.InetAddress InetAddress是地址的封装类,也可通过它来获得当前的操作地址(1)获得电脑当前上网的IP地址 (2)与服务器连接操作 (3) 二.MD5加密文件 文件本地秒传操作例 ...
- Missing number - 寻找缺失的那个数字
需求:给出一个int型数组,包含不重复的数字0, 1, 2, ..., n:找出缺失的数字: 如果输入是[0, 1, 2] 返回 3 输入数组 nums = [0, 1, 2, 4] :应该返回 3 ...
- MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结
1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...