//============================================================
// Приложение FileDlg
// (c) Frolov G.V., 1996
// E-mail: frolov@glas.apc.org
//============================================================
// Включаемый файл для библиотеки MFC
#include <afxwin.h>

// Включаемый файл для стандартных диалоговых панелей
#include <afxdlgs.h>

//============================================================
// Класс CFileDlgApp
// Наследуем от базового класса CWinApp главный
// класс приложения CFileDlgApp
//============================================================
class CFileDlgApp : public CWinApp
{
public:
   // Мы будем переопределять метод InitInstance,
   // предназначенный для инициализации приложения
   virtual BOOL InitInstance();
};
 
// Создаем объект приложение класса CFileDlgApp
CFileDlgApp FileDlgApp;
 
//============================================================
// Метод InitInstance класса CFileDlgApp
// Переопределяем виртуальный метод InitInstance
// класса CWinApp. Он вызывается каждый раз при запуске 
// приложения
//============================================================
BOOL CFileDlgApp::InitInstance()
{
   // Определяем объект класса CFileDialog, представляющий 
   // стандартную диалоговую панель Open
   CFileDialog mFileOpen(TRUE);

   // Переменная pos будет использоваться для получения 
	// полных имен файлов, выбранных в панели Open
   POSITION pos;
	
   // В строку msg будут записываться названия файлов
   CString msg;

   // Устанавливаем флаг OFN_ALLOWMULTISELECT, который
   // разрешает одновременно выбирать несколько файлов
   mFileOpen.m_ofn.Flags |= OFN_ALLOWMULTISELECT;
	
   // Отображаем диалоговую панель Open и позволяем 
   // пользователю выбрать с помощью нее один или 
   // несколько файлов
   int result = mFileOpen.DoModal();

   // Проверяем как была закрыта диалоговая панель Open - 
   // по нажатию кнопки OK или Cancel
   if(result == IDCANCEL) 
   {
      // Если пользователь отказался от выбора файлов и 
      // нажал кнопку Cancel отображаем соответствующее 
      // сообщение
      AfxMessageBox("File not selected");
   }

   else if(result == IDOK)
   {
      // Если пользователь нажал кнопку OK, определяем 
      // начальную позицию для метода GetNextPathName
      pos = mFileOpen.GetStartPosition();

      // В цикле получаем имена файлов, выбранных в 
      // диалоговой панели Open. После получения всех
      // имен, завершаем приложение
      while(pos != NULL ) {

         // Получаем имя очередного файла
         msg = mFileOpen.GetNextPathName( pos );

         // Отображаем имена файлов
         AfxMessageBox("Selected File - " + msg);
      }
   }

   return TRUE;
}
