【问题标题】:How Do I Let the User Save to a Directory?如何让用户保存到目录?
【发布时间】:2011-06-22 13:59:13
【问题描述】:

语言: C++

开发环境:Microsoft Visual C++

使用的库: MFC

问题:我正在创建一个大型首选项编辑工具,其中包含具有不同设置的对话框页面,供用户自定义。每个“页面”设置都将写入其自己的 XML 文件。

用户将有两个选项:1) 保存这些,系统将提示他们指定要保存的页面,以及 2) 全部保存,其中将每个页面保存到它们自己的 XML 文件中。

对于 Save All 功能,如果用户只需要指定他/她希望保存所有文件的目录,我会喜欢它。我相当肯定我必须使用 FolderBrowserDialog 类,但我不确定如何使用。我想它与 OpenFile 对话框或 SaveFile 对话框非常相似,其中一个参数指定保存到目录。

我在 MSDN 上找到了 FolderBrowserDialog 类,但它不是很有帮助。任何帮助将不胜感激!

解决方案:我找到了一个可行的解决方案。它本质上是上面几个答案的组合,但是对于将来寻求类似解决方案的人,我引用了 THIS 页面。作者为创建目录选择器对话框所需的杂乱代码创建了一个包装类。感谢您的所有建议。你们都帮助我朝着正确的方向前进。干杯。

~乔恩

【问题讨论】:

    标签: visual-c++ file-io mfc


    【解决方案1】:

    使用::SHBrowseForFolder()。它显示了标准的“浏览文件夹对话框”(至少到 Windows XP;我不知道 Vista/7 是否有新的)。
    我个人使用它包裹在一个类中,如 here 所示。

    【讨论】:

    • 我在 SHBrowseForFolder 的文档中看到,对于 Vista 及更高版本,推荐的方法是使用“IFileDialog with the FOS_PICKFOLDERS”
    【解决方案2】:

    我认为要求用户保存“单个”页面很奇怪,我认为您应该将所有页面保存在一个文件中(嘿,但只有我一个)。

    如果您需要保存单个页面,则必须通过一个列出页面的小对话框提示用户并让用户选择哪个页面;或者您可以决定只保存修改过的页面。

    要选择文件夹,最简单的方法是使用 ShBrowseForFolder (http://msdn.microsoft.com/en-us/library/bb762115(v=vs.85).aspx)

    最大。

    【讨论】:

    • +1 我正要自己推荐 ShBrowseForFolder 函数。
    • 此工具支持的程序需要单独的文件。这是我必须这样做的唯一原因。因此,如果他们只想编辑单个文件(“Preferences1.xml”或其他文件),那么我希望他们有选择权,这样他们就不必填写其他所有内容。否则我会同意你的:)
    • 天啊,有没有更简单的方法?!我真的必须使用 DLL 吗?
    【解决方案3】:

    查看the OPENFILENAME 结构和GetSaveFileName 函数。后者实际上显示了保存文件对话框。

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 2019-08-20
      • 1970-01-01
      • 2021-08-18
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      相关资源
      最近更新 更多