c++ - MFC 中是否有一个标准的目录浏览器对话框,不涉及用户创建目录以指定尚不存在的目录?

标签 c++ windows mfc directory common-dialog

我正在开发安装程序的引导应用程序,我有一个对话框,用户可以打开该对话框以从给定的默认目录中选择不同的目标目录。目前,我正在为此使用 CFolderDialog,但要让用户选择一个尚不存在的文件夹,他必须先创建该文件夹。一旦用户指定了目录,我希望能够将其删除,以便在我启动安装程序时,它可以自己创建文件夹,以便将其标记为卸载。此外,如果用户在任何时候取消了我的 Bootstrap 应用程序,我不希望用户在文件夹浏览器中四处乱逛时留下任何不需要的文件夹。我遇到的问题是,如果我尝试删除用户在浏览新目标文件夹时创建的文件夹,我会收到共享冲突错误。 (我将目录的创建时间与对话启动时的系统时间进行比较,以确保我可以删除目录。)

我需要的是一种解决共享违规的方法,或者另一个标准对话,它不涉及用户必须创建一个新目录才能指定它,因为它还不存在。

编辑:当我最初发布这个时,我忘记了我正在使用的文件夹对话实际上是 XFolder Dialog on the Code Project site .虽然它确实允许用户浏览目录,但它不像我过去在安装程序中看到的文件夹浏览器对话框那样直观。我真正想要的是用户可以浏览到他们的新文件夹所在的文件夹,然后只需将新文件夹附加到对话框编辑框中的路径,而无需创建新文件夹。

更新 由于 XFolder 对话框是使用模板的标准打开文件对话框的自定义,因此它不适用于 Vista 或更新的操作系统。因此,我必须放弃将其用于其他用途。我仍然在这里寻找解决方案。如果有人可以告诉我如何在使用 SHBrowseForFolder() 时设置初始目录(而不是根目录),我愿意将其用作我的解决方案。

最佳答案

为了您的目的,让用户选择一个基本目录可能是有意义的,例如“C:\在用户选择基地后显示组合路径。这样,用户不会觉得他已经对您正在创建的目录负责,但仍然对目的地有一定程度的控制。

关于c++ - MFC 中是否有一个标准的目录浏览器对话框,不涉及用户创建目录以指定尚不存在的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780152/

相关文章:

c++ - 错误 C2664 : 'callToPrint' : cannot convert parameter 1 from 'std::wstring' to 'LPTSTR'

C++ 蛇克隆 : timer function ignores given stop time and stops at it's own fixed time

java - Hibernate - 使用 @Column(length= 40000) 时不会在 Ubuntu mysql 上创建表

c++ - 在程序启动时从另一个目录加载 DLL

c# - .net 应用程序在通过计划任务触发时失败

c++ - 如何对用户定义类型的 CArray 进行排序?

c++ - 编译器生成昂贵的MOVZX指令

c++ - 算法中令人费解的行为应该根据列表的项目创建 4 个列表

c++ - DrawTextA() 的结果不理想

c# - DataGrid 的 C++ 实现