сообщение не подходит.
*/
len = strlen(frame[num].header);
len = (frame[num].endy - y - len) / 2;
if(len<0) return; /* не выводить его */
y = y +len;
write_string(frame[num].startx, y,
frame[num].header, NORM_VID);
void draw_border(num)
int num;
register int i;
char far *v, far *t;
v = vid_mem;
t = v;
for(i=frame[num].startx+1; i<frame[num].endx; i++)
v += (i*160) + frame[num].starty*2;
*v++ = 179;
*v = NORM_VID;
v = t;
v += (i*160) + frame[num].endy*2;
*v++ = 179;
*v = NORM_VID;
v = t;
for(i=frame[num].starty+1; i<frame[num].endy; i++)
v += (frame[num].startx*160) + i*2;
*v++ = 196;
*v = NORM_VID;
v = t;
v += (frame[num].endx*160) + i*2;
*v++ = 196;
*v = NORM_VID;
v = t;
write_char(frame[num].startx, frame[num].starty, 218, NORM_VID);
write_char(frame[num].startx, frame[num].endy, 191, NORM_VID);
write_char(frame[num].endx, frame[num].starty, 192, NORM_VID);
write_char(frame[num].endx, frame[num].endy, 217, NORM_VID);
/*************************************************************/
/* Оконные функции ввода/вывода */
/*************************************************************/
/* Вывести строку начиная с текущей позиции
в созданном окне.
Возвратить 0, если окно не активное, и 1 - в противном случае.
*/
window_puts(num, str)
int num;
char *str;
/* убедитесь, что окно активное */ if(!frame[num].active) return 0; for( ; *str; str++)
window_putchar(num, *str);
return 1;
/* Вывести символ в текущую позицию курсора
в созданном окне
Возвратить 0, если окно не активное, и 1 - в противном случае.
*/
window_putchar(num, ch)
int num;
char ch;
register int x, y;
char far *v;
/* убедитесь, что окно активное */ if(!frame[num].active) return 0;
x = frame[num].curx + frame[num].startx + 1;
y = frame[num].cury + frame[num].starty + 1;
v = vid_mem;
v += (x*160) + y*2; /* вычислить адрес */