建设信用卡积分商城网站,中国网新闻,网站建设开发报价明细,男女做爰视频免费网站TC字符界面-菜单程序【原创】2008/03/06 22:58/*本程序代码属本人原创#xff0c;未经允许不得转载#xff0c;谢谢合作作者#xff1a;HungryAnt发布时间#xff1a;2008-3-6*//*快捷键功能没有提供,因为程序有各自的快捷键*/#includestdio.h#includeconio.h未经允许不得转载谢谢合作 作者HungryAnt 发布时间2008-3-6 */ /*快捷键功能没有提供,因为程序有各自的快捷键*/ #includestdio.h #includeconio.h #includestring.h #includebios.h /*bios_key*/ #define LEFT 0x4B00 #define RIGHT 0x4D00 #define UP 0x4800 #define DOWN 0x5000 #define ENTER 0x1c0d #define ALT 0x1100 #define ESC 0x011B #define F1 0x3B00 #define M 3 #define MAX 20 #define B0 4 #define B1 5 #define B2 6 /*B0,B1等必须小于M*/ char *mmenu[M];/*主菜单指针数组*/ char *bmenu_0[B0];/*分菜单0指针数组*/ char *bmenu_1[B1];/*分菜单1指针数组*/ char *bmenu_2[B2];/*分菜单2指针数组*/ void MenuItem(char *menu[],int max,char *pm,...){/*菜单项 可变参数*/ int i0; char **ppmpm;/*ppm为指向指针的指针*/ while(imax){/*将传进来的字符串地址全部存入指针数组中*/ menu[i]*ppm; /*ppmsizeof(pm)/sizeof(ppm);*/ ppm;/*ppm和pm所占字节数都是2,这样就得到了pm后一个指向字符串的指针地址*/ i; } } void MainMenuPaint(int choose){/*主菜单绘制*/ int i0,x1,len; int bgLIGHTGRAY,textBLACK,hRED;/*灰底,黑字,红(表示ALT快捷键)*/ char t[2]; window(1,1,80,1);/*主菜单栏*/ textattr((bg4)text); clrscr(); while(iM){/*显示各项名称*/ cprintf( %s ,mmenu[i]);/*主菜单各项左右各一个空格*/ i; } i0; while(iM){/*标上快捷键键位和当前选择项加黑*/ if(ichoose){ lenxstrlen(mmenu[i])2; for(;xlen;x){ gettext(x,1,x,1,t); t[1](04)15;/*黑底白字*/ puttext(x,1,x,1,t); } i; } else{ x; gettext(x,1,x,1,t); t[1](bg4)RED; puttext(x,1,x,1,t); xstrlen(mmenu[i]); x; i; } } } void BMenuPaint(char *menu[],int lx,int mx,int my,int bchoose){/*分菜单绘制*/ int bgLIGHTGRAY,textBLACK;/*颜色设置*/ int i,j; char t[2]; window(lx,2,lxmx-1,my11);/*创建窗口*/ textattr((bg4)text); clrscr(); gotoxy(1,1);/*相对于当前窗口*/ for(j0;jmx;j)putch(196); i0; while(imy){ gotoxy(1,i2); printf( %s ,menu[i]); i; } ibchoose; for(j0;jmx;j){ gettext(lxj,i3,lxj,i3,t); t[1](BLACK4)WHITE; puttext(lxj,i3,lxj,i3,t); } } int BMenuChoose(int choose){/*分菜单选择并绘制*/ char *menu[MAX]; char *pt;/*储存被分菜单暂时覆盖部分的内容*/ int my0,lx,mx0,bchoose0,i,l,key; switch(choose){/*添加分菜单需要在此处添加相应代码*/ case 0:/*分窗口0*/ myB0;/*此处用来设置分窗口共多少项,B0为预处理*/ for(i0;iB0;i)menu[i]bmenu_0[i];/*将bmenu_0指针数组所有指向的地址传给menu指针数组*/ lx1;/*mx表示分菜单窗口左侧x坐标*/ break; case 1:/*分窗口1*/ myB1; for(i0;iB1;i)menu[i]bmenu_1[i]; lx1strlen(mmenu[0])2; break; case 2:/*分窗口2*/ myB2; for(i0;iB2;i)menu[i]bmenu_2[i]; lx1strlen(mmenu[0])2; lxstrlen(mmenu[1])2; break; } i0; while(imy){/*使mx为大小为最长字符串的长度*/ lstrlen(menu[i]); if(mxl)mxl; i; } mx2;/*是项目左右各一个空格*/ /*储存被分菜单暂时覆盖部分的内容*/ pt(char *)malloc(mx*(my1)*2);/*my1用意在于本菜单显示时会多一行横线*/ gettext(lx,2,lxmx-1,(my1)1,pt); BMenuPaint(menu,lx,mx,my,bchoose); while(1){ if(bioskey(1)){ keybioskey(0); switch(key){ case DOWN: bchoose(bchoosemy-1)?bchoose1:0; BMenuPaint(menu,lx,mx,my,bchoose); break; case UP: bchoose(bchoose0)?bchoose-1:my-1; BMenuPaint(menu,lx,mx,my,bchoose); break; case RIGHT: case LEFT: free(pt); puttext(lx,2,lxmx-1,(my1)1,pt);/*覆盖区域复原*/ return key;/*返回kay值*/ case ENTER: case ESC: free(pt); puttext(lx,2,lxmx-1,(my1)1,pt);/*覆盖区域复原*/ return; } } } } void ChooseMainMenu(int choose){/*主菜单选择*/ int key0,at0; MainMenuPaint(0);/*菜单项选择自动设为0*/ keyBMenuChoose(0); if(keyRIGHT || keyLEFT)at1; else at0; while(1){ if(bioskey(1) || at){/*at为自动,此用意是让切换分菜单切换加快*/ if(at!1)keybioskey(0); switch(key){ case RIGHT: choose(chooseM-1)?choose1:0; MainMenuPaint(choose); keyBMenuChoose(choose);/*分菜单选择调用*/ /*返回值赋给key,是用来方便从*/ if(keyRIGHT || keyLEFT)at1; else at0; break; case LEFT: choose(choose0)?choose-1:M-1; MainMenuPaint(choose); keyBMenuChoose(choose);/*分菜单选择调用*/ if(keyRIGHT || keyLEFT)at1; else at0; break; case ENTER: case ESC:return; } } } } int main(){ int key,i; MenuItem(mmenu,M,HungryAnt,Author,Help);/*主菜单*/ /*用可变参数就是怎么爽但字符串数量需要和M值相等,不能太多,仅支持一行显示*/ MainMenuPaint(-1);/*菜单项选择*/ MenuItem(bmenu_0,B0,HungryAnt,I really,love you!!!,Good bye!);/*分菜单*/ MenuItem(bmenu_1,B1,HungryAnt,abcdffff,1223312,567,HHHH); MenuItem(bmenu_2,B2,H,I,l,G,G,Good bye!); window(1,2,80,25); textattr((BLUE4)WHITE); clrscr(); /*for(i0;iB1;i){ printf( %s /n,bmenu_1[i]); } getch(); */ cprintf(Press F1 to the Main Menu...); while(1){ if(bioskey(1)){ keybioskey(0); switch(key){ case F1: ChooseMainMenu(0);/*主菜单选择,先设为0*/ exit(1); } } } getch(); } 转载于:https://www.cnblogs.com/gods/archive/2008/03/26/3887673.html