Label - строковая метка.

Данный виджет позволяет выводить на экран текст заданный массивом строк. Есть возможность ожидать от пользователя нажатия определённой клавиши. Так же можно не пересоздавая виджет менять в нём текст.

Создание виджета. Возращает ссылку на созданный виджет или NULL, если создать не удалось. В остальных функциях в качестве label нужно передавать ссылку на созданный виджет.
CDKLABEL *newCDKLabel (CDKSCREEN *cdkscreen, int xpos, int ypos, char **message, int messageLines, boolean box, boolean shadow);

cdkscreen - ранее созданный CDKSCREEN
xpos, ypos - координаты левого верхнего угла
message - ссылка на массив строк (каждая строка начинается с новой строки)
messageLines - число строк которое будет выведено
box - рамка (TRUE / FALSE) если TRUE будет выведена рамка
shadow - тень (TRUE / FALSE) если TRUE будет выведена тень

Уничтожение виджета.
void destroyCDKLabel (CDKLABEL *label);

Удаление виджета с экрана. (Сам виджет не удаляется.)
void eraseCDKLabel (CDKLABEL *label);

Установика атрибутов фона виджета attribute.
void setCDKLabelBackgroundAttrib (CDKLABEL *label, chtype attribute);

Прорисовка виджета.
void drawCDKLabel (CDKLABEL *label, boolean box);

Активация виджета. Для данного виджета то же самое что и drawCDKLabel.
void activateCDKLabel (CDKLABEL *label, chtype unused);

Ожидание нажатия клавиши key.
char waitCDKLabel (CDKLABEL *label, char key);

Функции получения и изменения состояния.

Установка строк выводимых в виджете.
void setCDKLabelMessage (CDKLABEL *label, char **message, int messageLines);
void setCDKLabel (CDKLABEL *label, char **message, int messageLines, boolean box);

message - ссылка на массив строк (каждая строка начинается с новой строки)
messageLines - число строк которое будет выведено

Получение содержимое виджета и количества строк messageLines.
chtype **getCDKLabelMessage (CDKLABEL *label, int *messageLines);

Перемещение виджета.
void moveCDKLabel (CDKLABEL *label, int xpos, int ypos, boolean relative, boolean refresh);

xpos, ypos - координаты левого верхнего угла новой позиции
relative - (TRUE / FALSE) если TRUE новые координаты высчитываются от текущего положения виджета, иначе от верхнего левого угла экрана
refresh - обновить после перемещения (TRUE / FALSE)

Управление положением виджета клавишами курсора.
void positionCDKLabel (CDKLABEL *label);

Функции управления рамкой.

Есть ли рамка у виджета.
boolean getCDKLabelBox(CDKLABEL *label);

Изменить наличие рамки в виджете.
void setCDKLabelBox (CDKLABEL *label, boolean box);

Установка атрибутов attribute для рамки.
void setCDKLabelBoxAttribute (CDKLABEL *label, chtype attribute);

Установка символа character выводимого по горизонтали рамки.
void setCDKLabelHorizontalChar (CDKLABEL *label, chtype character);

Установка символа character выводимого по вертикали рамки.
void setCDKLabelVerticalChar (CDKLABEL *label, chtype character);

Установка символа character выводимого в левом нижнем углу рамки.
void setCDKLabelLLChar (CDKLABEL *label, chtype character);

Установка символа character выводимого в правом нижнем углу рамки.
void setCDKLabelLRChar (CDKLABEL *label, chtype character);

Установка символа character выводимого в левом верхнем углу рамки.
void setCDKLabelULChar (CDKLABEL *label, chtype character);

Установка символа character выводимого в правом верхнем углу рамки.
void setCDKLabelURChar (CDKLABEL *label, chtype character);

Пример использования.

/*
    w_label.c - пример простой программы демонстрирующей
		возможности виджета Label библиотеки CDK.
		
    (C) Copyright 2006 Бердников Александр alexber220@yandex.ru
    Данная программа распростаняется по лицензии BSD.
*/

#include <cdk.h>

int main(int argc, char *argv[])
{
    CDKSCREEN *cdkscreen;
    CDKLABEL *label;
    WINDOW   *screen;
    char     *mesg[4];

    // инициализация    
    screen = initscr();
    cdkscreen = initCDKScreen(screen);
    initCDKColor();
    
    //определяем строки для вывода
    mesg[0] = "<#HL(40)>";
    mesg[1] = "Выравнивание по левому краю";
    mesg[2] = "Выравнивание по центру";
    mesg[3] = "Выравнивание по правому краю";
    
    //создаём виджет типа метка
    label = newCDKLabel(cdkscreen, 10, 0, mesg, 4, TRUE, FALSE);
    
    //прорисовываем её
    drawCDKLabel(label, TRUE);
    
    //ждём нажатия пробела
    waitCDKLabel(label, ' ');
    
    
    //освобождаем ресурсы
    destroyCDKLabel(label);
    destroyCDKScreen(cdkscreen);
    endCDK();
    
    return 0;
}

(C) Copyright 2006 Бердников Александр
Hosted by uCoz