如何将文件对话框限制为特定路径
How to restrict FileDialog to specific path
是否可以将文件对话框(打开/保存)限制为特定文件夹是winapi?
OPENFILENAME fileDialogSettings;
...
fileDialogSettings.lpstrInitialDir = "Some path";
...
if(GetOpenFileName(&fileDialogSettings))
{
}
我想在对话框中将"一些路径"作为根路径,并限制对此文件夹及其子文件夹的导航。我可以为此使用 lpfnHook 吗?
如果您仅定位 Vista+,则可以使用 IFileDialogEvents::OnFolderChanging
方法完全阻止更改。
对于较旧版本的 Windows,OpenFileDialog 允许您指定挂钩过程,您可以在其中选取CDN_FOLDERCHANGE
通知。虽然我看不到任何禁止更改的消息,但您可以发布一条消息告诉它"返回",或者只是禁用"确定"按钮。
另一种选择是处理CDN_FILEOK
通知并拒绝所需目录之外的路径。
有关挂钩过程的更多详细信息,请参阅此 MSDN 文章。这个问题还讨论了在打开的对话框中更改目录。
查看OFN_NOCHANGEDIR
标志,尽管文档是这样说的:
将当前目录还原为其原始值(如果用户) 在搜索文件时更改了目录。
此标志对 GetOpenFileName 无效。
编辑:再次阅读您的问题,我猜您不希望用户从该目录向上导航,不确定 GetOpen文件名是否可以这样做,您可能必须使用目录列表视图创建自己的对话框并以这种方式限制它们。
相关文章:
- 如何将更多文件夹添加到c++include路径
- 从函数角度看ID到文件路径的内部与外部映射
- 在C++中设置基于操作系统的文件路径
- C++17 文件系统::remove_all 带有通配符路径
- 从 C 中的变量获取文件的路径,C++
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 修改生成文件以简化框架 #include 路径
- 将Visual Studio Code路径设置为.clang_format文件
- Windows 非 ASCII 文件路径
- 非 ASCII 文件路径窗口
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 获取 H5::D ataSet 的hid_t和文件中的路径以使用 H5OCopy
- 在特定 Unicode 路径中创建文件
- 如何让用户在 tinyxml2 中输入 XML 文件的路径
- 如何将COM .tlb文件导入具有相对路径C++文件中?
- C++ 路径文件存在限制为 260 个字符
- QT-在pro中指定DLL路径.文件
- 路径文件存在导致链接器错误 2028/2019
- 选择QTableWidgetItem qt的路径文件
- 如何有一个正确的路径文件读取它到stringstream