Методы класса CFileDialog
Создание объекта класса CFileDialog еще не вызывает отображения соответствующей диалоговой панели. Для этого необходимо воспользоваться специальным методом DoModal класса CFileDialog.
Виртуальный метод DoModal, первоначально определенный в классе CDialog, переопределен в классе CFileDialog:
virtual int DoModal();
При вызове метода DoModal для ранее созданного объекта класса CFileDialog на экране открывается соответствующая диалоговая панель. После того, как вы закончите работать с диалоговой панелью и закроете ее, метод DoModal вернет значения IDOK или IDCANCEL в случае успешного завершения и 0 - в случае возникновения ошибок.
Если вы выберите имя файла и нажмете кнопку Open (для панели Open) или кнопку Save (для панели Save As), метод DoModal вернет значение IDOK. Если вы решите отменить выбор файла и нажмете кнопку Cancel или выберите из меню диалоговой панели строку Close, метод DoModal вернет значение IDCANCEL.
После того, как вы закроете диалоговую панель и метод DoModal вернет управление, можно воспользоваться другими методами класса CFileDialog, чтобы определить имена выбранных файлов.
Метод | Описание | ||
GetPathName | Определяет полный путь выбранного файла | ||
GetFileName | Определяет имя выбранного файла | ||
GetFileExt | Определяет расширение имени выбранного файла | ||
GetFileTitle | Позволяет определить заголовок выбранного файла | ||
GetNextPathName | Если диалоговая панель позволяет выбрать сразу несколько файлов, то метод GetNextPathName можно использовать для определения полного пути следующего из выбранных файлов | ||
GetReadOnlyPref | Позволяет узнать состояние атрибута “только читаемый” (read-only) выбранного файла | ||
GetStartPosition | Возвращает положение первого элемента из списка имен файлов |
Наиболее важный метод из представленных в таблице - GetPathName. Он получает полный путь файла, выбранного из диалоговых панелей Open или Save As:
CString GetPathName() const;
Как мы уже говорили, диалоговые панели Open и Save As можно использовать для выбора нескольких файлов. Для этого, в поле Flags структуры m_ofn должен быть установлен флаг OFN_ALLOWMULTISELECT. Тогда метод GetPathName возвращает массив строк, состоящий из нескольких строк, заканчивающихся двоичным нулем. Первая из данных строк содержит путь к каталогу, в котором расположены выбранные файлы, остальные строки содержат имена выбранных файлов. Естественно, с тем чтобы выделить путь к каталогу проблем не возникает, а чтобы получить имена выбранных файлов, вы должны использовать методы GetStartPosition и GetNextPathName.
Метод GetStartPosition возвращает значение типа POSITION. Оно предназначено для передачи методу GetNextPathName и получения очередного имени выбранного файла. Если пользователь не выбрал ни одного файла, метод GetStartPosition возвращает значение NULL:
POSITION GetStartPosition() const;
Значение, полученное методом GetStartPosition, следует записать во временную переменную типа POSITION и передать ссылку на нее методу GetNextPathName:
CString GetNextPathName(POSITION& pos) const;
Метод GetNextPathName вернет полный путь первого, из выбранных в диалоговой панели файлов, и изменит значение переменной pos, переданной методу по ссылке. Новое значение переменной pos можно использовать для последующих вызовов метода GetNextPathName и получения полных путей всех остальных выбранных файлов. Когда метод GetNextPathName вернет имена всех выбранных файлов, в переменную pos записывается значение NULL.
В отличие от метода GetPathName, метод GetFileName позволяет определить только имя выбранного файла, без пути и расширения:
CString GetFileName() const;
Метод GetFileExt возвращает только расширение файла, выбранного в диалоговой панели:
CString GetFileExt() const;
Метод GetFileTitle позволяет получить полное имя файла, включая его расширение:
CString GetFileTitle() const;
В стандартных диалоговоых панелях Open и Save As имеется переключатель Read Only. Заметим, что по умолчанию этот переключатель не отображается. Если вы желаете воспользоваться этим переключателем, флаг OFN_HIDEREADONLY должен быть сброшен.
Метод GetReadOnlyPref позволяет определить положение переключателя Read Only. Если переключатель включен, то метод GetReadOnlyPref возвращает ненулевое значение. В противном случае GetReadOnlyPref возвращает нуль:
BOOL GetReadOnlyPref() const;