是否可以将文件对话框(打开/保存)限制为特定文件夹是winapi?
OPENFILENAME fileDialogSettings;
...
fileDialogSettings.lpstrInitialDir = "Some path";
...
if(GetOpenFileName(&fileDialogSettings))
{
}
我希望在对话框中将“Some path”作为根路径,并限制导航到此文件夹,并且仅限于子文件夹。我可以使用lpfnHook吗?
答案 0 :(得分:2)
如果您仅定位Vista +,则可以使用IFileDialogEvents::OnFolderChanging
方法完全阻止更改。
对于旧版本的Windows,OpenFileDialog允许您指定一个钩子过程,您可以在其中获取CDN_FOLDERCHANGE
通知。
虽然我看不到任何禁止更改的消息,但您可以发布消息告诉它“退回”,或者只是禁用“确定”按钮。
另一种选择是处理CDN_FILEOK
通知并拒绝所需目录之外的路径。
有关挂钩过程的更多详细信息,请参阅this MSDN article。 This question还讨论了如何在打开的对话框中更改目录。
答案 1 :(得分:0)
查看OFN_NOCHANGEDIR
标志,尽管文档说明了这一点:
如果用户,将当前目录还原为其原始值 在搜索文件时更改了目录。
此标志对GetOpenFileName无效。
编辑:再次阅读你的问题,我想你不希望用户从该目录向上导航,不确定这是否可以使用GetOpenFileName,你可能必须使用目录列表视图创建自己的对话框并限制他们那样。