一个可以得到的文本所选择的项目列表中景的一个共同的对话。但一个不能获得其PIDL,如果用户选择了隐藏已知的扩展(默认),那么一个人真的不能告诉是什么文件被选中没有任何其扩展或其PIDL.

所以可能的方式来解决这个可能是:

  1. 获得IShellView从 标准的公开文件的对话。的 基础IShellView可以告诉什么 该PIDL是当前 选择。所以如果我可以简单地得到 阿霍德的IShellView,我会 金。不幸的是,我没有看到 CDM_xxx会这样做。我 可不想掉我的头顶 任何可能实现它!:(
  2. 其他一些想法?!

我们曾依赖的事实,即Windows9x、2000和XP版本的公共对话文件储存每个项目的PIDL在LVITEM数据(信用保罗DiLascia):

LPCITEMIDLIST pidlItem=(LPCITEMIDLIST)pListCtrl->GetItemData(nItem);

然而,开始与Vista的公共控制和上所述,这种技术失败:(

任何想法?

编辑:我需要能够获得这种信息不仅对于当前选定的项目列表中查看,但所有项目的清单视图。

EDIT2:我需要挖深:

在以前版本的我们的程序,我们提供的能力:(1)按定义按钮"预览",关闭对话,但转让的应用程序的项目清单目前显示的观点,在他们的可见的顺序,随着索引的一个前突出。这个名单必须充分指定的-看到了3个文件是所有"J1329192"(当存在真正3的文件"J1329192.xyz""J1329192.xzy"和"J1329192.z-y-x"[在此顺序)是没有用的。

允许用户类型的部分文件过滤进入"的文件名称:"领域,而公共对话将只显示匹配的文件所给予的部分过滤器,在排序以用户选择。因此,报告应用程序究竟是什么的用户要预览需要,我们可以查询的信息来自名单视图控制(或公共对话本身)。

我们所做的其它改进的文件对话,以及包括在地方预览,显示用户当前的选择作为缩略,以及有一个定义最近的地方接口,等等。所有这一切都是可能的(与大量的工作)前景。后Vista,我碰到墙后面墙。暂时,我们使用一个标准的文件对话与只有非常少数的特点我们自己,这并不当以及与客户(发生了什么事特征X?!)

还有其他的增强,但是,这是一个很好的粗略概述。他们都可以归结为要求的知识的"真的,老实说,什么文件具体地说是在查看索引X?" 和未知的原因-微软似乎并不觉得有必要提供这样一个接口。事实上,他们从来没有。只有通过一些侵和逆向工程是我们能够找出东西的工作引擎盖下获得所需的信息。并且是的,这是不支持的,是的,毫不可避免地破坏了我们的代码。我真的不责怪他们,-我做什么找到厌恶的是,他们的更新,spiffier口远远更多的关闭比他们年长的一个-和它们没有提供更多的前期接口的支助的接口-做这些对话的增强。它就像他们把一个很大的几个步骤,向后并没有转发(在的名称取得进展).

有帮助吗?

解决方案

发送 WM_USER+7 让浏览器,然后得到它的积极壳视的IShellView接口。

你知道的通常后果,使无证件的行为吗?

其他提示

啊,我找到它。你会想要使用 IFileOpenDialog Vista,这应该explicilty支持所有这些行动。

我知道这是一个旧线,但是,在Vista,旧样式的对话仍然支持。你可以关闭Vista的风格,并保留所有你的定义控制作为前。这就是我们做的:我们有一个自定义的预览窗口在一个模板钩入CFileDialog,这似乎是不可能再现在IFileDialog.

我相信你需要通过虚假在BOOL参数的构造关闭Vista式对话。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top