ShellIconOverlayIdentifiers - почему так мало? - PullRequest
82 голосов
/ 10 декабря 2010

На данный момент все знают, что существует ограничение на число ShellIconOverlayIdentifiers (из MSDN):

Количество различных обработчиков наложения значков, которые может поддерживать система, ограничено объемом пространства, доступного для наложений значков в списке образов системы. В настоящее время для наложения значков выделено пятнадцать слотов, некоторые из которых зарезервированы системой. По этой причине обработчики наложения значков должны быть реализованы, только если нет удовлетворительных альтернатив

Я могу понять предел 15 оверлеев в Windows 95. Но в среде, где есть гигабайты оперативной памяти, многочисленные ядра и графические процессоры, есть ли какая-то техническая причина такого низкого числа в современной операционной системе?

А почему это значение не настраивается?

Перед тем, как дать ответ «производительность», рассмотрим: Windows допускает такую ​​конфигурацию, что вы можете снизить производительность ... зачем выбирать именно эту проблему?

Ответы [ 3 ]

83 голосов
/ 10 декабря 2010

Если кто-то не работает в команде Windows Shell, я сомневаюсь, что вы получите ответ, который действительно касается технических ограничений и того, как они влияют на выбор дизайна. Но я попробую ...

Я предполагаю, что нет никаких технических ограничений или, по крайней мере, сейчас их нет. Реальная причина, по-видимому, заключается в том, что никто никогда не занимал время, чтобы сесть и обновить код, дизайн и спецификацию, чтобы снять это ограничение. Функции не реализованы по умолчанию, и только потому, что вычислительная среда изменилась за последние несколько лет, но это не значит, что кто-то сел и переписал Windows, чтобы в полной мере воспользоваться всеми этими изменениями.

Вы также должны учитывать, что это более чем сознательный выбор дизайна, а не наложенное ограничение. Раймонд Чен (который на самом деле работает в команде разработчиков) опубликовал запись в блоге в ответ на возмущение по поводу Windows 7, удаляющего оверлей «совместного доступа». Он приводит убедительный аргумент, что наложение значков действительно не является желательным способом отображения информации (помимо того факта, что система ограничена 15) [выделение добавлено]:

Вообще говоря, оверлеи не являются хороший способ представления информации потому что может быть только один оверлей за иконку , и есть ограничение 15 оверлеи для каждого списка изображений. Если есть два или более оверлеев, которые применяются к пункт, тогда один победит, а остальные потеряет, в этот момент значение наложение как способ определения какие свойства относятся к элементу уменьшается , так как единственный способ быть уверен, что свойство отсутствует когда вы не видите наложения вообще. (Если Вы видите другое наложение, вы не можете скажи ли это потому что твой собственность отсутствует или потому что другой оверлей показывает вместо ваш.)

Мне кажется разумным, что дополнительный беспорядок, добавленный в оболочку, просто не стоит этого в большинстве реальных случаев. Команда Windows Shell, очевидно, пришла к такому же выводу и сократила оверлей «Совместная рука». Прямое объяснение Рэймонда:

Учитывая изменения в том, как люди используют компьютеры, обмен информацией становится все больше и больше по умолчанию государство. Когда вы настраиваете HomeGroup, почти все будет общий. Чтобы удалить визуальный беспорядок, информация была перемещена в Панель сведений.

И, я знаю, вы специально просили не упоминать о производительности, но Windows действительно пытается , чтобы не дать вам выстрелить себе в ногу. Пользователи требуют отзывчивости в оболочке наложенные значки могут мешать этому. В качестве еще одного доказательства того, что они не являются приоритетными , еще одно сообщение в блоге того же Рэймонда Чена наказывает:

Другой пример приложений, имеющих пришел эгоистичный взгляд на представление от компании, разрабатывающей иконку обработчик оверлея Оболочка лечит наложение вычислений как низкий приоритет пункт, так как это более важно для получить значки на экране, чтобы пользователь может начать делать все, что они хотел сделать. Украшения может прийти позже. Эта компания хотела знать, если бы они могли улучшить свои показатели и получить их наложение на экран даже до появления значка, демонстрируя феноменально эгоистичный интерпретация «перформанс».

13 голосов
/ 14 октября 2014

Отличный ответ на практические вопросы Коди. Относительно того, почему 15, а не какое-то другое число, ограничение запекается в самом элементе управления ImageList .

4 голосов
/ 23 августа 2015

Это все очень хорошо и хорошо, как объяснил Коди Грей, но, честно говоря, это довольно невообразимо, и, как сообщается за кадром, звучит немного разочарованно

В 2015 году и с Windows 10, безусловно, естьможет и должна быть лучшей способностью, как я отметил около тридцати присутствующих наложений, и мне нужно было расставить приоритеты среди тех, которые я больше всего хотел увидеть, а это совсем не то, о чем вы хотите, чтобы большинство людей волновало вообще.Также я вижу агрессивных вендоров, таких как Box, которые чрезмерно конкурируют, пытаясь расставить приоритеты, и это никогда не приведет ни к чему хорошему.

Вот такая возможность.Что, если значки с несколькими наложенными изображениями имеют общий индикатор наложения;маленькая прямоугольная матрица из нескольких цветов, например кнопка Google Chrome Apps?При однократном наложении будет просто отображаться наложение из длинного списка.

Затем, когда указатель мыши встречает значок, небольшое всплывающее окно собирает все варианты значков для просмотра (при небольшом размере значка или чуть больше).Каждый наложенный значок в свою очередь объявляет всплывающей подсказкой, что это такое, когда вы наводите курсор мыши.

Теперь вы можете иметь все необходимые наложения значков, для состояния в различных облаках, для обозначений репозитория, как для инструментов Черепаха, и такп.

...