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获取文件夹的路径,以及文件夹下面的一个文件


[cpp]  view plain copy
  1. OnBnClickedBtnOpenfile()  
  2. {  
  3.     // TODO: Add your control notification handler code here      
  4.     CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS对话框  
  5.     CString csDirParth;  
  6.     if(dlg.DoModal()==IDOK)  
  7.         m_csFileName = dlg.GetPathName();  
  8.     else  
  9.         m_csFileName.Empty();  
  10.   
  11.     int iEndPos = 0;  
  12.     iEndPos = m_csFileName.ReverseFind('\\');  
  13.     csDirParth = m_csFileName.Left(iEndPos);  
  14.   
  15.     m_FileList.clear();  
  16.     GetFileFromDir(csDirParth);  
  17. }  


2、下面的代码可以获取路径csDirPath下的txt文件,并将所有的txt文件名保存在vector<CString>类型的变量m_FileList中;

[cpp]  view plain copy
  1. GetFileFromDir(CString csDirPath)  
  2. {  
  3.     csDirPath+="\\*.txt";  
  4.     HANDLE file;  
  5.     WIN32_FIND_DATA fileData;  
  6.     char line[1024];  
  7.     char fn[1000];  
  8.     //mbstowcs(fn,csDirPath.GetBuffer(),999);  
  9.     file = FindFirstFile(csDirPath.GetBuffer(), &fileData);  
  10.     m_FileList.push_back(fileData.cFileName);  
  11.     bool bState = false;  
  12.     bState = FindNextFile(file, &fileData);  
  13.     while(bState){  
  14.         //wcstombs(line,(const char*)fileData.cFileName,259);  
  15.         m_FileList.push_back(fileData.cFileName);  
  16.         bState = FindNextFile(file, &fileData);  
  17.     }  
  18. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值