MFC中用c++语言实现获取文件路径(拖拽获取)

一.使用VS2015创建新的项目->MFC应用程序->基于对话框
这里写图片描述
二.编辑对话框,添加Edit编辑框控件
这里写图片描述
三.在对话框属性中找到行为->Acccept Files更改False为True
这里写图片描述
四.右点击对话框选择添加类向导(或者按Ctrl+Shift+x快捷键),在消息一栏中选择WM_DROPFILES点击确定
这里写图片描述
五.在OnDropFiles函数中添加如下代码:

void CGetFilePathDlg::OnDropFiles(HDROP hDropInfo)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    TCHAR szPath[MAX_PATH] = { 0 };
    UINT nCount = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
    for (UINT idx = 0; idx < nCount; ++idx)
    {
        DragQueryFile(hDropInfo, idx, szPath, MAX_PATH);
        //MessageBox(szPath);//以消息盒子形式显示路径
        SetDlgItemText(IDC_EDIT1,szPath);//在编辑框内显示路径
    }
    DragFinish(hDropInfo);
    CDialogEx::OnDropFiles(hDropInfo);
}

注意:想在编辑框中显示路径就必须双击一下编辑框以生成编辑框函数。
*重要函数:DragQueryFile//是一个成功拖放操作后获取被拖放文件的名称等信息的函数。
语法:

UINT DragQueryFile(
HDROPhDrop,
UINTiFile,
LPTSTRlpszFile,
UINTcch
);

参数:

hDrop
用于区分”包含被拖拽文件名称结构”的句柄。
即存放所拖放文件名称的数据结构的句柄,也就是文件名缓冲区的句柄
iFile
文件索引编号(用于指明所要查询文件的序号, 如果拖进多个文件,则索引编号从零开始),如果iFile值为 0xFFFFFFFF 时,返回的是拖曳到窗体上的文件的个数。如果iFile值在0和拖拽文件总数之间时,DragQueryFile拷贝与文件名存储缓冲区大小适应的文件名称到缓冲区中。
lpszFile
函数返回时,用于存储拖拽文件名称的缓冲区指针。文件名称是一个以空终止“\0”结尾的字符串。如果此参数是NULL,DragQueryFile函数返回拖拽的文件名的长度。函数DragQueryFile得到的文件名,是带完整路径的文件名。
cch
存储拖拽文件名称缓冲区的大小,即lpszFile指针所指缓冲区的字符数。

*重要函数:SetDlgItemText//该函数设置对话框中控件的文本和标题
语法:

BOOLSetDlgltemText(HWND hDlg,int nlDDlgltem,LPCTSTR IpString);

参数:

hDlg:指定含有控件的对话框。
nlDDlgltem:标识带有将被设置的标题和文本的控件。
IpString:指向一个以NULL结尾的字符串指针,该字符串指针包含了将被复制到控件的文本。
返回值:如果函数调用成功,则返回值为非零值。如果函数调用失败,则返回值为零。若想获得更多的错误信息,请调用GetLastError函数。

O(∩_∩)O哈哈~获取文件路径就到这了

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值