[MFC]選擇目錄對話方塊和選擇檔案對話方塊

scu_zhongxq發表於2010-03-07

在MFC程式設計中經常會需要用到選擇目錄和選擇檔案的介面,以下總結一下本人常用的這兩種對話方塊的生成方法:

選擇目錄對話方塊

//選擇目錄按鈕
void CDcPackerDlg::OnBnClickedDecgen()    
{
    
char szPath[MAX_PATH];     //存放選擇的目錄路徑 
    CString str;

    ZeroMemory(szPath, 
sizeof(szPath));   

    BROWSEINFO bi;   
    bi.hwndOwner 
= m_hWnd;   
    bi.pidlRoot 
= NULL;   
    bi.pszDisplayName 
= szPath;   
    bi.lpszTitle 
= "請選擇需要打包的目錄:";   
    bi.ulFlags 
= 0;   
    bi.lpfn 
= NULL;   
    bi.lParam 
= 0;   
    bi.iImage 
= 0;   
    
//彈出選擇目錄對話方塊
    LPITEMIDLIST lp = SHBrowseForFolder(&bi);   

    
if(lp && SHGetPathFromIDList(lp, szPath))   
    
{
        str.Format(
"選擇的目錄為 %s",  szPath);
        AfxMessageBox(str); 

        
    }

    
else   
        AfxMessageBox(
"無效的目錄,請重新選擇");   
}



選擇檔案對話方塊

CString CDcPackerDlg::BootOpenDialog()   //返回選擇的檔名稱
{
    CString strFile 
= _T("");

    CFileDialog    dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY, _T(
"Describe Files (*.cfg)|*.cfg|All Files (*.*)|*.*||"), NULL);

    
if (dlgFile.DoModal())
    
{
        strFile 
= dlgFile.GetPathName();
    }


    
return strFile;
}


//載入檔案按鈕
void CDcPackerDlg::OnBnClickedSelectdec()
{
    
// TODO: Add your control notification handler code here
    m_strDescPath = "";        //類的成員變數

    
//"開啟檔案"對話方塊,選擇檔案,返回其路徑
    m_strDescPath = BootOpenDialog();

    
}

相關文章