📄 keymenu.h
字号:
#ifndef KEYMENU_H
#define KEYMENU_H
#include <graphics.h>
#include <stdlib.h>
//#include "c:\MyTele\MyCCode\Common.h"
#include "e:\Progra~1\MyCCode\Common.h"
#include "e:\Progra~1\MyCCode\Frame.h"
#include "e:\Progra~1\MyCCode\List.h"
extern int KeyboardMessage[2];
extern TRAIN *MainHead;
char *Menugroup1[]={
"New",
"Open...",
"Save",
"Save as...",
"Exit"
};
char *Menugroup2[]={
"Add Item",
"Delete Item",
"Modify...",
"Sort by begin"
};
char *Menugroup3[]={
"By Number",
"By Begin",
"By Type",
"By A to B"
};
char *Menugroup4[]={"About..."};
char *Title[]={
"File",
"Edit",
"Find",
"Help"
};
Rect MenuRect[]={
{5,15,40,25},//0 File
{55,15,90,25},//1 Edit
{105,15,140,25},//2 Find
{155,15,190,25},//3 Help
{5,27,110,97},//4 group1
{55,27,184,84},//5 group2
{105,27,210,84},//6 group3
{155,27,240,46}//7 group4
};
void *pImage=NULL;
/////////////////////////////////////////////////////
void DrawTitle(int x1,int y1,int x2,int y2,
int color,int textcolor,
int whichselect);
void SaveUnderMenu(int Index);//0,1
void DrawMenu(int Index, //0,1
//int x1,int y1,int x2,int y2,
int color,int textcolor,
int whichselect);
void DestoryMenu(int Index);
int MenuFunction();
void OperateID(int MenuID);
//////////////////////////////////////////////////////
int MenuFunction()
{
int Open=0;
int NowGroup=0;
int NowItem=0;
int FinalValue=0;
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,0);
while(KeyboardMessage[1]!=CTRL_KEY_ESC)
{
PostKeybrdMessage();
switch(KeyboardMessage[1])
{
case CTRL_KEY_LEFT:
{
if(!Open)
{
if(NowGroup<1) NowGroup=3;
else NowGroup--;
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,NowGroup);
}
else
{
DestoryMenu(NowGroup);
if(NowGroup<1) NowGroup=3;
else NowGroup--;
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,NowGroup);
NowItem=0;
SaveUnderMenu(NowGroup);
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
break;
}
case CTRL_KEY_RIGHT:
{
if(!Open)
{
if(NowGroup>2) NowGroup=0;
else NowGroup++;
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,NowGroup);
}
else
{
DestoryMenu(NowGroup);
if(NowGroup>2) NowGroup=0;
else NowGroup++;
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,NowGroup);
NowItem=0;
SaveUnderMenu(NowGroup);
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
break;
}
case CTRL_KEY_DOWN:
{
if(!Open)
{
Open=1;
SaveUnderMenu(NowGroup);
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
else
{
switch(NowGroup)
{
case 0:if(NowItem>3) NowItem=0;
else NowItem++;
break;
case 1:if(NowItem>2) NowItem=0;
else NowItem++;
break;
case 2:if(NowItem>2) NowItem=0;
else NowItem++;
break;
case 3:NowItem=0;
break;
}
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
break;
}
case CTRL_KEY_UP:
{
if(Open)
{
switch(NowGroup)
{
case 0:if(NowItem<1) NowItem=4;
else NowItem--;
break;
case 1:if(NowItem<1) NowItem=3;
else NowItem--;
break;
case 2:if(NowItem<1) NowItem=3;
else NowItem--;
break;
case 3:NowItem=0;
break;
}
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
break;
}
case CTRL_KEY_ENTER:
{
if(!Open)
{
Open=1;
SaveUnderMenu(NowGroup);
DrawMenu(NowGroup,FRAME_COLOR,MENUTEXT_COLOR,NowItem);
}
else
{
FinalValue=(NowGroup+1)*10+NowItem+1;
DestoryMenu(NowGroup);
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,8);//clear
return FinalValue;
}
break;
}
}
}
if(Open)
DestoryMenu(NowGroup);
DrawTitle(0,13,639,28,FRAME_COLOR,MENUTEXT_COLOR,8);//clear
return 0;
}
void OperateID(int MenuID)
{
switch(MenuID)
{
case 0 :{return;}
////////////////////File//////////////////////////////
case 11:{//File New
New(0);
break;
}
case 12:{//File Open...
LoadBox();
break;
}
case 13:{//File Save
Save();
break;
}
case 14:{//File SaveAs...
SaveAsBox();
break;
}
case 15:{//File Exit
Exit();
//break;
}
////////////////////Edit///////////////////////////////
case 21:{//Edit AddItem
AddItem();
break;
}
case 22:{//Edit Delete Item
Delete();
break;
}
case 23:{//Edit Modify...
Modify();
break;
}
case 24:{//Edit SortByBegin
break;
}
////////////////////Find////////////////////////////////
case 31:{//Find ByNumber
FindByNumber();
break;
}
case 32:{//Find ByBegin
FindByBegin();
break;
}
case 33:{//Find ByType
FindByType();
break;
}
case 34:{//Find ByAtoB
FindByATB();
break;
}
//////////////////Help//////////////////////////////////////
case 41:{//HelpAbout
AboutBox();
break;
}
}
}
void DrawTitle(int x1,int y1,int x2,int y2,
int color,int textcolor,
int whichselect)
{
int i;
int MenuX=MenuRect[0].left+2;
int MenuY=MenuRect[0].top+3;
//setviewport(x1,y1,x2,y2,1);
DrawBox(x1,y1,x2,y2,color);
for(i=0;i<4;i++)
{
MenuX=MenuRect[i].left+2;
MenuY=MenuRect[i].top+2;
setcolor(textcolor);
if(i==whichselect)
{
//setfillstyle(SOLID_FILL,1);
//bar(MenuRect[i].left,MenuRect[i].top,
// MenuRect[i].right,MenuRect[i].bottom);
DrawEdgeTwo(MenuRect[i].left,MenuRect[i].top,
MenuRect[i].right,MenuRect[i].bottom);
setcolor(MENUTEXT_COLORSEL);
outtextxy(MenuX,MenuY,Title[i]);
}
outtextxy(MenuX,MenuY,Title[i]);
}
//RestoreViewport();
}
void DrawMenu(int Index,
//int x1,int y1,int x2,int y2,
int color,int textcolor,
int whichselect)
{
int i;
int textx,texty;
switch(Index)
{
case 0:
{
//setviewport(MenuRect[2].left,MenuRect[2].top,
// MenuRect[2].right,MenuRect[2].bottom,1);
DrawBox(MenuRect[4].left,
MenuRect[4].top,
MenuRect[4].right,
MenuRect[4].bottom,color);
textx=MenuRect[4].left+10;
texty=MenuRect[4].top+5;
for(i=0;i<5;i++)
{
setcolor(textcolor);
if(i==whichselect)
{
/*setfillstyle(SOLID_FILL,1);
bar(MenuRect[3].left+2,texty-3,
MenuRect[3].right-2,texty+10);*/
DrawEdgeOne(MenuRect[4].left+2,texty-3,
MenuRect[4].right-2,texty+10);
setcolor(MENUTEXT_COLORSEL);
outtextxy(textx,texty,Menugroup1[i]);
}
outtextxy(textx,texty,Menugroup1[i]);
texty+=13;
}
break;
}
case 1:
{
//setviewport(MenuRect[3].left,MenuRect[3].top,
// MenuRect[3].right,MenuRect[3].bottom,1);
DrawBox(MenuRect[5].left,
MenuRect[5].top,
MenuRect[5].right,
MenuRect[5].bottom,color);
textx=MenuRect[5].left+10;
texty=MenuRect[5].top+5;
for(i=0;i<4;i++)
{
setcolor(textcolor);
if(i==whichselect)
{
/*setfillstyle(SOLID_FILL,1);
bar(MenuRect[4].left+2,texty-3,
MenuRect[4].right-2,texty+10);*/
DrawEdgeOne(MenuRect[5].left+2,texty-3,
MenuRect[5].right-2,texty+10);
setcolor(MENUTEXT_COLORSEL);
outtextxy(textx,texty,Menugroup2[i]);
}
outtextxy(textx,texty,Menugroup2[i]);
texty+=13;
}
break;
}
case 2:
{
//setviewport(MenuRect[3].left,MenuRect[3].top,
// MenuRect[3].right,MenuRect[3].bottom,1);
DrawBox(MenuRect[6].left,
MenuRect[6].top,
MenuRect[6].right,
MenuRect[6].bottom,color);
textx=MenuRect[6].left+10;
texty=MenuRect[6].top+5;
for(i=0;i<4;i++)
{
setcolor(textcolor);
if(i==whichselect)
{
/*setfillstyle(SOLID_FILL,1);
bar(MenuRect[5].left+2,texty-3,
MenuRect[5].right-2,texty+10);*/
DrawEdgeOne(MenuRect[6].left+2,texty-3,
MenuRect[6].right-2,texty+10);
setcolor(MENUTEXT_COLORSEL);
outtextxy(textx,texty,Menugroup3[i]);
}
outtextxy(textx,texty,Menugroup3[i]);
texty+=13;
}
break;
}
case 3:
{
//setviewport(MenuRect[3].left,MenuRect[3].top,
// MenuRect[3].right,MenuRect[3].bottom,1);
DrawBox(MenuRect[7].left,
MenuRect[7].top,
MenuRect[7].right,
MenuRect[7].bottom,color);
textx=MenuRect[7].left+10;
texty=MenuRect[7].top+5;
for(i=0;i<1;i++)
{
setcolor(textcolor);
if(i==whichselect)
{
/*setfillstyle(SOLID_FILL,1);
bar(MenuRect[5].left+2,texty-3,
MenuRect[5].right-2,texty+10);*/
DrawEdgeOne(MenuRect[7].left+2,texty-3,
MenuRect[7].right-2,texty+10);
setcolor(MENUTEXT_COLORSEL);
outtextxy(textx,texty,Menugroup4[i]);
}
outtextxy(textx,texty,Menugroup4[i]);
texty+=13;
}
break;
}
}
RestoreViewport();
}
void DestoryMenu(int Index)
{
if(pImage!=NULL)
{
switch(Index)
{
case 0: putimage(MenuRect[4].left,MenuRect[4].top,pImage,COPY_PUT);
break;
case 1: putimage(MenuRect[5].left,MenuRect[5].top,pImage,COPY_PUT);
break;
case 2: putimage(MenuRect[6].left,MenuRect[6].top,pImage,COPY_PUT);
break;
case 3: putimage(MenuRect[7].left,MenuRect[7].top,pImage,COPY_PUT);
break;
}
free(pImage);
}
}
void SaveUnderMenu(int Index)
{
unsigned int size;
switch(Index)
{
case 0:
{
size=imagesize(MenuRect[4].left,
MenuRect[4].top,
MenuRect[4].right,
MenuRect[4].bottom);
pImage=malloc(size);
getimage(MenuRect[4].left,
MenuRect[4].top,
MenuRect[4].right,
MenuRect[4].bottom,
pImage);
break;
}
case 1:
{
size=imagesize(MenuRect[5].left,
MenuRect[5].top,
MenuRect[5].right,
MenuRect[5].bottom);
pImage=malloc(size);
getimage(MenuRect[5].left,
MenuRect[5].top,
MenuRect[5].right,
MenuRect[5].bottom,
pImage);
break;
}
case 2:
{
size=imagesize(MenuRect[6].left,
MenuRect[6].top,
MenuRect[6].right,
MenuRect[6].bottom);
pImage=malloc(size);
getimage(MenuRect[6].left,
MenuRect[6].top,
MenuRect[6].right,
MenuRect[6].bottom,
pImage);
break;
}
case 3:
{
size=imagesize(MenuRect[7].left,
MenuRect[7].top,
MenuRect[7].right,
MenuRect[7].bottom);
pImage=malloc(size);
getimage(MenuRect[7].left,
MenuRect[7].top,
MenuRect[7].right,
MenuRect[7].bottom,
pImage);
break;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -