當前位置:首頁 » 文件管理 » mfc文件夾選擇對話框

mfc文件夾選擇對話框

發布時間: 2022-07-27 18:53:20

① MFC中如何實現點擊一個按鈕,彈出個選擇文件夾的對話框,選擇文件夾後,自動把文件夾內的文件都讀出來

CFile file("路徑名",CFile::modeRead);
char *buf;
DWORD len;
len=file.GetLength();
buf=new char[len+1];
buf[len]=0;
file.Read(buf,len);
file.Close();
MessageBox(buf); //輸出文檔內的字元串

② MFC如何實現文件夾選擇對話框

今天寫一個程序,其中一個功能是用對話框來選擇一個文件夾的路徑。可是以前常用的CFileDialog必須指定到文件,選擇一個文件夾只能繼續打開而不能返回這個路徑,CFileDialog貌視也沒有參數可以弄成選擇文件夾的式樣。上網找了找,CSDN里有人提供下面這個函數的用法:
CString
ShowSelectDirectoryDlg(const
CString
&
strDlgTitle)
{
char
szDir[MAX_PATH];
BROWSEINFO
bi;
ITEMIDLIST
*pidl;
bi.hwndOwner
=
this->m_hWnd;
bi.pidlRoot
=
NULL;
bi.pszDisplayName
=
szDir;
bi.lpszTitle
=
strDlgTitle;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
bi.lpfn
=
NULL;
bi.lParam
=
0;
bi.iImage
=
0;
pidl
=
SHBrowseForFolder(&bi);
if(pidl
==
NULL)
return
_T();
if(!SHGetPathFromIDList(pidl,
szDir))
return
_T();
這個函數的傳入參數strDlgTitle,就是選擇文件夾對話框的標題欄名稱。只需要模擬這個函數的寫法,添加代碼到特定的消息響應函數里去就可以了。

③ MFC 彈出支持文件和文件夾混選的對話框

沒有現成可以用的,只能自己實現;

假設存在,如果你雙擊某個文件夾,那麼是應該選擇還是打開;
所以是沒有直接可以實現這個功能的對話框的,通過自繪等方式肯定可以實現,不過很麻煩;
當你出現這樣的需求的時候應該考慮下你的設計是不是存在問題了。

④ MFC如何實現文件夾選擇對話框

今天寫一個程序,其中一個功能是用對話框來選擇一個文件夾的路徑。可是以前常用的CFileDialog必須指定到文件,選擇一個文件夾只能繼續打開而不能返回這個路徑,CFileDialog貌視也沒有參數可以弄成選擇文件夾的式樣。上網找了找,CSDN里有人提供下面這個函數的用法: CString ShowSelectDirectoryDlg(const CString & strDlgTitle) { char szDir[MAX_PATH]; BROWSEINFO bi; ITEMIDLIST *pidl; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = NULL; bi.pszDisplayName = szDir; bi.lpszTitle = strDlgTitle; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; pidl = SHBrowseForFolder(&bi); if(pidl == NULL) return _T(); if(!SHGetPathFromIDList(pidl, szDir)) return _T(); 這個函數的傳入參數strDlgTitle,就是選擇文件夾對話框的標題欄名稱。只需要模擬這個函數的寫法,添加代碼到特定的消息響應函數里去就可以了。

⑤ MFC點擊按鈕打開對話框選擇文件夾(不是文件)

選擇所選擇的文件夾,獲取文件夾的路徑:
CString
m_FileDir;
BROWSEINFO
bi;
ZeroMemory(&bi,
sizeof(BROWSEINFO));
bi.hwndOwner
=
m_hWnd;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
LPITEMIDLIST
pidl
=
SHBrowseForFolder(&bi);
BOOL
bRet
=
FALSE;
TCHAR
szFolder[MAX_PATH*2];
szFolder[0]
=
_T('');
if
(pidl)
{
if
(SHGetPathFromIDList(pidl,
szFolder))
bRet
=
TRUE;
IMalloc
*pMalloc
=
NULL;
if
(SUCCEEDED(SHGetMalloc(&pMalloc))
&&
pMalloc)
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir
=
szFolder;//選擇的文件夾路徑
查找所有MDB文件(記錄數組自己寫吧)
CFileFind
ff;
BOOL
res
=
ff.FindFile(m_FileDir+"*.mdb");
while(res)
{
res
=
ff.FindNextFile();
//不遍歷子目錄
if(!ff.IsDirectory()
&&
!ff.IsDots())
{
CString
strFile
=
ff.GetFileName();
…//
在這里寫需要的代碼
}
}
ff.Close();
//
不要忘記關閉

⑥ MFC怎麼創建瀏覽文件夾和文件的對話框

{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE為OPEN對話框,FALSE為SAVE AS對話框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}

文件名保存在了FilePathName里,然後處理吧

⑦ MFC怎樣創建能同時瀏覽文件夾和文件的對話框

BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO)); //指定存放文件的默認文件夾路徑
bi.lpszTitle="請選擇文件夾"; //添加提示語句
bi.ulFlags=0x0040 | BIF_EDITBOX; //添加「新建文件夾項」
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默認路徑打開瀏覽文件夾對話框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夾路徑存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路徑後增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//網上說pidl指向的對象用完應該釋放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
} MessageBox(savepath2);//顯示所選文件夾路徑

這是修改後的代碼,添加了第三四行,親測可用

⑧ MFC彈出文件夾選擇對話框問題

這個BROWSERINFO就是選擇對話框的信息(比如要選擇文件的類型,起始目錄,還有就是存儲路徑的字元串等等)LPITEMIDLIST這個暫時沒看出有什麼用。

⑨ MFC 路徑選擇對話框

如果是選擇文件的話那麼正如wwwgmc所寫的那樣。
但是如果提問者說的是路徑選擇對話框則應是如下代碼(代碼中採用控制台的形式給出SHBrowseForFolder()的用法):

#include <stdio.h>
#include <Windows.h>
#include <shlobj.h>

int main()
{
BROWSEINFO stInfo = {NULL};
LPCITEMIDLIST pIdlst;
TCHAR szPath[MAX_PATH];
stInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
stInfo.lpszTitle= "請選擇路徑:";
pIdlst = SHBrowseForFolder(&stInfo);
if(!pIdlst) return 1;
if(!SHGetPathFromIDList(pIdlst, szPath)) return 1;
printf(szPath);
return 0;
}

熱點內容
美國p站怎麼進入安卓 發布:2025-04-07 05:28:26 瀏覽:133
搭建私有雲存儲 發布:2025-04-07 05:14:22 瀏覽:281
騎砍21050ti怎麼配置 發布:2025-04-07 05:11:15 瀏覽:723
access資料庫登陸 發布:2025-04-07 04:56:31 瀏覽:605
rubyjava 發布:2025-04-07 04:56:29 瀏覽:594
java建窗體 發布:2025-04-07 04:56:25 瀏覽:842
安卓界面怎麼開發 發布:2025-04-07 04:55:49 瀏覽:920
百寶箱密碼在哪裡面修改密碼 發布:2025-04-07 04:55:47 瀏覽:159
蘋果安卓怎麼傳視頻 發布:2025-04-07 04:42:10 瀏覽:487
96編譯器是做什麼的 發布:2025-04-07 04:33:45 瀏覽:875