본문 바로가기

개발자 모드/MFC

MFC 폴더 선택해서 파일명 list box에 출력하기

728x90

 

인터넷에 돌고 있는

 

MFC에서 폴더 선택해서 파일 리스트 출력 하는 소스코드 

 

void CtestttDlg::OnBnClickedButton1()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

	//파일 선택 다이얼로그 
	strPathName1 = GetUserSelectFolder(_T("선택 파일")); 


	if(strPathName1.GetLength() == 0)
		return;

	SetDlgItemText(IDC_EDIT1, strPathName1);  


	GetFileList1(strPathName1);
}

 

버튼 1에 대한 소스코드 

 

CString CtestttDlg::GetUserSelectFolder(CString strMsg)
{
	ITEMIDLIST *pidlBrowse; 
	TCHAR pszPathname[1024]={0,}; 
	BROWSEINFO BrInfo;
	BrInfo.hwndOwner = GetSafeHwnd(); 
	BrInfo.pidlRoot = NULL;
	CString strUploadDir;

	memset(&BrInfo, 0, sizeof(BrInfo));
	BrInfo.pszDisplayName = pszPathname;
	BrInfo.lpszTitle = strMsg;
	BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;

	pidlBrowse = ::SHBrowseForFolder(&BrInfo);

	if( pidlBrowse != NULL)
	{
		::SHGetPathFromIDList(pidlBrowse, pszPathname);
		strUploadDir = pszPathname;  // 폴더 경로
	}
	else
		strUploadDir = _T("");

	return strUploadDir;
}

폴더 선택에 대한 소스코드

 

 

void CtestttDlg::GetFileList1(CString strFolder)   
{   
	CFileFind file;  
	BOOL b = file.FindFile(strFolder + _T("\\*.*"));	     	// 모든 확장자를 다 사용.	
	//	CString strMusicFilter = ".MP3.OGG.WMA.WAV";			// 필터링 하고 싶으면 이렇게 쓰면 됨
	CString strFolderItem, strFileExt, strTempString;  

	while(b)  
	{  
		b = file.FindNextFile();  
		if(file.IsDirectory() && !file.IsDots())			// 디렉토리 발견시 
		{  
			strFolderItem = file.GetFilePath();  
			GetFileList1(strFolderItem);						// 하위폴더를 검색하기 위해 재귀호출 발생  
		} 
		strFolderItem = file.GetFilePath();  
		strFileExt = strFolderItem.Mid(strFolderItem.ReverseFind('.'));		// 확장자만 추출한다. 

		if (!file.IsDots())									// 파일 탐색 필터 정의에따라 해당 StringList에 추가
		{  
			strFileExt.MakeUpper();							// strFileExt 에는 확장자 (.EXE 형태) 가 들어옴. 비교위해 대문자화 함
			if( file.IsDirectory() ) continue;				// 폴더만 남는 경우는 넣으면 안됨 
           
			strFolderItem.Replace(strPathName1, _T(""));
			

			//m_list_box.AddString(strFolderItem);        

				int index = m_list_box.InsertString(-1,strFolderItem);       
	
		} 
	}
}


 

폴더 안의 파일 명을 리스트 박스에 출력 하는 소스코드

 

폴더 선택 파일리스트 출력.egg
0.16MB

 

인터넷에 돌고 있는 폴더 선택 후 

 

파일 출력하는 코드는 다 좋은데 현재...

 

폴더 별로 출력하는게 아니라 ... 파일명이나 폴더명으로 출력해서

 

아름답게 출력되지 않는 현상이 있다

 

이부분을 좀 더 수정해서 꾸며야겠음

 

728x90