C语言编写的菜单程序_第1页
C语言编写的菜单程序_第2页
C语言编写的菜单程序_第3页
C语言编写的菜单程序_第4页
C语言编写的菜单程序_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言编写的菜单程序/* WIN-TC BGI 图形编程模板 */ #include “Conio.h“ #include “graphics.h“ #include “alloc.h“ #include “process.h“ #include “stdio.h“ #include “stdlib.h“ #include “time.h“ #include “string.h“ #include “dos.h“ #include “bios.h“ #define closegr closegraph #define INSERT 0x5200 #define ESC 0x001B #define TAB 0x0F09 #define RETURN 0x000D #define RIGHT 0x4D00 #define LEFT 0x4B00 #define UP 0x4800 #define DOWN 0x5000 #define BS 0x0E08 #define HOME 0x4700 #define END 0x4F00 #define PGUP 0x4900 #define PGDN 0x5100 #define DEL 0x5300 #define F1 0x3B00 #define F2 0x3C00 #define F3 0x3D00 #define F4 0x3E00 #define F5 0x3F00 #define F6 0x4000 #define F7 0x4100 #define F8 0x4200 #define F9 0x4300 #define F10 0x4400 #define MenuInGround 1 /*定义菜单项各种常量*/ #define MenuActiveGround 2 #define MenuActiveItem 3 #define MenuInItem 4 #define MenuEdge 5 #define WindowEdge 6 #define WindowGround 7 #define PopWindow 8 #define INUM 10 /*定义子菜单项最多为 10个*/ #define WindowMinX 1 #define WindowMinY 25 #define WindowMaxX 638 #define WindowMaxY 478 unsigned char AllColors20 = 0,CYAN,LIGHTRED,YELLOW,BLACK,WHITE,LIGHTRED,BLUE, CYAN,9,10,11,12,13,14,15;/*定义各种颜色*/ typedef struct int coor4; /*菜单的边框范围*/ int itemcoor4*INUM; /*菜单子菜单项的边框范围*/ int itemdispxy2*INUM; /*实际选中菜单的下划线位置*/ char select; /*菜单的编号*/ char itemnum; /*子菜单项的数目*/ char *itemname; /*子菜单项的名称指针*/ int COMMAND_IDINUM; /*与子菜单项所连的代号*/ MENUTYPE; static char *MainMenuItem = “File“,“Menu1“,“Menu2“,“Menu3“,“Menu4“, “Quit“,0;/*定制主菜单*/ static char *SubMenuItem1 = “Item11“,“Item12.“,“Item13“,“Item14“,“Item15“, “Item16“,“Quit“,0;/*以下定制子菜单 1-6*/ static char *SubMenuItem2 = “Item21.“,“Draw“,“Item23“,“Item24“,“Item25“, “Item26“,“Item27“,“Item28“,0; static char *SubMenuItem3 = “Item31.“,“Item32.“,“Item add.“, “Item33“,0; static char *SubMenuItem4 = “Item41.“,“Item42.“,“Moveint text“, “Item44“,“Item45“,“Itime*“,0; static char *SubMenuItem5 = “Item51.“,“About.“,“Itme53“,0; static char *SubMenuItem6 = 0; void getitemcount(char *,int *,int *,int *); /*说明程序中用的各子程序*/ void InitialGraphics(void); /*图形方式初始化*/ void LoadMainMenu(void); /*载入主菜单*/ void LoadSubMenu(char *name,int ord);/*载入子菜单*/ int ManageSubMenu(void); /*管理子菜单*/ void ManageMainMenu(void); /*管理主菜单*/ void DisplayMainMenu(void); /*显示主菜单*/ int DisplaySubMenu(int ord); /*显示子菜单*/ void Help_page_show(void)return; /*帮助函数(为空)*/ void Exitmenu(int); /*退出菜单函数*/ void In_ActiveMainMenuItem(int select,char In_Active); /*主菜单项激活函数*/ void In_ActiveSubMenuItem(int ord,int select,char In_Active); /*子菜单项激活函数*/ int GetKey(void); /*接收按键函数*/ void FuncProc(int ID); /*以下为菜单项对应的功能函数*/ void Draw(void); void MoveText(void); void About(void); void MessageBox(char *message); void GoodBye(char *pcInf1,char *pcInf2); MENUTYPE MainMenu,SubMenuINUM; /*定义主菜单和子菜单*/ int maxx,texth,textw; void *MenuImageBuf; void initgr(void) /* BGI初始化 */ int gd = DETECT, gm = 0; /* 和 gd = VGA,gm = VGAHI是同样效果 */ registerbgidriver(EGAVGA_driver);/* 注册 BGI驱动后可以不需要.BGI 文件的支持运行 */ initgraph( int main(void) initgr(); /* BGI初始化 */ /*此部分添加你自己的代码,例如 line(25, 25, 220, 220); circle(100, 100, 50); 等等*/ texth = textheight(“text“); maxx = getmaxx(); textw = textwidth(“t“); LoadMainMenu(); LoadSubMenu(SubMenuItem1,0); LoadSubMenu(SubMenuItem2,1); LoadSubMenu(SubMenuItem3,2); LoadSubMenu(SubMenuItem4,3); LoadSubMenu(SubMenuItem5,4); LoadSubMenu(SubMenuItem6,5); ManageMainMenu(); getch(); /* 暂停一下,看看前面绘图代码的运行结果 */ closegr(); /* 恢复 TEXT屏幕模式 */ return 0; / void ManageMainMenu(void) /*主菜单管理函数*/ unsigned key; int ID; DisplayMainMenu(); /*显示主菜单*/ for(key=0;) key = GetKey(); switch(key) /*根据按键值决定程序走向*/ case LEFT: /*按下左键*/ In_ActiveMainMenuItem(MainMenu.select,0); if(MainMenu.selectMainMenu.itemnum-2) MainMenu.select = 0; else MainMenu.select+; In_ActiveMainMenuItem(MainMenu.select,1); break; case DOWN: /*按下下键*/ case RETURN: /*按下回车键*/ switch(MainMenu.COMMAND_IDMainMenu.select) case 5: /*如果是主菜单 5(Quit),则退出*/ if(key=DOWN) break; closegraph(); GoodBye(“GoodBye from“,“the Menu Demo in graphics mode“); break; default: ID = ManageSubMenu(); if(ID=0) FuncProc(ID); break; / void FuncProc(int ID) switch(ID) case 6: closegraph(); GoodBye(“goodbye from“,“the Menu Demo in graphics mode“); break; case 101: Draw(); break; case 302: MoveText(); break; case 401: About(); break; default: setfillstyle(SOLID_FILL,AllColorsWindowGround); bar(WindowMinX,WindowMinY,WindowMaxX,WindowMaxY); MessageBox(“This is an example!“); break; / int ManageSubMenu(void) /*子菜单管理函数*/ MENUTYPE *mn = unsigned key; if(DisplaySubMenu(MainMenu.select) return -2; for(key=0;) /*根据不同的按键在下柆框内选择菜单项*/ key = GetKey(); switch(key) case ESC: /*取消键*/ Exitmenu(MainMenu.select); return -1; case UP: /*上键*/ In_ActiveSubMenuItem(MainMenu.select,mn-select,0); if(mn-select0) mn-select-; else mn-select = mn-itemnum-1; In_ActiveSubMenuItem(MainMenu.select,mn-select,1); break; case DOWN: /*下键*/ In_ActiveSubMenuItem(MainMenu.select,mn-select,0); if(mn-selectitemnum-1) mn-select+; else mn-select = 0; In_ActiveSubMenuItem(MainMenu.select,mn-select,1); break; case LEFT: Exitmenu(MainMenu.select); In_ActiveMainMenuItem(MainMenu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论