如何把某一目录下所有的文件名列在ListBox中?
如果使用ListBox的Dir()函数,得到的文件名是8、3格式,
会有Program~1.exe, Program~2.exe之类的,
而我需要的是文件完整的名字,如ProgramTom.exe, ProgramJack.exe。
请指点!
8 个解决方案
#1
用FindFirstFile、FindNextFile函数。
#2
在CFileDialog 中选择多个文件并将所有文件名加入CListBox中
CFileDialog Filedlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,"Word document(*.doc)|*.doc|All Files(*.*)|*.*||"); //declare a CFileDialog object
CString filename; //The selected filename
int num=Filedlg.m_ofn.nFileOffset; //The first name's offset to the dir's
//beginning
CString dir=Filedlg.m_ofn.lpstrFile; // The directory path of the files
char *file=Filedlg.m_ofn.lpstrFile; //As up.
int length =dir.GetLength(); // The length of the directory path
int total=num; //The copy of the num;
while(file[total]!=NULL && file[total+1]!=NULL)
{
while(file[total]!=NULL) //get the next filename position,just before the
//next filename.
total++;
for(int i=length+1;i<total;i++)
filename=filename+file[i]; //the next filename is here now
length=total;
if(filename!="")
m_cList.AddString(dir+'\\'+filename); //Add the filename to the list.The
//m_cList is a CListBox object,and it is a variableof the dialog box
else
m_cList.AddString(dir); // If you only select one filename, the
//dir will include the full file pathname.
filename=_T(""); //To be ready for the next filename
total++; //The total point move forward to the next name's beginning
} //The lpstrFile structure is like this : "c:\temp a.wma b.wma c.wma ... "
参考一下吧
CFileDialog Filedlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,"Word document(*.doc)|*.doc|All Files(*.*)|*.*||"); //declare a CFileDialog object
CString filename; //The selected filename
int num=Filedlg.m_ofn.nFileOffset; //The first name's offset to the dir's
//beginning
CString dir=Filedlg.m_ofn.lpstrFile; // The directory path of the files
char *file=Filedlg.m_ofn.lpstrFile; //As up.
int length =dir.GetLength(); // The length of the directory path
int total=num; //The copy of the num;
while(file[total]!=NULL && file[total+1]!=NULL)
{
while(file[total]!=NULL) //get the next filename position,just before the
//next filename.
total++;
for(int i=length+1;i<total;i++)
filename=filename+file[i]; //the next filename is here now
length=total;
if(filename!="")
m_cList.AddString(dir+'\\'+filename); //Add the filename to the list.The
//m_cList is a CListBox object,and it is a variableof the dialog box
else
m_cList.AddString(dir); // If you only select one filename, the
//dir will include the full file pathname.
filename=_T(""); //To be ready for the next filename
total++; //The total point move forward to the next name's beginning
} //The lpstrFile structure is like this : "c:\temp a.wma b.wma c.wma ... "
参考一下吧
#3
谢谢回答,可惜我还是比较愚笨。
我有一个对话框,其中的一个列表框需要在程序启动时,
列出当前目录下的所有以.doc为后缀名的文件名。
joknan(西风漂流)大哥说的是通过文件打开框来加入,但是我需要的是程序初始化就搞定。
Nilaix(刀锋)大哥说的FindFirstFile,不知道能否针对只有后缀名的文件,我回头再查查。
大伙儿瞧瞧吧!
我有一个对话框,其中的一个列表框需要在程序启动时,
列出当前目录下的所有以.doc为后缀名的文件名。
joknan(西风漂流)大哥说的是通过文件打开框来加入,但是我需要的是程序初始化就搞定。
Nilaix(刀锋)大哥说的FindFirstFile,不知道能否针对只有后缀名的文件,我回头再查查。
大伙儿瞧瞧吧!
#4
OnInitDialog() :
CFileFind finder;
CString strPath;//路径
CString strFile;// 文件名
BOOL bWorking = finder.FindFile(strPath + "*.doc");
while (bWorking)
{
bWorking = finder.FindNextFile();
strFile = finder.GetFileName();
......
}
CFileFind finder;
CString strPath;//路径
CString strFile;// 文件名
BOOL bWorking = finder.FindFile(strPath + "*.doc");
while (bWorking)
{
bWorking = finder.FindNextFile();
strFile = finder.GetFileName();
......
}
#5
同意yucxtry, 用CFileFind类。
也可以直接用Win32 API如FindFirstFile,FindNextFile
等。
msdn中有使用CFileFind类的例子。
也可以直接用Win32 API如FindFirstFile,FindNextFile
等。
msdn中有使用CFileFind类的例子。
#6
懂了.
#7
谢了!
#8
不错!
#1
用FindFirstFile、FindNextFile函数。
#2
在CFileDialog 中选择多个文件并将所有文件名加入CListBox中
CFileDialog Filedlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,"Word document(*.doc)|*.doc|All Files(*.*)|*.*||"); //declare a CFileDialog object
CString filename; //The selected filename
int num=Filedlg.m_ofn.nFileOffset; //The first name's offset to the dir's
//beginning
CString dir=Filedlg.m_ofn.lpstrFile; // The directory path of the files
char *file=Filedlg.m_ofn.lpstrFile; //As up.
int length =dir.GetLength(); // The length of the directory path
int total=num; //The copy of the num;
while(file[total]!=NULL && file[total+1]!=NULL)
{
while(file[total]!=NULL) //get the next filename position,just before the
//next filename.
total++;
for(int i=length+1;i<total;i++)
filename=filename+file[i]; //the next filename is here now
length=total;
if(filename!="")
m_cList.AddString(dir+'\\'+filename); //Add the filename to the list.The
//m_cList is a CListBox object,and it is a variableof the dialog box
else
m_cList.AddString(dir); // If you only select one filename, the
//dir will include the full file pathname.
filename=_T(""); //To be ready for the next filename
total++; //The total point move forward to the next name's beginning
} //The lpstrFile structure is like this : "c:\temp a.wma b.wma c.wma ... "
参考一下吧
CFileDialog Filedlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,"Word document(*.doc)|*.doc|All Files(*.*)|*.*||"); //declare a CFileDialog object
CString filename; //The selected filename
int num=Filedlg.m_ofn.nFileOffset; //The first name's offset to the dir's
//beginning
CString dir=Filedlg.m_ofn.lpstrFile; // The directory path of the files
char *file=Filedlg.m_ofn.lpstrFile; //As up.
int length =dir.GetLength(); // The length of the directory path
int total=num; //The copy of the num;
while(file[total]!=NULL && file[total+1]!=NULL)
{
while(file[total]!=NULL) //get the next filename position,just before the
//next filename.
total++;
for(int i=length+1;i<total;i++)
filename=filename+file[i]; //the next filename is here now
length=total;
if(filename!="")
m_cList.AddString(dir+'\\'+filename); //Add the filename to the list.The
//m_cList is a CListBox object,and it is a variableof the dialog box
else
m_cList.AddString(dir); // If you only select one filename, the
//dir will include the full file pathname.
filename=_T(""); //To be ready for the next filename
total++; //The total point move forward to the next name's beginning
} //The lpstrFile structure is like this : "c:\temp a.wma b.wma c.wma ... "
参考一下吧
#3
谢谢回答,可惜我还是比较愚笨。
我有一个对话框,其中的一个列表框需要在程序启动时,
列出当前目录下的所有以.doc为后缀名的文件名。
joknan(西风漂流)大哥说的是通过文件打开框来加入,但是我需要的是程序初始化就搞定。
Nilaix(刀锋)大哥说的FindFirstFile,不知道能否针对只有后缀名的文件,我回头再查查。
大伙儿瞧瞧吧!
我有一个对话框,其中的一个列表框需要在程序启动时,
列出当前目录下的所有以.doc为后缀名的文件名。
joknan(西风漂流)大哥说的是通过文件打开框来加入,但是我需要的是程序初始化就搞定。
Nilaix(刀锋)大哥说的FindFirstFile,不知道能否针对只有后缀名的文件,我回头再查查。
大伙儿瞧瞧吧!
#4
OnInitDialog() :
CFileFind finder;
CString strPath;//路径
CString strFile;// 文件名
BOOL bWorking = finder.FindFile(strPath + "*.doc");
while (bWorking)
{
bWorking = finder.FindNextFile();
strFile = finder.GetFileName();
......
}
CFileFind finder;
CString strPath;//路径
CString strFile;// 文件名
BOOL bWorking = finder.FindFile(strPath + "*.doc");
while (bWorking)
{
bWorking = finder.FindNextFile();
strFile = finder.GetFileName();
......
}
#5
同意yucxtry, 用CFileFind类。
也可以直接用Win32 API如FindFirstFile,FindNextFile
等。
msdn中有使用CFileFind类的例子。
也可以直接用Win32 API如FindFirstFile,FindNextFile
等。
msdn中有使用CFileFind类的例子。
#6
懂了.
#7
谢了!
#8
不错!