您的位置:首页 > 其它

MFC获取文件夹下所有文件的名字ListBox

2015-09-22 16:20 465 查看
临时用到,就写了一下,保存一下成果!

基于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
plaincopy

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中;

[cpp] view
plaincopy

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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: