?? file.c
字號:
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<bios.h>
#include<conio.h>
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define ENTER 0x1c0d
#define ESC 0x011b
#define TRUE 1
#define FALSE 0
typedef struct{
int menuID;
char MenuName[8];
int itemCount;
char itemName[4][8];
}menu; /*菜單的數據結構*/
void *saveImage; /*保存菜單覆蓋區域*/
int mHeight;
int mWidth; /*定義表示窗口高,寬的變量*/
int mutex=0;
menu MainMenu[]={{0,"Menu0",4,{"Open","New","Save","Exit"}},
{1,"Menu1",2,{"Copy","Paste"}},
{2,"Menu2",2,{"Find","Instead"} }
};
void showItems(int NewID) ;
void init();
void initm();
void process(int OldID,int NewID);
void process3(int OldID,int NewID,int m);
void process1(int d);
/*定義菜單結構*/
void main()
{
int OldID,NewID,head,tail,quit;
int OldID1,NewID1,head1,tail1;
head=0;
tail=2;
OldID=0;
NewID=0;
OldID1=0;
NewID1=0;
head1=0;
quit=0;
init();
initm();
while(!quit)
{
switch(bioskey(0))
{
case LEFT:
if(mutex==0)
{
if(NewID==head)
{
OldID=NewID;
NewID=tail;
}
else
{
OldID=NewID;
NewID--;
}
process(OldID,NewID);
}
break;
case RIGHT:
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 ESC:
if(mutex!=0)
{
putimage(mWidth*NewID,20,saveImage,0);
setcolor(RED);
outtextxy(mWidth*NewID+12,0,(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==1)
{
if(NewID1==head1)
{
OldID1=NewID1;
NewID1=tail1;
}
else
{
OldID1=NewID1;
NewID1--;
}
process3(OldID1,NewID1,NewID);
}
break;
default:
break;
}
}
getch();
closegraph();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -