Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация элементов меню как в uTorrent 
:(
    Опции темы
suxxor
Дата 21.10.2015, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



по сути нужен генератор массива по заданному шаблону, на скриншоте показано как это выглядит в программе utorrent.

в итоге должен получиться массив вроде этого: 10, 15, 20, 25, 30, 35, 40, 41, 42, 43, 44, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95

набросок:
Код

int current = 43; //

for (int i = 10; i < 100; i += 5)
{
    char str[50];
    sprintf(str, "%d%%", i);
    AppendMenu (hm1, MF_STRING, 0, str);
}


user posted image

Это сообщение отредактировал(а) suxxor - 21.10.2015, 06:40
PM   Вверх
math64
Дата 21.10.2015, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Код

static const int array[] =
{ 10, 15, 20, 25, 30, 35, 40, 41, 42, 43, 44, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95 };
const int size = sizeof(array) / sizeof(array[0]);
int current = 43;
for (int i = 0; i < size; i++)
{
    char str[50];
    bool isCurrent = (array[i] == current);
    sprintf(str, "%d%%", array[i]);
    AppendMenu (hm1, MF_STRING, 0, str); // Ну и как-то выделить пункт меню если isCurrent == true
}


Это сообщение отредактировал(а) math64 - 21.10.2015, 08:16
PM   Вверх
suxxor
Дата 21.10.2015, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



math64, нет, возможно я неправильно изложил в теме, но суть вот в чём: в примере привёл utorrent который генерирует массив чисел в меню для регулировки ограничения скорости, шаг между числами зависит от текущего значения и по мере отдаления от него увеличивается, то есть от значения "current" в радиусе 5 чисел шаг равен 1, дальше увеличивается на 5, 10, и так до 250 (по крайней мере так реализовано в utorrent).
PM   Вверх
math64
Дата 21.10.2015, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Код

int min = 10;
int max = 95;
int current = 43;
int step = 5;
for (int i = min; i <= max;)
{
    char str[50];
    sprintf(str, "%d%%", array[i]);
    AppendMenu (hm1, MF_STRING, 0, str);
    // Вычисление следующего индекса - если что не так, поправишь.
    if (i >= current - step && i <= current + step)
        i++;
    else
        i += step;
}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.