it-swarm.com.ru

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

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

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

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

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

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

82
rbellamy

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

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

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

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

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

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

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

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

83
Cody Gray

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

13
Bruce

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

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

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

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

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

4
narration_sd