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