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

       

Восстановление экрана


Восстановление экрана после сделанного выбора из меню, заключается просто в записи предварительно запомненной информации назад в видео память. Для того, чтобы сделать это, используйте прерывание 16, функцию 9, которая требует, чтобы символ был в AL, аттрибут в BL, видео страница в ВН, а количество записываемых символов в CX (в нашем случае 1). Функция restore_video(), описанная здесь, помещает информацию из буфера, на который указывает buf_ptr, на экран, заданный начальными и конечными координатами X и Y.

/* восстановление части экрана */

int   startx,endx,starty,endy;

union REGS r;

register int i,j;

for(i=starty;i<endy;i++)

for(j=startx;j<endx;j++)

goto_xy(j,i);

r.h.ah=9; /* функция записи символа                                 */

r.h.bh=0; /* видео страница                                                   */

r.x.cx=1; /* число повторений символа                               */

r.h.al=*buf_ptr++; /* символ                                                 */

r.h.bl=*buf_ptr++; /* атрибут                                                */

*buf_ptr++ = int86(0x10,&r,&r);


Как и другие функции поддержки меню, измененная restore_video показанная здесь, преобразована для работы с фреймами. Поэтому функции restore_video() теперь передается только номер меню, что делает интерфейс более очевидным.

/* восстановление части экрана */

int   num;



Содержание раздела