Простая программа, показанная здесь, использует все программы, разработанные для использования исчезающих меню. Вы не видели только функции cls(), которая очищает экран. Некоторые трансляторы Си не имеют функции для этого, и если это так, то вы не можете использовать следующую программу (в чистом виде).
/* процедура исчезающего меню для работы в текстовом режиме */
#include "dos.h"
#include "stdlib.h"
#define ESC 27
void save_video(),restore_video();
char *fruit[] =
"Яблоко",
"Апельсин",
"Груша",
"Грейпфрут",
"Малина",
"Клубника"
char *color[]=
"Красный",
"Желтый",
"Оранжевый",
"Зеленый"
char *apple_type[] =
"Красный деликатес",
"Джонатан",
"Белый налив",
"Антоновка"
main()
cls();
for(i=0;i<25;i++)
printf("Это тест исчезающего меню\n");
popup(color,"кжоз",4,5,10,BORDER);
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]);
endx=count+1+x;
p=(unsigned int *)malloc((endx-x+1)*(endy-y+1));
if(!p) exit(1); /* Вы можете здесь сами обработать ошибку */
/* высвечивание меню на своем месте */
void display_menu(menu,x,y,count);
/* восстановление части экрана */
free(p);
return choice;
void display_menu(menu,x,y,count)
int x,y,count;
for(i=0;i<count;i++,x++)
goto_xy(x,y);
printf(menu[i]);
int startx,starty,endx,endy;
goto_xy(i,starty);
goto_xy(i,endy);
goto_xy(startx,i);
goto_xy(endx,i);
goto_xy(startx,starty); putchar(218);
goto_xy(endx ,starty); putchar(192);