MFC獲取資料夾下所有檔案的名字ListBox
臨時用到,就寫了一下,儲存一下成果!
基於List Box的介面顯示檔名列表:
執行效果圖:
具體實現主要是新增兩個訊息響應,一個BUTTON控制元件的,一個是ListBox控制元件的LBS_SELCHANGE訊息訊息響應;
程式碼很簡單,如下:
void CAddMtpDlg::OnBnClickedBtnimportdata()
{
CFileDialog dlg(TRUE,NULL,NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST,"資料包檔案 (*.mtp)|*.mtp|所有檔案|*.*||",this);
if(dlg.DoModal()!=IDOK) return;
CFileFind ff;
CString szDir=dlg.GetPathName();
m_sFilePath=szDir; //注意地址
int iEndPos = 0;
iEndPos = szDir.ReverseFind('\\');
szDir = szDir.Left(iEndPos);
szDir +="\\*.mtp";
BOOL bfile;
bfile=ff.FindFile(szDir);
while (bfile){
bfile=ff.FindNextFile();
if (ff.IsArchived() && !ff.IsDots()) {
m_listFile.AddString(ff.GetFileName());
}
}
ff.Close();
}
void CAddMtpDlg::OnLbnSelchangelistImportData()
{
static int nSelIndexLast; //儲存上次的選擇
int nIndex; //用於指定被選中項索引號的INT變數
nIndex=0;
nIndex=m_listFile.GetCurSel(); //獲取ListBox中選中項的索引號
m_listFile.GetText(nIndex,m_sSelect); //將選中項索引號傳入GetText函式中,把選中項內容賦給m_filename變數
nSelIndexLast=nIndex;
MessageBox(m_sSelect,_T("您選擇的是"),MB_OK);
}
其他借鑑:
http://blog.csdn.net/houjixin/article/details/8525788#
遍歷一個資料夾下面的所有檔案MFC版本 - 小 樓 一 夜 聽 春 雨 - 部落格園
http://www.cnblogs.com/kex1n/archive/2011/11/22/2258773.html
1、獲取路徑:通過CFileDialog獲取資料夾的路徑,以及資料夾下面的一個檔案
- OnBnClickedBtnOpenfile()
- {
- // TODO: Add your control notification handler code here
-
CFileDialog dlg(TRUE);///TRUE為OPEN對話方塊,FALSE為SAVE AS對話方塊
- CString csDirParth;
- if(dlg.DoModal()==IDOK)
- m_csFileName = dlg.GetPathName();
- else
- m_csFileName.Empty();
- int iEndPos = 0;
- iEndPos = m_csFileName.ReverseFind('\\');
- csDirParth = m_csFileName.Left(iEndPos);
- m_FileList.clear();
-
GetFileFromDir(csDirParth);
- }
2、下面的程式碼可以獲取路徑csDirPath下的txt檔案,並將所有的txt檔名儲存在vector<CString>型別的變數m_FileList中;
- GetFileFromDir(CString csDirPath)
- {
- csDirPath+="\\*.txt";
- HANDLE file;
- WIN32_FIND_DATA fileData;
- char line[1024];
- char fn[1000];
- //mbstowcs(fn,csDirPath.GetBuffer(),999);
- file = FindFirstFile(csDirPath.GetBuffer(), &fileData);
- m_FileList.push_back(fileData.cFileName);
- bool bState = false;
- bState = FindNextFile(file, &fileData);
- while(bState){
- //wcstombs(line,(const char*)fileData.cFileName,259);
- m_FileList.push_back(fileData.cFileName);
- bState = FindNextFile(file, &fileData);
- }
- }