临时用到,就写了一下,保存一下成果!
基于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);
- }
- }