VC6.0中拖曳文件到文本框得到文件名(OnDropFiles)
来源:互联网 发布:windows如何录制视频 编辑:程序博客网 时间:2024/05/05 23:50
假设在一个对话框程序中,有两个文本框(IDC_EDIT_FILE1和IDC_EDIT_FILE2)和两个按钮(IDC_BTN_1和IDC_BTN_2),这两个文本框中要输入两个不同的文件名称,从而完成相应的操作(如比较两个文件的差异),我们不得不通过两个按钮来实现两次“打开文件”的过程(相信我,这个功能经常会使用到的)。此时,我们可以使用OnDropFiles功能。
UINT DragQueryFile(
其中,参数说明如下:
hDrop :用于区分”包含被拖拽文件名称结构”的句柄。 即存放所拖放文件名称的数据结构的句柄,也就是文件名缓冲区的句柄;
iFile :文件索引编号(用于指明所要查询文件的序号, 如果拖进多个文件,则索引编号从零开始),如果iFile值为 0xFFFFFFFF 时,返回的是拖曳到窗体上的文件的个数。如果iFile值在0和拖拽文件总数之间时,DragQueryFile拷贝与文件名存储缓冲区大小适应的文件名称到缓冲区中;
lpszFile : 函数返回时,用于存储拖拽文件名称的缓冲区指针。文件名称是一个以空终止“\0”结尾的字符串。如果此参数是NULL,DragQueryFile函数返回拖拽的文件数目。函数DragQueryFile得到的文件名,是带完整路径的文件名;
返回值说明如下:
1、如果函数拷贝文件名称到缓冲区中,返回值就是拷贝的字符数,不包括终止的NULL字符;
实际中常会用到以下两种情况:
1、获取文件数目:
UINT
iFileCount = ::DragQueryFile(hDropInfo, 0xffffffff, NULL, 0);
2、获取指定索引的文件名:
char file_name[MAX_PATH];
::DragQueryFile(hDropInfo, iFileCount - 1, file_name, MAX_PATH);
一、对话框实现WM_DROPFILES消息
1、打开对话框属性,选中“接收文件”选项(如此对话框才会响应WM_DROPFILES消息),如下图所示:
2、为对话框增加WM_DROPFILES响应函数,即OnDropFiles(),如下图所示:
3、为OnDropFiles添加代码(注意,这里有个for循环,只是演示一下常规用法,正常情况下,可以直接得到最后一个文件的名称),如下图所示:
4、编译运行。
这样,将文件拖放到对话框的任何地方,都可以将该文件名显示在IDC_EDIT_FILE1对话框中了。当然了,只要再CDragFileDlg类中再增加一个计数变量,就可以为另一个对话框实现类似功能了。但是,在这里,我们会使用另外一种方法完成IDC_EDIT_FILE2的这种功能的添加。
二、文本框实现WM_DROPFILES消息
1、为IDC_EDIT_FILE2添加“接收文件”属性,此操作同对话框相应操作相同;
2、新建类CFileEdit,基类为CEdit,如下图所示:
3、为新类CFileEdit定义WM_DROPFILES消息响应,此操作与对话框相应操作相同,只是在类向导中指定类为CFileEdit,而不是之前的CDragFileDlg;
4、书写CFileEdit类的OnDropFiles函数,代码如下:
5、为IDC_EDIT_FILE2指令Control型变量,并选定类型为CFileEdit,而不是CEdit,如下图所示:
6、编译运行。
这样,第二个文本框的功能也完成了。
其实,这两种方法从原理上来说是相同的,只是对象不同而已,在实际应用中,你可以选择任意一种就可以了。对于我个人而言,可能会更偏爱第二种作法。
- VC6.0中拖曳文件到文本框得到文件名(OnDropFiles)
- VC++6.0中拖曳文件到文本框得到文件名(OnDropFiles)
- VC++6.0中拖曳文件到文本框得到文件名(OnDropFiles)
- QT中得到文件路径,获取文件名
- WPF 打开一个文件,文件名显示在文本框中
- swt实现外部文件拖曳到界面
- 如何从文件路径中得到文件名及其扩展名
- 在servlet中得到上传文件的文件名
- 已知文件路径得到文件名
- 解决文本框在updatepanel中得到焦点,输入法不能切换到中文的问题
- VC6中cpp文件名不能包含.obj
- JavaScript得到上传文件的文件名
- o7-得到Oracle跟踪文件的文件名
- 如何得到下载文件的文件名
- CppUnit集成到VC6.0中去
- CppUnit集成到VC6.0中去
- VS2008中,MFC对话框类实现类似QQ拖拽上传文件的功能,CWnd::OnDropFiles
- vfp报表打印到PDF文件中不用输入文件名
- php 服务器限速代码
- linux中getopt的用法
- s3c6410 Booting模式
- DB2数据迁移之export/import
- Android编译过程详解(二)
- VC6.0中拖曳文件到文本框得到文件名(OnDropFiles)
- codetemplates.xml,注释
- 第一篇博客
- android ExceptionInInitializerError解决办法
- sysfs API总结
- SDK翻译 Fragment
- 用PHP绘制国旗
- 关于函数调用的loop的一个问题
- 深入分析:Flash VS HTML5到底谁统江山