文件拖放的一种简洁方法

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〈nFileCount;i++) { UINT nChars="::DragQueryFile" (hDropInfo,i,&lpszFileName[0],512); CString str(&lpszFileName[0],nChars); m_List.AddString(str); } ::DragFinish (hDropInfo); //释放内存 i="0;" delete []lpszFileName; // CDialog::OnDropFiles(hDropInfo); 此语句注释掉
} </pre>
---- 注意程序中的::DragFinish (hDropInfo);语句是必不可少的,它用于释放WINDOWS为处理文件拖放而分配的内存。

---- 运行此程序可以看到,拖动的文件只要一进入对话框的边界,鼠标上立刻会现一个“+”,在对话框上的任意位置释放鼠标,拖放的文件都会被接受,完全解决了《用MFC实现文件拖放到编辑框》必须将文件拖到编辑框的不足;而且拖放是通过调用WINDOWS API函数实现的,因此程序非常健壮,几乎没有什么维护量。程序在INDOWS98、vc++5.0下通过

文件拖放的一种简洁方法相关推荐

  1. 实现文件拖放的一种简洁方法

    1.自已编写专用的类,程序复杂.维护麻烦:2.必须要将文件拖到对话框中的编辑控件上,拖动的文件名才被接受,而标准的WINDOWS程序只须将文件拖放到对话框即可被接受:3.只能接受一个拖放的文件.本文要 ...

  2. Tomcat不能自动编译JSP文件问题的一种解决方法

    Tomcat不能自动编译JSP文件问题的一种解决方法 参考文章: (1)Tomcat不能自动编译JSP文件问题的一种解决方法 (2)https://www.cnblogs.com/zhouhb/p/5 ...

  3. Linux 搜索文件和文件夹的 4 种简单方法

    Linux 管理员一天都不能离开搜索文件,因为这是他们的日常活动.了解一些搜索的东西是不错的,因为这能帮助你在命令行服务器中工作.这些命令记忆起来不复杂,因为它们使用的是标准语法. 可以通过四个 Li ...

  4. 职场人士需了解:职场文件删除了三种恢复方法

    对于职场人士来讲,或多或少或许都遇到过文件误删的情况吧,例如熬夜做一周的数据,就在要完成最后一项报告的时候,因手误将文件永久删除了,或者连续加班赶的活动策划被有心之人删除了......误删职场文件是很 ...

  5. coreldraw错误代码14001_CorelDRAW文件损坏的几种解决方法

    以前做好的CorelDRAW文件突然打不开了,或者是死机.非法操作等原因造成CorelDRAW文件损坏,有时打开源文件发现一片空白,源文件保存损坏无法打开怎么办?此时不要着急,你可以试试以下几种办法帮 ...

  6. 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法

    我们在使用U盘的时候,或多或少会遇到一些奇怪的问题,其中有一种就是U盘文件不显示了,明明U盘里拷贝了很多的文件,突然有一天不见了,但看U盘的容量显示又是有的,为什么会这样呢?下面就教大家解决它. 方法 ...

  7. 怎么把PDF分割成几个文件?分享几种分割方法

    PDF文件怎么分割成几个PDF文件呢?PDF文件大家都不陌生,不管是学习还是工作都会用得到,当我们遇到一份文件发现内容不完全需要,只要把它分割成几个有用的问价就可以了,应该怎么做呢?相信还有很多小伙伴 ...

  8. 文件隐藏的几种简单方法

    每个人都有一些隐私的文件或文件夹不想让别人看到,有时又不想刻意安装隐藏文件夹的软件.今天就给大家说说一些简单的文件隐藏方法. 1.最简单的方法 右击想要隐藏的文件或文件夹,在弹出的菜单中选取" ...

  9. zip文件加密的几种破解方法

    一.使用ZipCenOp.jar(需要java环境),在cmd中使用 java -jar ZipCenOp.jar r xxx.zip 成功后压缩包可以直接打开 ZipCenOp.jar 链接: ht ...

最新文章

  1. Yann LeCun:距离“真正的” AI,我们还缺什么?
  2. 卷积、傅立叶变换、拉普拉斯变换、Z变换
  3. python中的object是什么意思_Python object类中的特殊方法代码讲解
  4. 【风控流程】大数据风控代码逻辑
  5. 1.设计模式中监听模式(观察者模式)(Python实现)
  6. Oracle入门(十四.20)之创建DML触发器:第一部分
  7. 云计算平台2017年盘点——真正成为新技术新应用的基础架构
  8. 原版英文书籍《Linux命令行》阅读记录7 | 原版英文书籍《Linux命令行》阅读记录7 | 一些键盘按键技巧...
  9. hibernate 的一对多关联关系映射配置
  10. sprintf()出错,使用strcat()正确
  11. python爬虫框架scrapy学习图片下载
  12. 高通SDX12:USB主模式调试及RTL8153驱动移植
  13. 渗透测试PTES标准流程(超详细)
  14. VUE项目开发,使用开发者工具查看源文件
  15. 数据挖掘从业人员的愿景
  16. Android中仿微信选择图片并展示在RecyclerView中
  17. 云上解锁Web3.0 阿里云XR平台助力彼真科技呈现沉浸式演唱会
  18. Revo Uninstaller专业版
  19. 中转网关 (Transit Gateway) Connect连接类型集成FortiGate安全服务
  20. 哈佛结构和冯诺依曼结构特点

热门文章

  1. zookeeper Error contacting service. It is probably not running
  2. 大数据统计学直观图表(二)
  3. 深入理解simhash原理
  4. 互联网晚报 | 12月27日 星期一 | 蚂蚁消费金融增资220亿;小米MIUI13正式官宣;《蜘蛛侠3》登顶全球年度票房冠军...
  5. 互联网日报 | 3月7日 星期日 | 《你好,李焕英》成中国影史票房亚军;丰巢新增智能存包柜业务;特斯拉推出内部社交平台...
  6. 2020年中国互联网租车报告
  7. 2020腾讯二次元营销通案
  8. const与static的区别
  9. java 发展方向_Java程序员的发展方向有哪些
  10. arcgis批量处理nc文件_法律行业python教程——利用python批量处理文件之批量重命名...