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



         

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


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) || (startx<0) || (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;

 

/* Отвести достаточное количество памяти */

p= (unsigned char *) malloc(2*(endx-startx+1)*(endy-starty+1));

if(!p) exit(1); /* поместите здесь ваш собственный

обработчик ошибок */

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

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;

/* Вычислить начальную позицию относительно

центра заголовка, если отрицательная, то




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