ShellIconOverlayIdentifiers - 为什么这么少?

时间:2010-12-10 16:59:12

标签: windows icons windows-explorer windows-shell

此时,每个人都知道ShellIconOverlayIdentifiers(来自MSDN)的数量有限制:

  

系统可以支持的不同图标叠加处理程序的数量受系统图像列表中可用于图标叠加的空间量的限制。目前有15个插槽用于图标覆盖,其中一些是由系统保留的。因此,只有在没有令人满意的替代方案时才应实施图标叠加处理程序

我可以理解Windows 95中的15个覆盖限制。但是在一个有Gigs of RAM,众多内核和GPU的环境中,在现代操作系统中有这么低数量的技术原因吗?

为什么这个值不可配置?

在给出“效果”答案之前,请考虑: Windows允许配置,以便您可以杀死性能......为什么要专门选择这个问题?

3 个答案:

答案 0 :(得分:83)

除非有人在Windows Shell团队工作,否则我怀疑你是否会得到一个真正解决技术限制以及它们如何影响设计选择的答案。但我会试试......

我的猜测是没有任何技术限制,或者至少现在没有技术限制。 真正的原因可能是没有人花时间坐下来更新代码,设计和规范来解除这个限制。默认情况下没有实现功能,只是因为计算环境在过去几年中发生了变化并不意味着有人坐下来重新编写Windows以充分利用所有这些变化。

您还应该考虑这很可能是一种有意识的设计选择,而非强加的限制。 Raymond Chen(实际上 在shell团队工作)发布一个blog entry回应关于Windows 7移除“共享手”覆盖的骚动。他提出了一个令人信服的论点,即图标叠加真的不是一种显示信息的理想方式(超出系统限制为15的事实)[强调补充]:

  

一般来说,叠加不是一个   提供信息的好方法   因为只能有一个叠加层   每个图标,限制为15   每个ImageList的叠加。 如果有的话   适用于a的两个或多个叠加层   项目,然后一个将赢得和其他人   将失去,在这一点上的价值   叠加层作为一种确定方式   什么属性适用于项目   从唯一的方式来减少   确保遗失的财产是   当你看不到任何叠加时。 (如果   你看到其他一些叠加,你不能   告诉我这是不是因为你的   财产缺失或因为那   其他叠加显示而不是   你的。)

对我来说,在大多数真实案例中添加到shell中的额外混乱根本不值得,这似乎是合理的。 Windows Shell团队显然得出了相同的结论并削减了“共享手”覆盖。雷蒙德的直接解释:

  

鉴于人们使用方式的变化   电脑,分享信息是   越来越多的默认   州。当您设置家庭组时,   几乎所有事情都将成为现实   共享。要消除视觉混乱,   信息被移到了   详细信息窗格。

并且,我知道你特别要求不要提及性能,但是Windows确实尝试让你无法自拔自足。用户需要在shell中做出响应和叠加图标可能会干扰这一点。作为进一步的证据,他们不是优先事项another blog post由同一个Raymond Chen惩罚:

  

应用程序的另一个例子   一种自私的表现观来了   来自开发图标的公司   叠加处理程序外壳对待   将计算重叠为低优先级   项目,因为它更重要   在屏幕上获取图标以便用户   可以开始做任何事情   想要做。装饰品   可以晚点来这家公司想要   知道他们是否有办法   提高他们的表现和得到   他们甚至覆盖在屏幕上   在图标出现之前,   表现出非凡的自私   解释“表现”。

答案 1 :(得分:13)

Cody对实际问题的出色回应。至于为什么15而不是其他一些数字,限制被纳入ImageList控件本身。

答案 2 :(得分:4)

正如科迪·格雷所解释的那样,这一切都非常好,但坦率地说,这是非常缺乏想象力的,并且如幕后报道的那样,听起来有点沮丧

在2015年和Windows 10中,肯定会有并且需要更好的能力,因为我注意到有三十个叠加存在并且必须优先考虑我最想看到的那些,这不是你想让大多数人担心的一点都不此外,我看到像Box过度竞争的积极供应商试图优先考虑自己,而且永远不会有任何好处。

这是一种可能性。如果多个重叠图标具有通用叠加指示符会怎样;一个多颜色的小矩形矩阵,如Google Chrome Apps按钮?单独叠加只会显示长列表中的叠加层。

然后,当鼠标指针与图标相遇时,一个小的弹出窗口会收集所有图标变体以供查看(图标大小或略大)。当鼠标悬停时,每个重叠的图标依次通过工具提示宣布它是什么。

现在,您可以拥有所需的所有图标叠加,适用于各种云中的状态,存储库指示以及Tortoise工具等等。