我参与了包含一些文件夹中的文件列表的命名空间外壳扩展(NSE)的开发。我在Window上用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创建的
发布于 2017-02-11 23:24:01
旧的GetOpenFileName对话框从未设计为处理不同父文件夹中的多个文件。
试图通过检测使用的打开对话框的类型来解决这个问题是错误的,GetOpenFileName可能只是新界面上的一个包装器。
当调用IShellFolder::EnumObjects方法时,查找SHCONTF_FLATLIST标志。如果没有设置该标志,那么您应该恢复到某种类型的简单模式,其中所有项都具有相同的父项。我意识到这并不是旗帜的用途,但它可能是最好的非黑客解决方案。
https://stackoverflow.com/questions/7286206
复制相似问题