MFC獲取文件路徑和文件夾路徑


MFC的界面中,需要實現這樣兩個功能:

1、在界面上加一個按鈕,單擊按鈕彈出一個對話框選擇文件,在工程中獲得文件的路徑;

2、在界面上加一個按鈕,單擊按鈕彈出一個對話框選擇文件夾,在工程中獲取文件夾的路徑。

 

一、獲取文件路徑

 1 // -- 按鈕的消息響應函數
 2 void CDialogSampled::OnBnClickedButtonOpen()
 3 {
 4     // TODO: 在此添加控件通知處理程序代碼
 5     CString m_strFilePath = _T("");
 6 
 7     //獲取文件路徑名
 8     LPCTSTR szFilter =_T("TXT(*.txt)|*.txt|LOG(*.log)|*.log|ALLSUPORTFILE(*.*)|*.*||");
 9     CFileDialog dlgFileOpenImg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
10     //打開txt文件
11     if(dlgFileOpenImg.DoModal() == IDOK)
12     {       
13         //讀取文件名
14         m_strFilePath = dlgFileOpenImg.GetPathName();
15     }
16     else
17     {
18         return;
19     }
20 }

 

二、獲取文件夾路徑

//選擇保存路徑
void CDialogSampled::OnBnClickedButtonSavePathSelect()
{
    // 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);  
    }  
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM