ShellIconOverlayIdentifiers-почему так мало?


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

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

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

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

прежде чем дать ответ "производительность", подумайте: Windows позволяет настроить так, что вы можете убить производительность... зачем придираться к этому вопросу конкретно?

3 80

3 ответа:

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

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

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

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

кажется разумно для меня, что дополнительный беспорядок, добавленный в оболочку, просто не стоит в большинстве реальных случаев. Команда оболочки Windows, очевидно, пришла к тому же выводу и отрезала наложение "разделяющей руки". Прямое объяснение Раймонда:

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

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

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

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

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

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

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

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

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