Данный виджет позволяет осуществлять выбор числа в заданном диапазоне. Есть возможность задать шаг и минимальное с максимальным значения. Scale работает с типом int для float можно использовать FScale (так же как и Scale только вместо значений типа int будут float).
Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось.
В остальных функциях в качестве scale нужно передавать ссылку на созданный виджет.
CDKSCALE *newCDKScale (CDKSCREEN *cdkscreen, int xpos, int ypos, char *title, char *label, chtype fieldAttribute, int fieldWidth,
int currentValue, int lowValue, int highValue, int increment, int fastIncrement, boolean box, boolean shadow);
Уничтожение виджета.
void destroyCDKScale (CDKSCALE *scale);
Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKScale (CDKSCALE *scale);
Установика атрибутов фона виджета attribute.
void setCDKScaleBackgroundAttrib (CDKSCALE *scale, chtype attribute);
Прорисовка виджета.
void drawCDKScale (CDKSCALE *scale, boolean box);
Активация виджета. Возвращаемое значение содержит выбранное значение.
Если scale->exitType равно vNORMAL при выборе подпункта меню то выход осуществлён клавишами Enter или Tab и vESCAPE_HIT при нажатии Esc
В качестве actions можно передать 0.
int activateCDKScale (CDKSCALE *scale, chtype *actions);
Получение текущего значения.
int getCDKScaleValue (CDKSCALE *scale);
Установка текущего значения.
void setCDKScaleValue (CDKSCALE *scale, int value);
Получение максимального значения.
int getCDKScaleHighValue (CDKSCALE *scale);
Получение минимального значения.
int getCDKScaleLowValue (CDKSCALE *scale);
Установка максимального и минимального значения.
void setCDKScaleLowHigh (CDKSCALE *scale, int low, int high);
Установка состояния виджета.
void setCDKScale (CDKSCALE *scale, int lowValue, int highValue, int currentValue, boolean box);
Перемещение виджета.
void moveCDKScale (CDKSCALE *scale, int xpos, int ypos, boolean relative, boolean refresh);
Управление положением виджета клавишами курсора.
void positionCDKScale (CDKSCALE *scale);
Есть ли рамка у виджета.
boolean getCDKScaleBox (CDKSCALE *scale);
Изменить наличие рамки в виджете.
void setCDKScaleBox (CDKSCALE *scale, boolean box);
Установка атрибутов attribute для рамки.
void setCDKScaleBoxAttribute (CDKSCALE *scale, chtype character);
Установка символа character выводимого по горизонтали рамки.
void setCDKScaleHorizontalChar (CDKSCALE *scale, chtype character);
Установка символа character выводимого по вертикали рамки.
void setCDKScaleVerticalChar (CDKSCALE *scale, chtype character);
Установка символа character выводимого в левом нижнем углу рамки.
void setCDKScaleLLChar (CDKSCALE *scale, chtype character);
Установка символа character выводимого в правом нижнем углу рамки.
void setCDKScaleLRChar (CDKSCALE *scale, chtype character);
Установка символа character выводимого в левом верхнем углу рамки.
void setCDKScaleULChar (CDKSCALE *scale, chtype character);
Установка символа character выводимого в правом верхнем углу рамки.
void setCDKScaleURChar (CDKSCALE *scale, chtype character);
/* w_scale.c - пример простой программы демонстрирующей возможности виджета Scale библиотеки CDK. (C) Copyright 2006 Бердников Александр alexber220@yandex.ru Данная программа распростаняется по лицензии BSD. */ #include <cdk.h> int main(int argc, char *argv[]) { CDKSCREEN *cdkscreen; CDKSCALE *CDKScale; WINDOW *screen; int val; char temp[256], *mesg[10]; // инициализация screen = initscr(); cdkscreen = initCDKScreen(screen); initCDKColor(); //создаём виджет CDKScale = newCDKScale(cdkscreen, CENTER, CENTER, "", "", A_NORMAL, 10, 5, 0, 100, 1,10, TRUE, FALSE); //ждём ввода val = activateCDKScale(CDKScale, 0); // выводим введённую строку if (CDKScale->exitType == vNORMAL) { sprintf (temp, "(%d)", val); mesg[0] = temp; popupLabel (cdkscreen, mesg, 1); } //освобождаем ресурсы destroyCDKScale(CDKScale); destroyCDKScreen(cdkscreen); endCDK(); return 0; }