实现文件拖放的一种简洁方法
1、自已编写专用的类,程序复杂、维护麻烦;2、必须要将文件拖到对话框中的编辑控件上,拖动的文件名才被接受,而标准的WINDOWS程序只须将文件拖放到对话框即可被接受;3、只能接受一个拖放的文件。本文要介绍的这种方法只须调用一个WINDOWS API函数DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足。下面先介绍一下这个函数。
---- DragQueryFile原型为:
UINT DragQueryFile( HDROP hDrop, UINT iFile, LPTSTR lpszFile, UINT cch )
---- 其中hDrop是指向拖动文件结构的句柄;
---- iFile 是以0开始的被托动文件的序号,因为一次可能拖动多个文件。当此参数
---- 设为0xFFFFFFFF,则函数返回拖动文件的数量;
---- lpszFile 是指向文件名的缓冲区;
---- cch 是文件名缓冲区的大小,即文件名的字符数。
---- 明确了该函数的参数后,编程就是一件很简单的事情了。以下给出一个完整的实例,程序运行后弹出一个对话框,可以拖动任意数量的文件或目录到上面,松开鼠标后,程序先显示拖放文件的数量,然后将拖放的文件名全部显示在一个List Box控件中。具体步骤如下:
- 建立一个基于对话框的工程drop,然后其它选项全部用缺省值。
- 选中IDD_DROP_DIALOG对话框中Extended Styles的Accept files属性。
- 给IDD_DROP_DIALOG对话框添加一个List Box 控件IDC_LIST1。
- 在ClassWizard中给CdropDlg类添加成员变量m_list,类型为ClistBox。
- 给CdropDlg类中增加处理WINDOWS消息WM_DROPFILES的函数,接受系统给出的默认名字OnDropFiles,然后输入以下代码:
void CDropDlg::OnDropFiles(HDROP hDropInfo) { char *lpszFileName=new char[512],cFileCount[10]; int nFileCount,i; nFileCount=::DragQueryFile (hDropInfo,0xFFFFFFFF,NULL,512); ::AfxMessageBox(itoa(nFileCount,cFileCount,10)); for (i=0;i
---- 注意程序中的::DragFinish (hDropInfo);语句是必不可少的,它用于释放WINDOWS为处理文件拖放而分配的内存。
---- 运行此程序可以看到,拖动的文件只要一进入对话框的边界,鼠标上立刻会现一个“+”,在对话框上的任意位置释放鼠标,拖放的文件都会被接受,完全解决了《用MFC实现文件拖放到编辑框》必须将文件拖到编辑框的不足;而且拖放是通过调用WINDOWS API函数实现的,因此程序非常健壮,几乎没有什么维护量。程序在INDOWS98、vc++5.0下通过。
实现文件拖放的一种简洁方法相关推荐
- 文件拖放的一种简洁方法
文件拖放的一种简洁方法 DragQueryFile即可实现文件的拖放操作,而且完全克服了上述3点不足.下面先介绍一下这个函数. ---- DragQueryFile原型为: UINT DragQuer ...
- Tomcat不能自动编译JSP文件问题的一种解决方法
Tomcat不能自动编译JSP文件问题的一种解决方法 参考文章: (1)Tomcat不能自动编译JSP文件问题的一种解决方法 (2)https://www.cnblogs.com/zhouhb/p/5 ...
- Linux 搜索文件和文件夹的 4 种简单方法
Linux 管理员一天都不能离开搜索文件,因为这是他们的日常活动.了解一些搜索的东西是不错的,因为这能帮助你在命令行服务器中工作.这些命令记忆起来不复杂,因为它们使用的是标准语法. 可以通过四个 Li ...
- 职场人士需了解:职场文件删除了三种恢复方法
对于职场人士来讲,或多或少或许都遇到过文件误删的情况吧,例如熬夜做一周的数据,就在要完成最后一项报告的时候,因手误将文件永久删除了,或者连续加班赶的活动策划被有心之人删除了......误删职场文件是很 ...
- coreldraw错误代码14001_CorelDRAW文件损坏的几种解决方法
以前做好的CorelDRAW文件突然打不开了,或者是死机.非法操作等原因造成CorelDRAW文件损坏,有时打开源文件发现一片空白,源文件保存损坏无法打开怎么办?此时不要着急,你可以试试以下几种办法帮 ...
- 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
我们在使用U盘的时候,或多或少会遇到一些奇怪的问题,其中有一种就是U盘文件不显示了,明明U盘里拷贝了很多的文件,突然有一天不见了,但看U盘的容量显示又是有的,为什么会这样呢?下面就教大家解决它. 方法 ...
- 怎么把PDF分割成几个文件?分享几种分割方法
PDF文件怎么分割成几个PDF文件呢?PDF文件大家都不陌生,不管是学习还是工作都会用得到,当我们遇到一份文件发现内容不完全需要,只要把它分割成几个有用的问价就可以了,应该怎么做呢?相信还有很多小伙伴 ...
- 文件隐藏的几种简单方法
每个人都有一些隐私的文件或文件夹不想让别人看到,有时又不想刻意安装隐藏文件夹的软件.今天就给大家说说一些简单的文件隐藏方法. 1.最简单的方法 右击想要隐藏的文件或文件夹,在弹出的菜单中选取" ...
- zip文件加密的几种破解方法
一.使用ZipCenOp.jar(需要java环境),在cmd中使用 java -jar ZipCenOp.jar r xxx.zip 成功后压缩包可以直接打开 ZipCenOp.jar 链接: ht ...
最新文章
- 开源 免费 java CMS - FreeCMS1.9 全文检索
- 关于python中requests模块导入问题-python引入requests模块报错
- SQL Server 负载均衡方案集锦
- 01_[pathlib]内置pathlib库的常用属性和方法
- gcc和g++的区别
- 联想w540笔记本参数_2020年12月笔记本电脑推荐!联想、惠普、华为笔记本电脑推荐!18款高性价比笔记本电脑推荐!!!...
- js 将video的第一帧 转为图片
- Deploy Office Communications Server 2007R2 Group Chat Server(一)
- 《学生快捷记账系统》——个人博客04——星期四
- VS2008SP1下jQuery使用初体验
- JMeter接口测试中,响应数据中文显示乱码的处理方法(转)
- 【南阳OJ分类之语言入门】80题题目+AC代码汇总
- 静态IP、动态IP、ADSL拨号和DNS这几者你分得清吗?
- Broken Pipe
- 解决ios微信端video全屏
- 苹果快捷键怎么调出来_iPad常用快捷键
- matlab 数据分割,科学网—MATLAB把一个包含多个站点数据的文件分割到各个站点单独的文件夹 - 张乐乐的博文...
- 墙外干货:如何通过风格指南驱动模块化交互设计
- 无需越狱或安装应用在 iPhone 和 iPad 上打开 Flash 视频
- for循环打印九九乘法表
热门文章
- 公司为什么宁愿花11K月薪招新人,也不愿意花9K的月薪留住老员工?
- 用友元函数重载乘法,用成员函数重载除法
- html video 样式修改,修改video样式代码
- mysql 定一个函数_mysql自定义函数
- rdkafka线程过多_Kafka/RocketMQ 多线程消费时如何保证消费顺序?
- 随机森林需要分训练集测试集吗_讨论记录用随机森林对生存数据降维,筛选signature...
- 基于生成对抗网络的医学数据域适应研究
- 【2016年第5期】多“源”异“构”培养大数据创新型人才
- 【软件质量】变更管理与可追踪性
- 【面向对象】面向对象程序设计测试题10-类的设计测试题