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