gpt4 book ai didi

c++ - 如何检测使用 GetOpenFileName 创建的文件对话框?

转载 作者:太空宇宙 更新时间:2023-11-04 14:21:31 25 4
gpt4 key购买 nike

我参与了命名空间外壳扩展(NSE)的开发,其中包含来自某些文件夹的文件列表。我在 Window Vista 上使用标志 OFN_ALLOWMULTISELECT 创建的打开文件对话框 (OFD) 有一些问题。

如果应用程序使用使用 IFileOpenDialog 创建的 OFD,我的 NSE 工作正常。如果应用程序使用使用 GetOpenFileName 创建的 OFD,并且用户选择了一些文件,那么他会得到不正确的结果,因为此函数返回字符串:

<Folder name>\0<File name 1>\0<File name2>\0\0

如果应用程序使用使用 GetOpenFileName 创建的 OFD,我必须在我的 NSE 中使用单选模式。

问题是:

有什么方法可以在我的 NSE 中检测到 OFD 是使用 GetOpenFileName 创建的吗?

最佳答案

旧的 GetOpenFileName 对话框从未设计用于处理不同父文件夹中的多个文件。

尝试通过检测所用打开对话框的类型来解决此问题是错误的,GetOpenFileName 可能只是新界面之上的包装器。

当调用 IShellFolder::EnumObjects 方法时,查找 SHCONTF_FLATLIST 标志。如果未设置该标志,那么您应该恢复到某种类型的简单模式,其中所有项目都具有相同的父项。我意识到这并不是标志的确切用途,但它可能是最好的非 hacky 解决方案。

关于c++ - 如何检测使用 GetOpenFileName 创建的文件对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7286206/

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