화일 불러오기나 저장하기 기능들을 작성하려다 보면 화일을 선택해야 할 경우가 생긴다. 그때 공통 다이얼로그를 이용하게 되는데 MFC에서는 다음과 같은 클래스를 이용해서 쉽게 해결 할 수 있다.
CFileDialog ofn(TRUE); // FALSE일 경우 저장, TRUE일 경우는 불러오기
CString selectedFilePath;
char szFilter[] = "All Files (*.*)\0*.*\0\0";
ofn.m_ofn.lpstrFilter = szFilter; // 필터를 설정한다.
// 아래 플러그는 매우 중요하다. 화일을 열고나면 AppDirectory가 변경된다.
// 이것을 막아 주기 위한 플래그 이다.
ofn.m_ofn.Flags |= OFN_NOCHANGEDIR;
if (ofn.DoModal() == IDOK)
{
selectedFilePath = ofn.GetPathName();
// 작업
}
그리고 아래는 다중 화일을 선택하기 위한 코드이다.
CFileDialog ofn(TRUE);
POSITION StartPosition;
CString selectedFilePath;
char szFilter[] = "All Files (*.*)\0*.*\0\0";
ofn.m_ofn.lpstrFilter = szFilter;
ofn.m_ofn.Flags |= OFN_NOCHANGEDIR;
//다중 선택을 위한 플래그이다.
ofn.m_ofn.Flags |= OFN_ALLOWMULTISELECT;
StartPosition = ofn.GetStartPosition();
if (ofn.DoModal() == IDOK)
{
while(StartPosition)
{
selectedFilePath = ofn.GetNextPathName(StartPosition);
// 작업
}
}