С для профессиональных программистов




Прикладная часть TSR-программы - часть 3


/* Вывести на экран спускающееся меню */

void window(num)

int num; /* номер окна */

int vmode, choice;

int x, y;

/* сделать окно активным */

if(!frame[num].active)   /* используется не постоянно */

save_video(num);                                /* сохранить текущий экран */

frame[num].active = 1;  /* установить флаг активности */

if(frame[num].border) draw_border(num);

display_header(num); /* вывести окно */

/* Создать спускающееся окно

если окно может быть создано, возвращается 1;

иначе возвращается 0.

*/

make_window(num, header, startx, starty, endx, endy, border)

int num; /* номер окна */

char *header;  /* текст заголовка */

int startx, starty; /* координаты X,Y левого верхнего угла */

int endx, endy; /* координаты X,Y правого нижнего угла */

int border;  /* без бордюра если 0 */

register int i;

int choice, vmode;

unsigned char *p;

if(num>MAX_FRAME)

  

window_puts(0, "Too many windows\n");

return 0;

if((startx>24) || (starty>78) || (starty<0))

 

window_puts(0, "range error");

return  0;

if((endx>24) || (endy>79))

 

window_puts(0, "window won't fit");

return 0;

/* создать структуру окна */

frame[num].startx = startx; frame[num].endx = endx;

frame[num].starty = starty; frame[num].endy = endy;

frame[num].p = wp;

frame[num].header = header;

frame[num].border = border;

frame[num].active = 0;

frame[num].curx = 0; frame[num].cury = 0;

return 1;

/* Деактивировать окно и удалить его с экрана */

deactivate(num)

int num;

/* установить курсор в левый верхний угол */

frame[num].curx = 0;

frame[num].cury = 0;

restore_video(num);

/* Вывести заголовок окна в соответсвующее поле */

void display_header(num)

int num;

register int i, y, len;

y = frame[num].starty;

/* Вычислить точное значение центральной позиции заголовка

если отрицательное - заголовок не может быть выведен

*/

len = strlen(frame[num].header);




Содержание  Назад  Вперед