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);
}
}
基于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);
}
}
相关文章推荐
- Android Drawable Resource学习(二)、BitmapDrawable和Bitmap
- 使用canvas 将img 的url 转换为base64格式
- H-Index
- ios9 jsonkit crash更新xcode7后原来的jsonkit崩溃
- apktool反编译工具
- 手推期望、方差
- 【原创教程】一、Angular教程系列之认识angular
- HDU 5455 Fang Fang
- Netty:一种非易失堵塞client/server相框
- Caused by: java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadP
- 菜鸟-手把手教你把Acegi应用到实际项目中(6)
- iscsi
- 私有点播cdn切换前-测试总结
- 使用 nginx + node.js 反向代理
- 网络安全书籍推荐
- 可视化与办公自动化学习
- 可视化与办公自动化学习
- 菜鸟-手把手教你把Acegi应用到实际项目中(5)
- C++替换字符
- mysql主从复制配置篇