天天看點

選擇目錄對話框和選擇檔案對話框

在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();