MFC應(yīng)用實(shí)例:選擇文件夾對(duì)話框
在這個(gè)MFC應(yīng)用實(shí)例中,我們將展示如何在程序中添加選擇文件夾對(duì)話框,并讓用戶選擇電腦中的文件夾。 新建一個(gè)基于對(duì)話框的應(yīng)用程序 首先,我們需要新建一個(gè)基于對(duì)話框的應(yīng)用程序,將其命名為OpenDir
在這個(gè)MFC應(yīng)用實(shí)例中,我們將展示如何在程序中添加選擇文件夾對(duì)話框,并讓用戶選擇電腦中的文件夾。
新建一個(gè)基于對(duì)話框的應(yīng)用程序
首先,我們需要新建一個(gè)基于對(duì)話框的應(yīng)用程序,將其命名為OpenDir。
設(shè)計(jì)對(duì)話框
接下來,我們需要對(duì)對(duì)話框進(jìn)行設(shè)計(jì)。在對(duì)話框上添加一個(gè)按鈕,命名為“打開文件夾”,并將其與對(duì)應(yīng)的響應(yīng)函數(shù)關(guān)聯(lián)。
添加響應(yīng)函數(shù)
在“打開文件夾”按鈕的響應(yīng)函數(shù)OnButtonOpendir()中,我們添加以下代碼:
#define BIF_NEWDIALOGSTYLE 0x0040
void COpenDirDlg::OnButtonOpendir()
{
HWND hwnd GetSafeHwnd(); //得到窗口句柄
CString filePath ""; //得到文件路徑
LPMALLOC pMalloc;
if (::SHGetMalloc(pMalloc) NOERROR) //取得IMalloc分配器接口
{
BROWSEINFO bi;
TCHAR pszBuffer[MAX_PATH];
LPITEMIDLIST pidl;
bi.hwndOwner hwnd;
NULL;
pszBuffer;
bi.lpszTitle _T("選擇文件夾"); //選擇目錄對(duì)話框的上部分的標(biāo)題
bi.ulFlags BIF_NEWDIALOGSTYLE | BIF_RETURNONLYFSDIRS | BIF_RETURNFSANCESTORS;
bi.lpfn NULL;
bi.lParam 0;
bi.iImage 0;
if ((pidl ::SHBrowseForFolder(bi)) ! NULL) //取得IMalloc分配器接口
{
if (::SHGetPathFromIDList(pidl, pszBuffer)) //獲得一個(gè)文件系統(tǒng)路徑
{
filePath pszBuffer;
}
pMalloc->Free(pidl); //釋放內(nèi)存
MessageBox(filePath);
}
pMalloc->Release(); //釋放接口
}
}
運(yùn)行程序
現(xiàn)在,我們可以運(yùn)行程序了。點(diǎn)擊“打開文件夾”按鈕后,將會(huì)彈出一個(gè)選擇文件夾的對(duì)話框。
選擇文件夾
在對(duì)話框中,用戶可以瀏覽電腦中的文件夾,并選擇一個(gè)文件夾。選擇完成后,選擇的文件夾路徑將會(huì)在MessageBox中顯示出來。