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



         

Общий обзор - часть 2


get_resp(x,y,count,menu,keys)

char *menu[];

union inkey

char ch[2];

int i;

 c;

int arrow_choice=0,key_choice;

goto_xy(x,y);

write_video(x,y,menu[0],REV_VID);

/* вернуть выбор в номальный режим */

write_video(x+arrow_choice,y,

menu[arrow_choice],norm_vid);

if(key_choice) return key_choice-1;

else  /* специальная клавиша */

switch(c.ch[1])

case 72 : arrow_choice--; /* стрелка вниз */

break;

case 80 : arrow_choice++; /* стрелка вверх */

break;

if(arrow_choice==count) arrow_choice=0;

/* вывод строки с определенным атрибутом */

int x,y;

int attrib;

void save_video(startx,endx,starty,endy,buf_ptr)

unsigned int *buf_ptr;

void restore_video(startx,endx,starty,endy,buf_ptr)

unsigned int *buf_ptr;

void cls()

Вводите эту программу в ваш компьютер и запускаете ее. В ходе ее выполнения каждое меню будет высвечено и исчезнет. (В этой программе все ответы теряются, но реальное применение будет, конечно, их обрабатывать.) Даже если ваш компьютер очень быстрый, вы возможно заметите, что исчезновение и появление меню требуют определенной задержки. Единственный путь решения этой проблемы - читать и писать символы прямо в видео память, что и обсуждается в следующем разделе. Еще раз отметим, что единственное важное достоинство использование BIOS в том, что такие меню работают на любом компьютере, который поддерживает BIOS, совместимый с IBM, даже если компьютер не 100% совместимый.




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