반응형

다이얼로그는 크게 파일/폴더 탐색 두가지로 구분 되며 다음은 파일경로를 탐색하여 그 위치의 저장하는 코드이다. 

 

1) Edit Control 생성

2) 파일 경로 설정

 

3) 결과

 

4)코드

 

void CTEST_CREATEDlg::OnBnClickedButton1()
{
	//char szFilter[20]  ;
	CString szFilter = _T("txt file(*.txt)|*.txt; |ALL File(*.*(|*.*||");
	CFileDialog dlg(FALSE, _T(""), NULL, OFN_OVERWRITEPROMPT, szFilter);
	//CFileDialog dlg(FALSE, "bmp", "pcmon", OFN_OVERWRITEPROMPT, szFilter);
	// TODO: Add your control notification handler code here
	CString strFolder;
	CString strPath;
	CString strFileName;
	CString strFolderPath;
	if (IDOK == dlg.DoModal())
	{
		strFolder = dlg.GetFolderPath();
		strPath = dlg.GetPathName();
		strFileName = dlg.GetFileName();

		m_strFFolder.SetWindowTextW(strFolder);
		m_strFPath.SetWindowTextW(strPath);
		m_strFName.SetWindowTextW(strFileName); 
		
	} 
}

 

기존의 char 배열에 szFilter를 CString으로 구현 --> MFC에 더 효율적 (유니코드, 멀티바이트 등의 형식오류 최소화)

 

 

5) 추가 

1) 경로에서 파일이름을 제외하고 경로만 추출

2) 경로에서 파일이름만 추출하고 싶을때  또는 마지막 경로depth를 추출

CString re = strPath.Mid(0, strPath.ReverseFind('\\'));//파일경로 (마지막경로제외)
CString res = strPath.Mid(strPath.ReverseFind('\\')+1, strPath.GetLength());//마지막경로

 

반응형

+ Recent posts