您的位置:首页 > 运维架构

VC/MFC 实现文件拖拽获取文件名(WM_DROPFILES)

2016-11-29 11:49 381 查看
本文实现的是:拖拽文件到对话框(MFC)的编辑框,然后在编辑框中显示文件名。

首先说一下我的失败经历:

操作系统环境:win10,VS版本:Visual Studio 10,无论程序是基于单文档的还是对话框的,都不能实现文件拖拽。难道是VS10的问题?或者是没有用“管理员权限”启动导致的原因?经过多次尝试后,决定换VS08试试!代码完全一样,结果在VS08下可以实现文件拖拽。神马问题?

下面说一下,实现对话框的文件拖拽的方法:

1、对话框和编辑框的属性中,Accept Files,设为true。或者用代码 DragAcceptFiles(TRUE);来设置属性!

2、用类向导重载一个Edit类,命名为CDragEdit,然后添加 WM_DROPFILES 事件:

void CDragEdit::OnDropFiles(HDROP hDropInfo)
{
TCHAR szPath[MAX_PATH] = {0};
UINT nCount = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
for(UINT i = 0; i < nCount; ++i)
{
DragQueryFile(hDropInfo, i, szPath, MAX_PATH);
//MessageBox(szPath);
}
DragFinish(hDropInfo);

SetWindowText(szPath);
UpdateData(FALSE);

//CEdit::OnDropFiles(hDropInfo);
}
3、在对话框中,为编辑框添加控件类型的变量 CDragEdit m_editResPath; 然后就OK拉!

4、至于之前提到的在VS10版本不能实现,暂时无从知晓!

---------------------------------------------------------2017/04/14---------------------------------------------------------------

针对第4点(在VS10版本中不能实现文件拖放),这里稍微再做一下讨论。

如果无法实现文件拖放,不妨在程序初始化的时候,加上下面两句代码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: