![]() |
#2
wube2012-03-26 21:10
|

void CSTDF_ATDFDlg::OnButton1() //Open File Local
{
// TODO: Add your control notification handler code here
char *Filters="";
if ((SelectMode==1) || (SelectMode==2) || (SelectMode==3))
Filters="STDF档(*.std)|*.std|全部文件(*.*)|*.*";
else if ((SelectMode==4) || (SelectMode==5))
Filters="ATDF档(*.atdf)|*.atdf|全部文件(*.*)|*.*";
CFileDialog FileDlg(TRUE,NULL,"",NULL,Filters);
int result=FileDlg.DoModal();
if(result=IDOK)
{
m_FileNameText.SetWindowText(FileDlg.GetPathName());
FullName=FileDlg.GetPathName();
FileName=FileDlg.GetFileName();
FilePath=FullName.Mid(0,(FullName.GetLength()-FileName.GetLength()));
FileTitle=FileDlg.GetFileTitle();
FileExt=FileDlg.GetFileExt();
if (FileName!="")
FindFile(FilePath,this->m_hWnd);
}
}
//以下是网路上找到的代码部分改写~
void FindFile(LPCTSTR path,HWND hDlg)
{
char szFilter[MAX_PATH];
_makepath( szFilter, NULL, path, "*", "*" );
// 开始搜寻目录下的档案
CFileFind Finder;
BOOL bWorking = Finder.FindFile( szFilter );
if ( bWorking == false ) return;
printf("[PATH] %s\n", path );// 印出目录名称
CStringList lsDir;
while (bWorking)
{
bWorking = Finder.FindNextFile();
if ( Finder.IsDots() ) // 若为 . or .. 则不处理
continue;
else if ( Finder.IsDirectory() ) // 若为目录则将资料push至list之中(为了印出来美观所以...)
//lsDir.AddTail( Finder.GetFilePath() );
else
{
CString str=Finder.GetFileName();
CListBox *pCtrl = (CListBox *)GetDlgItem(hDlg,IDC_LIST1) ;
char *Temp=(char*)path;
strcat(Temp,(LPCTSTR)str);
pCtrl->AddString((LPCTSTR)Temp);//--->问题是运行到这一直出错~但是编译能过~为何?
//printf("\t<FILE> %s\n", Finder.GetFileName() ); // 印出档案名称
}
}
}
MFC比VB6麻烦多了~实在搞不懂~
但是成功的果实是很甜美的~