4.17 - Имена файлов и каталоги

Информация в этом разделе применяется для диалоговых окон Открыть (Open) и Сохранить как (Save As) как в стиле Проводника, так и в старом стиле.

Перед вызовом функции GetOpenFileName или GetSaveFileName, элемент lpstrFile структуры OPENFILENAME должен указывать на буфер, который примет имя файла. Элемент nMaxFile должен определять размер, в байтах (для версии ANSI) или символах (для версии Уникода), буфера lpstrFile.

Если пользователь задает имя файла и щелкает мышью по кнопке OK, диалоговое окно копирует выбранный диск, каталог и имя файла в буфер lpstrFile. Функция также устанавливает элементы nFileOffset и nFileExtension со смещением, в байтах или символах, с самого начала буфера для имени файла и для расширения имени файла, соответственно.

Чтобы извлечь только имя файла и расширение, установите элемент lpstrFileTitle так, чтобы он указывал на буфер, а в элементе nMaxFileTitle установите размер, в байтах (версия ANSI) или символах (версия Уникода), буфера. Или же, вы можете передать буфер lpstrFile при вызове функции GetFileTitle, чтобы получить отображение имени выбранного файла. Однако обратите внимание, что имя файла, которое GetFileTitle возвращает, включает в себя расширение только в том случае, если это является выбором пользователя для отображающихся имен файлов.

Диалоговое окно использует текущий каталог для процесса вызова в качестве начального каталога от которого отображаются файлы и каталоги. Используйте функции GetCurrentDirectory или SetCurrentDirectory, чтобы получить или изменить ваш текущий каталог. Чтобы определить другой начальный каталог без изменения вашего текущего каталога, используйте элемент lpstrInitialDir, для определения имени каталога. Диалоговое окно автоматически изменит ваш текущий каталог, когда пользователь выберет другой диск или каталог. Чтобы диалоговому окну запретить изменять ваш текущий каталог, установите флажок OFN_NOCHANGEDIR. Этот флажок не мешает пользователю изменять каталоги для поиска файла.

Чтобы определить заданное по умолчанию расширение имени файла, используйте элемент lpstrDefExt. Если пользователь задает имя файла, которое не имеет расширения, диалоговое окно добавляет свое заданное по умолчанию расширение. Если вы определяете заданное по умолчанию расширение, а пользователь определяет имя файла с другим расширением, диалоговое окно устанавливает флажок OFN_EXTENSIONDIFFERENT.

Чтобы позволить пользователю выбрать из каталога несколько файлов, установите флажок OFN_ALLOWMULTISELECT. Для совместимости со старыми прикладными программами, заданное по умолчанию диалоговое окно многокомпонентного выбора использует пользовательский интерфейс старого стиля. Чтобы показать диалоговое окно многокомпонентного выбора в стиле Проводника, вы должны к тому же установить флажок OFN_EXPLORER.

Если пользователь выбирает больше чем один файл, буфер, указанный элементом lpstrFile возвращает путь к текущему каталогу, сопровождаемому именами выбранных файлов. Элемент nFileOffset - смещение, для первого имени файла, а элемент nFileExtension не используется. Следующая таблица описывает различие между диалоговыми окнами в стиле Проводника и в старом стиле при возврате большого числа имен файлов.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 17.03.2002