Как я могу позволить пользователю сохранить в каталоге? - PullRequest
0 голосов
/ 22 июня 2011

Язык: C ++

Среда разработки: Microsoft Visual C ++

Используемые библиотеки: MFC

Вопрос: Я создаю большой инструмент редактирования предпочтений со страницами диалоговых окон с различными настройками, которые пользователь может настроить. Каждая «страница» настроек будет записана в свой собственный XML-файл.

У пользователя будет две опции: 1) Сохранить эти , где ему будет предложено указать, какие страницы он хочет сохранить, и 2) Сохранить все , что позволит сохранить каждая страница в свои собственные файлы XML.

Для функции Сохранить все мне бы хотелось, чтобы пользователь только указывал каталог, в который он / она хочет сохранить все файлы. Я вполне уверен, что должен использовать класс FolderBrowserDialog , но я не уверен, как это сделать. Я полагаю, что это очень похоже на диалог OpenFile или диалог SaveFile с одним из аргументов, определяющих сохранение в каталог.

Я нашел класс FolderBrowserDialog на MSDN, но он не очень помог. Любая помощь будет принята с благодарностью!

РЕШЕНИЕ: Я нашел рабочее решение. По сути, это комбинация нескольких ответов выше, но для людей, которые ищут подобное решение в будущем, я сослался на ЭТУ страницу. Автор создал класс-оболочку для грязного кода, который необходим для создания диалога выбора каталога. Спасибо за все предложения. Вы все помогли мне в правильном направлении. Приветствия.

~ Джон

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Я думаю, что попросить пользователя сохранить «отдельные» страницы странно, я думаю, вы должны сохранить все из них в одном файле (эй, но это только я).

Если вам нужно сохранить отдельную страницу, вам нужно будет предложить пользователю небольшое диалоговое окно со списком страниц и позволить пользователю выбрать, какую страницу; или вы можете решить сохранить только те страницы, которые были изменены.

Чтобы выбрать папку, самый простой способ - использовать ShBrowseForFolder (http://msdn.microsoft.com/en-us/library/bb762115(v=vs.85).aspx)

Макс.

2 голосов
/ 22 июня 2011

Используйте ::SHBrowseForFolder().Он показывает стандартный диалог поиска папок (по крайней мере, до Windows XP; я не знаю, есть ли в Vista / 7 новый).
Лично я использую его в классе, как видно здесь .

0 голосов
/ 22 июня 2011

Просмотрите структуру OPENFILENAME и функцию GetSaveFileName . Последний фактически отображает диалоговое окно сохранения файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...