龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

菜单程序

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
#include #include #include #include #include "head.h" #define FALSE 0 #define TRUE 1 #define START 1 #define LEFTSHIFT 2 #define RIGHTSHIFT 3 #define ENTER 4 #define EXIT 5 #define UP 6 #define DOWN 7 typedef strUCt{ /*菜单的数据结构

#include

  #include

  #include

  #include

  #include "head.h"

#define FALSE 0

  #define TRUE 1

  #define START 1

  #define LEFTSHIFT 2

  #define RIGHTSHIFT 3

  #define ENTER 4

  #define EXIT 5

  #define UP 6

  #define DOWN 7

typedef strUCt{ /*菜单的数据结构*/

   int menuID;

   char MenuName[10];

   int itemCount;

   char itemName[4][14];

  }menu;

void *saveImage; /*保存菜单覆盖的区域*/

int mHeight,mWidth; /*窗口高,宽*/

  int mutex=0;

menu MainMenu[]=},

   },

   },

   },

   },

   },

   },

   },

   } };

  void showItems(int NewID) /*显示*/

  {

   int LL,TT,j;

   LL=mWidth*NewID+50;

   TT=40;

   saveImage=malloc(imagesize(LL,31,LL+mWidth+30,70+25*(MainMenu[NewID].itemCount)));

   getimage(LL,31,LL+mWidth+30,70+25*(MainMenu[NewID].itemCount),saveImage);

   setcolor(7);

   setfillstyle(1,7);

   rectangle(LL,31,LL+mWidth+30,31+30*(MainMenu[NewID].itemCount));

   floodfill(LL+3,33,7);

   setcolor(1);

   rectangle(LL+5,36,LL+mWidth+25,26+30*(MainMenu[NewID].itemCount));

   hz(LL+15,TT,16,1,4,MainMenu[NewID].itemName[0]);

   hz(LL,8,16,1,1,MainMenu[NewID].MenuName);

   for(j=1;j<(MainMenu[NewID].itemCount);j++)

   {

   TT=TT+25;

   hz(LL+15,TT,16,1,1,MainMenu[NewID].itemName[j]);

   }

  }

  void init()

  {

   int gdriver,gmode;

   gdriver=DETECT;

   initgraph(&gdriver,&gmode,"g:TURBOC2");

   if ((fp=fopen("hzk16","rb"))==NULL)

   { printf("Can't open haz16,Please add it");

   getch(); closegraph(); exit(0);

   }

  }

  

  initm()

  {

   int L,T,R,B,i;

   mWidth=60;

   mHeight=20;

   L=50; T=8; R=mWidth+L; B=mHeight+T;

   setcolor(7);

   setfillstyle(1,7);

   rectangle(0,0,640,30);

   floodfill(3,25,7);

   setcolor(1);

   setfillstyle(1,1);

   rectangle(0,31,640,449);

   floodfill(3,300,1);

   setcolor(7);

   setfillstyle(1,7);

   rectangle(0,450,640,480);

   floodfill(3,459,7);

   setcolor(15);

   line(0,35,640,35);

   line(0,38,640,38);

   line(0,445,640,445);

   line(0,442,640,442);

   hz(170,165,80,3,14,"数据结构");

   hz(180,240,25,1,12,"(版权所有,随便拷贝)");

   hz(L,T,16,1,4,MainMenu[0].MenuName); /*red*/

   L=R; R=mWidth+L;

   for(i=1;i<9;i++)

   {

   hz(L,T,16,1,1,MainMenu[i].MenuName); /*blue*/

   L=R; R=R+mWidth;

   }

  }

void process(int OldID,int NewID) /*主菜单移动*/

  {

   int L,T;

   L=50+mWidth*OldID;

   T=8;

   hz(L,T,16,1,1,MainMenu[OldID].MenuName);

   L=50+mWidth*NewID;

   hz(L,T,16,1,4,MainMenu[NewID].MenuName);

  }

void process3(int OldID,int NewID,int m) /*子菜单移动*/

  {

   int LL,TT;

   LL=50+mWidth*m;

   TT=40+OldID*25;

   hz(LL+15,TT,16,1,1,MainMenu[m].itemName[OldID]);

   TT=40+NewID*25;

   hz(LL+15,TT,16,1,4,MainMenu[m].itemName[NewID]);

  }

  process1(int d) /* 退出 */

  {

   if(d==2) exit(1);

  }

main()

  {

   int OldID,NewID,head,tail,selectID,quit,c;

   int OldID1,NewID1,head1,tail1;

   head=0; tail=8;

   OldID=0; NewID=0;

   OldID1=0; NewID1=0;

   head1=0;

   quit=0;

   init();

   initm();

   while(!quit)

   {

   while(bioskey(1)==0);

   c=bioskey(0);

   if(c==17400) selectID=START;

   else if(c==19200) selectID=LEFTSHIFT;

   else if(c==19712) selectID=RIGHTSHIFT;

   else if(c==7181) selectID=ENTER;

   else if(c==283) selectID=EXIT;

   else if(c==20480) selectID=DOWN;

   else if(c==18432) selectID=UP;

   else selectID=NULL;

   switch (selectID)

   {

   case START:

   OldID=NewID;

   NewID=0;

   process(OldID,NewID);

   break;

   case LEFTSHIFT:

   if(mutex==0)

   {

   if(NewID==head)

   {

   OldID=NewID;

   NewID=tail;

   }

   else

   {

   OldID=NewID;

   NewID--;

   }

   process(OldID,NewID);

   }

   break;

   case RIGHTSHIFT:

   if(mutex==0)

   {

   if(NewID==tail)

   {

   OldID=NewID;

   NewID=head;

   }

   else

   {

   OldID=NewID;

   NewID++;

   }

   process(OldID,NewID);

   }

   break;

   case ENTER:

   if(mutex==0)

   {

   showItems(NewID);

   mutex=1;

   tail1=MainMenu[NewID].itemCount-1;

   }

   else

   process1(NewID);

   break;

   case EXIT:

   if(mutex!=0)

   {

   putimage(mWidth*NewID+50,31,saveImage,COPY_PUT);

   hz(mWidth*NewID+50,8,16,1,4,MainMenu[NewID].MenuName);

   mutex=0;

   }

   else

   quit=TRUE;

   break;

   case DOWN:

   if(mutex==1)

   {

   if(NewID1==tail1)

   {

   OldID1=NewID1;

   NewID1=head1;

   }

   else

   {

   OldID1=NewID1;

   NewID1++;

   }

   process3(OldID1,NewID1,NewID);

   }

   break;

   case UP:

   if(mutex!=0)

   {

   if(NewID1==head1)

   {

   OldID1=NewID1;

   NewID1=tail1;

   }

   else

   {

   OldID1=NewID1;

   NewID1--;

   }

   process3(OldID1,NewID1,NewID);

   }

   break;

  

default: break;

   }

   }

   getch();

   closegraph();

}

  

  

精彩图集

赞助商链接