MFC ListBox AddString的问题?
程序改写其中某一小段~程序代码:
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麻烦多了~实在搞不懂~
但是成功的果实是很甜美的~