gpt4 book ai didi

c++ - 使用 GetOpenFileName() 限制目录

转载 作者:行者123 更新时间:2023-11-30 04:23:13 27 4
gpt4 key购买 nike

我知道 Microsoft 建议在 GetOpenFileName()GetSaveFileName() 上使用通用项对话框,但我使用的是一些较旧的代码。

如何限制 GetOpenFileName() 只允许用户选择特定目录中的文件?

例如,我只希望用户能够从“Images”目录中选择一个文件。我不希望他们在打开文件时能够导航到其他目录。他们必须从“图像”目录中选择一个文件。

标志 OFN_NOCHANGEDIR 听起来可能是我需要的,但如果用户在打开文件时更改当前目录,它只会将当前目录更改回原始目录。

如果使用 GetOpenFileName() 不可行,那么使用较新的 Common Item Dialog 是否可行?

最佳答案

对于 GetOpenFileName()GetSaveFileName(),您可以将回调过程分配给 OPENFILENAME::lpfnHook 字段。当它收到 CDN_FILEOK 时通知,通过向对话框发送 CDM_GETFOLDERPATH 来检索选定的文件夹信息。如果您不接受该文件夹,则向用户显示一条消息,然后通过调用 SetWindowLong() 设置一个非零 DWL_MSGRESULT 值来拒绝所选文件,并从 Hook 过程返回一个非零值。

更新:对于IFileOpenDialogIFileSaveDialog,您可以实现IFileDialogEvents::OnFolderChanging事件回调以防止导航到不需要的文件夹,只需返回一个错误 HRESULT 值而不是 S_OKE_NOTIMPL

关于c++ - 使用 GetOpenFileName() 限制目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com