화일 불러오기나 저장하기 기능들을 작성하려다 보면 화일을 선택해야 할 경우가 생긴다. 그때 공통 다이얼로그를 이용하게 되는데 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);
  // 작업
  }
}

AND