4 лампочки в одной иконке трея.
Автор: Меньшиков Дмитрий.
Среда: Win32, тестировалось под Win98, Win2000
CTrayLights
Описание:
Данный класс представляет удобный способ
работы с четырьмя лампочками в одной иконке трея.
Это может быть полезно при отсутствии
пользовательского интерфейса у программы со
сложной внутренней структурой (разделяемые
ресурсы, потоки, взаимодействие с другим ПО и
т.д.), а также при отладке или исследовании. Также
это довольно неплохой способ диагностики
проблем в случае удаленного
низкоквалифицированного пользователя. 4
отдельно управляемые лампочки по 16 цветов дают
возможность видеть отражение внутренних
процессов программы, причем нескольких
параметров, экономя пространство в трее. Каждая
лампочка может быть включена в любой из 16
основных цветов или прозрачный, или выключена.
Цвет выключенных лампочек можно задать, по
умолчанию - прозрачный.
Использование:
Здесь все просто. Объявляется экземпляр класса
CTrayLights, затем вызовом StartTrayLights() иконка помещается
в трей, затем вызовами FireLightOn/Off() меняются цвета
нужных лампочек, затем вызовом EndTrayLights() работа
завершается. Последний вызов может быть опущен,
т.к. он происходит и из деструктора.
Методы SetOffColor() и FireLightOff() добавлены для гибкости
и удобства и могут не вызываться. Кроме того,
можно использовать несколько иконок, наращивая
число лампочек, для новых иконок достаточно
задавать другие iconID.
Как это работает:
Из ICO файла стандартной иконки 16х16х16 выдрано
примерно 300 байт, которые во время выполнения
модифицируются, когда меняются значения цвета и
прозрачности. Из этой цепочки байт создются
иконки. При задании цвета сначала создается
новая иконка, затем она заменяет ту, которая уже в
трее, затем старая освобождается по сохраненному
дескриптору. Работа с байтовой цепочкой
неочевидна, но код получается компактным и
быстрым.
Downloads
Загрузить демонстрационный проект
- 14 Kb
|