MFC中获取文件路径和文件夹路径

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012273127/article/details/78041439

最近做一个MFC的小界面,需要实现这样两个功能:1、在界面上加一个按钮,单击按钮弹出一个对话框选择文件,在工程中获得文件的路径;2、在界面上加一个按钮,单击按钮弹出一个对话框选择文件夹,在工程中获取文件夹的路径。

一、获取文件的路径

// -- 按钮的消息响应函数
void CDialogSampled::OnBnClickedButtonOpen()
{
    // TODO: 在此添加控件通知处理程序代码
    CString m_strFilePath = _T("");

    //打开图像文件,获取文件路径名
    LPCTSTR szFilter =_T("JPG(*.jpg)|*.jpg|BMP(*.bmp)|*.bmp|ALLSUPORTFILE(*.*)|*.*||");
    CFileDialog dlgFileOpenImg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
    //打开图像
    if(dlgFileOpenImg.DoModal() == IDOK)
    {       
        //读取图像文件名
        m_strFilePath = dlgFileOpenImg.GetPathName();
    }
    else
    {
        return;
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

二、获取文件夹的路径

此处借鉴了http://blog.csdn.net/computerme/article/details/41307849

//选择样本图像保存路径
void CDialogSampled::OnBnClickedButtonImageSavePathSelect()
{
    // TODO: 在此添加控件通知处理程序代码
    CString m_saveFilePath;
    //打开图像文件,获取文件路径名
    TCHAR szPath[_MAX_PATH];  
    BROWSEINFO bi;  
    bi.hwndOwner = GetSafeHwnd();  
    bi.pidlRoot = NULL;  
    bi.lpszTitle = "Please select the input path";  
    bi.pszDisplayName = szPath;  
    bi.ulFlags = BIF_RETURNONLYFSDIRS;  
    bi.lpfn = NULL;  
    bi.lParam = NULL;  

    LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);  

    if(pItemIDList)  
    {  
        if(SHGetPathFromIDList(pItemIDList,szPath))  
        {  
            m_saveFilePath = szPath;  
            m_saveFilePath = m_saveFilePath+"\\";
        }  

        //use IMalloc interface for avoiding memory leak  
        IMalloc* pMalloc;  
        if( SHGetMalloc(&pMalloc) != NOERROR )  
        {  
            TRACE(_T("Can't get the IMalloc interface\n"));  
        }  

        pMalloc->Free(pItemIDList);  
        if(pMalloc)  
            pMalloc->Release();  
        UpdateData(FALSE);  
    }  
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet">
                </div>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值