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




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


len = (frame[num].endy - y - len) / 2;

if(len<0) return; /* don't display it */

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++ = 190;

*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; /* вычислить адрес */ if(y>=frame[num].endy)




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