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

mfc選擇文件夾對話框

發布時間: 2023-01-23 03:05:27

『壹』 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;
}

『貳』 MFC彈出文件夾選擇對話框問題

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

『叄』 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如何實現文件夾選擇對話框

今天寫一個程序,其中一個功能是用對話框來選擇一個文件夾的路徑。可是以前常用的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中如何實現點擊一個按鈕,彈出個選擇文件夾的對話框,選擇文件夾後,自動把文件夾內的文件都讀出來

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中打開一個文件,如單擊一個按鈕,然後彈出選擇文件的框框,我需要打開這個文件!

//文件屬性定義
CString filename;
CString fileext;//文件擴展名
CString filepathname;
//選擇文件
CFileDialog fpdlg(TRUE, NULL, NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"(文件類型)(*.dat)|*.dat|(文件類型)(*.sth)|*.sth|所有文件(*.*)|*.*||",NULL);
if(fpdlg.DoModal() == IDOK)
{
filename = fpdlg.GetFileName();
fileext = fpdlg.GetFileExt();//文件擴展名
filepathname = fpdlg.GetPathName();
//UpdateData(FALSE);
}
//打開文件
CFile fp;
if(filepathname ==_T(""))
{
//AfxMessageBox("請選擇文件!");
return ;
}
if(!(fp.Open((LPCTSTR)filepathname,CFile::modeRead)))
{
AfxMessageBox("文件打開失敗!");
return ;
}
//讀取文件
fp.SeekToEnd();
unsigned long len = fp.GetLength();
char* buff;
buff=new char[len+1];
fp.SeekToBegin();
if(fp.Read(buff,len)<1)
{
fp.Close();
}
fp.Close();

熱點內容
mac怎麼看存儲空間 發布:2024-05-20 20:06:37 瀏覽:231
編程類股票 發布:2024-05-20 19:54:34 瀏覽:921
筆記本電腦設置密碼怎麼弄 發布:2024-05-20 19:30:21 瀏覽:457
電腦租伺服器一天多少 發布:2024-05-20 19:23:15 瀏覽:776
c語言程序三種基本結構 發布:2024-05-20 19:18:06 瀏覽:800
小蟻運動相機存儲卡 發布:2024-05-20 19:17:31 瀏覽:83
紅米4怎麼關閉密碼鎖屏密碼 發布:2024-05-20 18:55:00 瀏覽:767
買手機看哪些參數配置圖片 發布:2024-05-20 18:35:02 瀏覽:8
右鍵文件夾未響應 發布:2024-05-20 18:34:23 瀏覽:987
汽車安卓軟體在哪裡下載 發布:2024-05-20 18:33:38 瀏覽:887