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



         

Общий обзор


Простая программа, показанная здесь, использует все программы, разработанные для использования исчезающих меню. Вы не видели только функции 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);




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