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

       

должен быть 80 символьный текстовый


int popup(menu,keys,count,x,y,border)

char *menu[];               /*    текст меню */

char *keys;                   /*    горячие клавиши */

int count;                       /*    число режимов */

int x,y;                            /*    координаты левого верхнего угла */

int border;                     /*    если 0 то без рамки */

/* вычисление размеров */

for(i=0;i<count;i++)

if(strlen(menu[i]) > len) len=strlen(menu[i]);

if((endx+1>24) || (endy+1>79))

printf(" выход за пределы экрана");

return -2;

vmode = video_mode();

if((vmode!=2) && (vmode!=3) && (vmode!=7))

printf(" должен быть 80 символьный текстовый режим");

exit(1);

/* присвоить соответствующий адрес видео памяти */

else   vid_mem=(char far *)0xB8000000;

p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));

if(!p) exit(1); /* Вы можете здесь сами обработать ошибку */

/* высвечивание меню на своем месте */

void display_menu(menu,x,y,count);

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

free(p);

void display_menu(menu,x,y,count)

int x,y,count;

for(i=0;i<count;i++,x++)

write_string(x,y,menu[i],NORM_VID);

int   startx,starty,endx,endy;

write_char(startx,starty,218,NORM_VID);

write_char(endx  ,starty,192,NORM_VID);

goto_xy(startx,endy  ); putchar(191);

goto_xy(endx  ,endy  ); putchar(217);

/* ввести выбор пользователя */

int x,y,count;

char *keys;

y++;

goto_xy(x,y);

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

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

goto_xy(arrow_choice,y);

if(c.ch[0])  /* обычная клавиша */

key_choice= is_in(keys,tolower(c.ch[0]));

switch(c.ch[0])

case '\r' : return arrow_choice;

case ' '  : arrow_choice++;

break;

case ESC   : return -1; /* выйти */

if(arrow_choice<0) arrow_choice=count-1;

/* подсветить выбранную опцию */

goto_xy(x+arrow_choice,y);

write_string(x+arrow_choice,y,menu[arrow_choice],REV_VID);

void write_string(x,y,p,attrib)

char *p;

register int i,j;


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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий