-
[MFC] MFC FileDialog에서 다중 파일 선택 시, 파일 이름들만 얻기Tech/Development 2011. 12. 15. 03:43
MFC에서 FileDialog 를 사용할 때, OFN_ALLOWMULTISELECT flag를 사용하면 다중 파일 선택이 가능해진다. 이 경우, 파일을 읽어올 때에는 GetStartPosition을 이용하여 하나씩 읽어오게 되는데, 단일 파일일 때와 달리, FileName만 얻는 메소드가 존재하지 않는다.
이 때, 사용가능한 메소드로는 GetNextPathName()가 존재하는데 약간의 차이점은 이 메소드는 파일 경로를 포함하여 전체를 다 읽어온다는 것. 이를 해결하려면 String parsing을 하는 수 밖에 없다. 아래와 같이 Delete 함수를 사용하면 편리하다.
void CtistorycodeDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here CString str = _T("JAVA Script Files(*.js)|*.js|"); CFileDialog dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, str, this ); if ( dlg.DoModal() == IDOK ) { POSITION pos = dlg.GetStartPosition(); m_FileList = ""; while (pos) { CString strFileName = dlg.GetNextPathName(pos); strFileName.Delete( 0, strFileName.ReverseFind('\\')+1); m_FileList += (strFileName+_T("\r\n")); UpdateData(FALSE); } } }