Динамические иконки
Автор: Anish Mistry
Требования: VC6 SP4, W2K SP1
Как-то раз созрела необходимость сделать
информационные бары, которые были бы видны в System
Tray в виде иконок. Изначально я делал это
следующим образом: создавал несколько различных
иконок и располагал их на разных уровнях, затем
манипулируя уровнями получал нужное мне
изображение. Этот метод работал, пока со временем
с ним стало неудобно работать, в результате чего
был создан класс CMeterIcon.
Сразу предупреждаю, что класс довольно сложен в
использовании, но зато он имеет довольно
неплохую гибкость и функциональность.
Итак, как его использовать.
// Инициализация
CMeterIcon mi32;
const int nNumBars32 = 3;
const int nLevels32 = 4;
// устанавливаем ограничения (верх-низ) цветных баров
int pLimits32[nLevels32] = {25,35,87,100};
// устанавливаем цвета для каждого уровня
COLORREF pColors32[nLevels32] =
{RGB(255,0,0),RGB(255,255,0),RGB(0,255,0),RGB(0,255,255)};
// запускаем
mi32.Init(hFrame32,nMaxVal,nNumBars32,nSpacing,32,32,RGB(0,0,0));
// загружаем информацию о цветах и ограничениях
mi32.SetColorLevels(pLimits32,pColors32,nLevels32);
// создаём массив значений для баров
int pVals32[nNumBars32] = {nVal1,nVal2,nVal3};
// генерируем иконку (используя DestroyIcon() можно удалить иконку)
HICON hIcon32 = mi32.Create(pVals32);
Downloads
Скачать демонстрашку и исходник -
14 Kb |