⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu2.c

📁 一些关于C语言图形界面编程的实例程序。拿来和大家分享了
💻 C
字号:
#include<graphics.h>
#include<stdio.h>
#include<dos.h>
#include<malloc.h>

char *str1[4][8],*str2[4][8];
int x,y;

void mamenu(int n)/*这个用来生成主菜单项*/
{ setcolor(BROWN);
  rectangle(10+64*(n-1),1,64*n,10);
  floodfill(11+64*(n-1),2,BROWN);
   };

void secmenu(int n,int n1)/*这个用来生成下级菜单项*/
{setcolor(YELLOW);
 rectangle(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
 floodfill(11+64*(n-1),13+12*(n1-1),YELLOW);
  };

void low_bar(int n,int n1)/*这个函数用来为菜单项着暗色,表示未被选中*/
{void  *buf;
 int size;
 setactivepage(1);
 cleardevice();
 setfillstyle(1,BLUE);
 if(n1==0){
 mamenu(n);
 outtextxy(12+64*(n-1),3,str1[n][n1]);
 size=imagesize(10+64*(n-1),1,64*n,10);
 buf=malloc(size);
 getimage(10+64*(n-1),1,64*n,10,buf);
 setactivepage(0);
 putimage(10+64*(n-1),1,buf,0);
 free(buf);}
 else {
 secmenu(n,n1);
 outtextxy(12+64*(n-1),14+12*(n1-1),str2[n][n1]);
 size=imagesize(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
 buf=malloc(size);
 getimage(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1),buf);
 setactivepage(0);
 putimage(10+64*(n-1),12+12*(n1-1),buf,0);
 free(buf);}
 setvisualpage(0);
};

void light_bar(int n,int n1)/*这个函数用来为菜单项着亮色,表示被选中*/
{void  *buf;
 int size;
 setactivepage(1);
 cleardevice();
 setfillstyle(1,LIGHTBLUE);
 if(n1==0){
 mamenu(n);
 outtextxy(12+64*(n-1),3,str1[n][n1]);
 size=imagesize(10+64*(n-1),1,64*n,10);
 buf=malloc(size);
 getimage(10+64*(n-1),1,64*n,10,buf);
 setactivepage(0);
 putimage(10+64*(n-1),1,buf,0);
 free(buf);}
 else {
 secmenu(n,n1);
 outtextxy(12+64*(n-1),14+12*(n1-1),str2[n][n1]);
 size=imagesize(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
 buf=malloc(size);
 getimage(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1),buf);
 setactivepage(0);
 putimage(10+64*(n-1),12+12*(n1-1),buf,0);
 free(buf);}
 setvisualpage(0);
};

void move_bar(int flag)/*移动光条*/
{ int n,n1;
  n=x;
  n1=y;
  switch(flag)
{
 case 1:
 if(n<2)
 {low_bar(n,n1);
  light_bar(n+1,n1);
  x=n+1;y=n1;}
 else {low_bar(n,n1);
  light_bar(1,n1);
  x=1;y=n1;}
  break;

 case 2:
 if(n>1)
 {low_bar(n,n1);
  light_bar(n-1,n1);
 x=n-1;y=n1;}
 else  {low_bar(n,n1);
 light_bar(2,n1);
 x=2;y=n1;}
 break;

 case 3:
 if(n1<4)
 {low_bar(n,n1);
  light_bar(n,n1+1);
 x=n;y=n1+1;}
 else {low_bar(n,n1);
 light_bar(n,1);
 x=n;y=1;}
 break;

 case 4:
 if(n1>1)
 {low_bar(n,n1);
  light_bar(n,n1-1);
 x=n;y=n1-1;}
 else {low_bar(n,n1);
  light_bar(n,4);
 x=n;y=4;}
 break;
}
};

int read_key()/*读取键盘扫描码*/
{union REGS rg;
 rg.h.ah=0;
 int86(0x16,&rg,&rg);
 return(rg.h.ah);
 };

void tsr()
{;
/*restorecrtmode();
;
setgraphmode;*/

 };

main()
{char s1[15],s2[15];
  unsigned uparten;
 int graphdriver=DETECT;
 int graphmode,flag,key,eflag;
 registerbgidriver(EGAVGA_driver);/*如果没有连接图库,可删去此行*/
 initgraph(&graphdriver,&graphmode,"");
 settextstyle(0,0,1);
 setlinestyle(0,uparten,1);
 cleardevice();
 setviewport(0,0,400,300,0);
 
 str1[2][0]="EDIT";
 str1[1][0]="FILE";
 str2[1][1]="text";
 str2[1][2]="music";
 str2[1][3]="dir:";
 str2[1][4]="quit";
 str2[2][1]="copy";
 str2[2][2]="cut";
 str2[2][3]="paste";
 str2[2][4]="cancel";

 mamenu(1);
 mamenu(2);
 low_bar(1,0);
 low_bar(2,0);
 light_bar(1,0);
  x=1;y=0;

do{
 eflag=0;
 do{key=read_key();
 if(key==77){flag=1;eflag=1;}
 if(key==75){flag=2;eflag=1;}
 if(key==80){flag=3;eflag=1;}
 if(key==72){flag=4;eflag=1;}
 if(key==28){flag=5; eflag=1;}
 if(key==15)exit(0);}while(eflag!=1);

if(flag==5)
{ if(y==0)
 {cleardevice();
 low_bar(1,0);
 low_bar(2,0);
 low_bar(x,y);
 light_bar(x,1);
 low_bar(x,2);
 low_bar(x,3);
 low_bar(x,4);
 y=1;}
 else
 {cleardevice();
 low_bar(1,0);
 low_bar(2,0);
 light_bar(x,0);
 y=0;}
}

else if((flag==1||flag==2)&&y!=0)
{cleardevice();
  if(flag==1&&x<2)x=x+1;
  else if(flag==1&&x==2) x=1;
  else if(flag==2&&x>1)x=x-1;
  else x=2;
 low_bar(1,0);
 low_bar(2,0);
 low_bar(x,1);
 low_bar(x,2);
 low_bar(x,3);
 low_bar(x,4);
 light_bar(x,y);
 }
else if((flag==3||flag==4)&&y==0)continue;
else move_bar(flag);
}while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -