Лабораторная работа: Организация интерфейса пользователя

{

pos=0;

str[0]=0;

}

if (curlen<maxlen)

{

movmem(str+pos,str+pos+1,curlen-pos+1);

str[pos]=key;

++pos;

}

}

}

curlen=strlen(str);

firstkey=0;

gotoxy(x,y);

cprintf("%-*s",maxlen,str);

gotoxy(x+pos,y);

}

_setcursortype(_NOCURSOR);

gotoxy(x,y);

return exitcode;

}

Данная функция организует ввод строки ограниченной длины с возможностью перемещения курсора клавишами Left, Right, Home, End и удаления символов клавишами Delete и Backspace. Ввод завершается при нажатии Enter либо Esc, при этом возвращаемое значение показывает, какая из клавиш была нажата. Это позволяет в вызывающей функции определить, отказался пользователь от ввода или подтвердил его. Если первая нажатая клавиша приводит к вводу символа, то старое содержимое строки очищается. Такая особенность позволяет легко вводить новые данные вместо старых. В то же время, если первой нажатой клавишей была клавиша редактирования, старое содержимое сохраняется.

Перед началом ввода функция устанавливает нормальный вид курсора, а после окончания ввода скрывает текстовый курсор. Это позволяет использовать функцию в интерфейсах-меню и интерфейсах со свободной навигацией, не прибегая к дополнительным вызовам _setcursortype.

При редактировании строки ее содержимое в буфере str перемещается функцией movmem, которая предназначена для копирования участка памяти. Для использования этой функции необходимо подключить заголовочный файл <mem.h>.

Приведенная функция inputstr может использоваться в качестве замены scanf, при этом интерфейс становится более дружественным, что благоприятно сказывается на впечатлении пользователя от программы. Для ввода чисел различных типов можно написать отдельные функции, преобразующие число в строку, вызывающие inputstr и затем преобразующие полученную строку обратно в число.


6. Практические задания

6.1 Контрастность атрибутов

Написать функцию, получающую байт атрибутов и возвращающую 0, если цвета фона и тона в этом байте совпадают, и ненулевое значение, если они различны.

6.2 Разработка интерфейса

Разработать описание пользовательского интерфейса для программы «Будильник».

Исходными данными для программы являются:

К-во Просмотров: 394
Бесплатно скачать Лабораторная работа: Организация интерфейса пользователя