ShellIconOverlayIdentifiers - 为什么这么少?
此时,每个人都知道 ShellIconOverlayIdentifiers 的数量是有限制的(来自 MSDN):
系统可以支持的不同图标覆盖处理程序的数量受到系统图像列表中可用于图标覆盖的空间量的限制。目前有十五个插槽分配给图标覆盖,其中一些是系统保留的。因此,只有在没有令人满意的替代方案时才应实现图标覆盖处理程序
我可以理解 Windows 95 中的 15 个覆盖限制)。但是在有 Gig RAM、大量内核和 GPU 的环境中,是否存在某些技术原因现代操作系统中的数字这么低?
为什么这个值不可配置?
在给出“性能”答案之前,请考虑: Windows 允许进行配置,这样您就可以降低性能...为什么要专门针对这个问题呢?
At this point, everyone knows that there's a limit to the number of ShellIconOverlayIdentifiers
(from MSDN):
The number of different icon overlay handlers that the system can support is limited by the amount of space available for icon overlays in the system image list. There are currently fifteen slots allotted for icon overlays, some of which are reserved by the system. For this reason, icon overlay handlers should be implemented only if there are no satisfactory alternatives
I can understand the 15 overlay limt in Windows 95. But in an environment where there's Gigs of RAM, numerous Cores, and GPUs, is there some technical reason for such a low number in a modern operating system?
And why isn't this value configurable?
Before giving the 'performance' answer, consider:
Windows allows for configuration such that you can kill performance... why pick on this issue specifically?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
除非这里有人碰巧在 Windows Shell 团队工作,否则我怀疑您是否会得到真正解决技术限制以及它们如何影响设计选择的答案。但我会尝试...
我的猜测是没有任何技术限制,或者至少现在没有。 真正的原因大概是没有人花时间坐下来更新代码、设计和规范来解除这一限制。默认情况下不会实现功能,只是因为过去几年计算环境发生了变化,但这并不意味着有人坐下来重写 Windows 以充分利用所有这些变化。
您还应该考虑到这很可能是一个有意识的设计选择,而不是强加的限制。Raymond Chen(实际上确实在 shell 团队工作)发表了博客条目回应有关 Windows 7 删除“分享之手”叠加。他提出了一个令人信服的论点,即图标叠加实际上并不是显示信息的理想方式(除此之外,系统仅限于 15 个)[强调]:
对我来说,在大多数现实情况下,添加到 shell 中的额外混乱根本不值得,这似乎是合理的。 Windows Shell 团队显然也得出了同样的结论,并删除了“共享之手”覆盖层。雷蒙德的直接解释:
而且,我知道您特别要求不要提及性能,但 Windows 确实试图防止您搬起石头砸自己的脚。用户要求 shell 的响应能力,并且覆盖图标可能会干扰这一点。作为进一步证明它们不是优先事项的证据,另一篇博客文章由同一雷蒙德·陈 (Raymond Chen) 责骂:
Unless someone here happens to work on the Windows Shell team, I doubt that you're going to get an answer that really addresses the technical limitations and how they affect the design choice. But I'll try...
My guess is that there isn't any technical limitation, or at least there isn't one now. The real reason is presumably that no one has ever taken the time to sit down and update the code, the design, and the spec to lift this limitation. Features aren't implemented by default, and just because the computing environment has changed in the last few years doesn't mean that someone sat down and rewrote Windows to take full advantage of all those changes.
You should also consider that is more than likely a conscious design choice, rather than an imposed limitation. Raymond Chen (who actually does work on the shell team) published a blog entry responding to the uproar about Windows 7 removing the "sharing hand" overlay. He makes a compelling argument that the icon overlay is really not a desirable way of showing information (above and beyond the fact that the system is limited to 15) [emphasis added]:
It seems reasonable to me that the extra clutter added to the shell is simply not worth it in the majority of real-world cases. The Windows Shell team obviously reached the same conclusion and cut the "sharing hand" overlay. Raymond's direct explanation:
And, I know you specifically asked not to mention performance, but Windows really does try to keep you from shooting yourself in the foot. Users demand responsiveness in the shell, and overlay icons can interfere with this. As further evidence that they are not the priority, another blog post by the same Raymond Chen chastises:
科迪对实际问题做出了出色的回应。至于为什么是 15 而不是其他数字,该限制已纳入 ImageList 控件本身。
Excellent response on the practical issues by Cody. As to why 15 and not some other number, the limit is baked into the ImageList control itself.
正如科迪·格雷所解释的那样,这一切都非常好,但坦率地说,这非常缺乏想象力,而且正如幕后报道的那样,听起来有点沮丧。
在 2015 年的 Windows 10 中,肯定可以而且需要有更好的功能,因为我注意到存在大约 30 个覆盖层,并且必须优先考虑我最想看到的覆盖层,这根本不是你希望大多数人担心的。我还看到像 Box 这样激进的供应商过度竞争,试图优先考虑自己,而这永远不会有任何好处。
这是一种可能性:如果多重重叠的图标有一个通用的重叠指示器会怎样?像 Google Chrome Apps 按钮一样的多种颜色的小矩形矩阵?单独覆盖只会显示长列表中的覆盖。
然后,当鼠标指针遇到图标时,一个小的弹出窗口会收集所有要查看的图标变体(以小图标大小或稍大一点)。当您将鼠标悬停在每个重叠的图标上时,会通过工具提示依次宣布其含义。
现在,您可以拥有所需的所有图标覆盖,用于各种云中的状态、用于 Tortoise 工具的存储库指示等等。
This is all very well and good, as explained by Cody Gray, but frankly it is pretty unimaginative, and as reported behind the scenes, sounding a bit frustrated.
In 2015 and with Windows 10, surely there can and needs to be a better ability, as I noted about thirty overlays present and had to prioritize ones I wanted most to see, which is not what you want most people to worry about at all. Also I see aggressive vendors like Box over-competing to try to prioritize themselves, and that will never go any place good.
Here's a possibility: What if multiply overlaid icons had a generic overlay indicator; a small rectangle matrix of multiple colors like the Google Chrome Apps button? Singly overlaid would just show the overlay out of a long list.
Then when the mouse pointer meets the icon, a small flyout window collects all the icon variations to view (at small icon size or a little larger). Each overlaid icon in turn announces by tooltip what it is, when you mouse over.
Now you can have all the icon overlays you need, for state in various clouds, for repository indications as for Tortoise tools, and so forth.
我在这里引用了 为什么有 15 的限制shell 图标叠加? Raymond Chen 2019 帖子
I quote an extract of the definitive answer here from Why is there a limit of 15 shell icon overlays? Raymond Chen 2019 post