winapi 是否可以将文件对话框(打开/保存)限制到特定文件夹?
OPENFILENAME fileDialogSettings;
...
fileDialogSettings.lpstrInitialDir = "Some path";
...
if(GetOpenFileName(&fileDialogSettings))
{
}
我想将“Some path”作为对话框中的根路径,并将导航限制在该文件夹及其子文件夹中。我可以为此使用 lpfnHook 吗?
最佳答案
如果您只针对 Vista+,您可以使用 IFileDialogEvents::OnFolderChanging
完全阻止更改的方法。
对于旧版本的 Windows,OpenFileDialog 允许您指定一个 Hook 程序,您可以在其中获取 CDN_FOLDERCHANGE
通知。
虽然我看不到任何禁止更改的消息,但您可以发布一条消息告诉它“返回”,或者只禁用“确定”按钮。
另一种选择是处理 CDN_FILEOK
通知和拒绝所需目录之外的路径。
参见 this MSDN article有关 Hook 过程的更多详细信息。 This question还讨论了在打开的对话框中更改目录。
关于c++ - 如何将 FileDialog 限制到特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520570/