| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:一个图形菜单程序(最新注释版+目标文件下载)
只看楼主 加入收藏
tdcwolf
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-12-20
收藏
 问题点数:0 回复次数:0 
一个图形菜单程序(最新注释版+目标文件下载)
在TC中编译时要先链接图库,运行后用方向键移动光标(发亮的菜单表示被选中),按回车回到主菜单,
有兴趣的朋友还可以添加一些子程序以实现相应的功能;此程序运行后按退出。
多赐教拉!
最近写了一个画图的工具加在“DESIGN”项下,只要输入函数表达式和X的最大值和最小值(最好为正数),就能画出其曲线,如果在"DO YOU WANT TO CONTINUE(Y/N)"后输入S(不回显),可以将几个曲线叠加显示,现在将目标文件上传供大家交流!多多支持……。。


#include<graphics.h>
#include<stdio.h>
#include<dos.h>
#include<malloc.h>

char *str1[4][8],*str2[4][8];
int x,y;

void mamenu(int n)/*这个用来生成主菜单项*/
{ setcolor(BROWN);
rectangle(10+64*(n-1),1,64*n,10);
floodfill(11+64*(n-1),2,BROWN);
};

void secmenu(int n,int n1)/*这个用来生成下级菜单项*/
{setcolor(YELLOW);
rectangle(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
floodfill(11+64*(n-1),13+12*(n1-1),YELLOW);
};

void low_bar(int n,int n1)/*这个函数用来为菜单项着暗色,表示未被选中*/
{void *buf;
int size;
setactivepage(1);
cleardevice();
setfillstyle(1,BLUE);
if(n1==0){
mamenu(n);
outtextxy(12+64*(n-1),3,str1[n][n1]);
size=imagesize(10+64*(n-1),1,64*n,10);
buf=malloc(size);
getimage(10+64*(n-1),1,64*n,10,buf);
setactivepage(0);
putimage(10+64*(n-1),1,buf,0);
free(buf);}
else {
secmenu(n,n1);
outtextxy(12+64*(n-1),14+12*(n1-1),str2[n][n1]);
size=imagesize(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
buf=malloc(size);
getimage(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1),buf);
setactivepage(0);
putimage(10+64*(n-1),12+12*(n1-1),buf,0);
free(buf);}
setvisualpage(0);
};

void light_bar(int n,int n1)/*这个函数用来为菜单项着亮色,表示被选中*/
{void *buf;
int size;
setactivepage(1);
cleardevice();
setfillstyle(1,LIGHTBLUE);
if(n1==0){
mamenu(n);
outtextxy(12+64*(n-1),3,str1[n][n1]);
size=imagesize(10+64*(n-1),1,64*n,10);
buf=malloc(size);
getimage(10+64*(n-1),1,64*n,10,buf);
setactivepage(0);
putimage(10+64*(n-1),1,buf,0);
free(buf);}
else {
secmenu(n,n1);
outtextxy(12+64*(n-1),14+12*(n1-1),str2[n][n1]);
size=imagesize(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1));
buf=malloc(size);
getimage(10+64*(n-1),12+12*(n1-1),26+64*n,22+12*(n1-1),buf);
setactivepage(0);
putimage(10+64*(n-1),12+12*(n1-1),buf,0);
free(buf);}
setvisualpage(0);
};

void move_bar(int flag)/*移动光条*/
{ int n,n1;
n=x;
n1=y;
switch(flag)
{
case 1:
if(n<2)
{low_bar(n,n1);
light_bar(n+1,n1);
x=n+1;y=n1;}
else {low_bar(n,n1);
light_bar(1,n1);
x=1;y=n1;}
break;

case 2:
if(n>1)
{low_bar(n,n1);
light_bar(n-1,n1);
x=n-1;y=n1;}
else {low_bar(n,n1);
light_bar(2,n1);
x=2;y=n1;}
break;

case 3:
if(n1<4)
{low_bar(n,n1);
light_bar(n,n1+1);
x=n;y=n1+1;}
else {low_bar(n,n1);
light_bar(n,1);
x=n;y=1;}
break;

case 4:
if(n1>1)
{low_bar(n,n1);
light_bar(n,n1-1);
x=n;y=n1-1;}
else {low_bar(n,n1);
light_bar(n,4);
x=n;y=4;}
break;
}
};

int read_key()/*读取键盘扫描码*/
{union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return(rg.h.ah);
};

void tsr()
{;
/*restorecrtmode();
;
setgraphmode;*/

};

main()
{char s1[15],s2[15];
unsigned uparten;
int graphdriver=DETECT;
int graphmode,flag,key,eflag;
registerbgidriver(EGAVGA_driver);/*如果没有连接图库,可删去此行*/
initgraph(&graphdriver,&graphmode,"");
settextstyle(0,0,1);
setlinestyle(0,uparten,1);
cleardevice();
setviewport(0,0,400,300,0);

str1[2][0]="EDIT";
str1[1][0]="FILE";
str2[1][1]="text";
str2[1][2]="music";
str2[1][3]="dir:";
str2[1][4]="quit";
str2[2][1]="copy";
str2[2][2]="cut";
str2[2][3]="paste";
str2[2][4]="cancel";

mamenu(1);
mamenu(2);
low_bar(1,0);
low_bar(2,0);
light_bar(1,0);
x=1;y=0;

do{
eflag=0;
do{key=read_key();
if(key==77){flag=1;eflag=1;}
if(key==75){flag=2;eflag=1;}
if(key==80){flag=3;eflag=1;}
if(key==72){flag=4;eflag=1;}
if(key==28){flag=5; eflag=1;}
if(key==15)exit(0);}while(eflag!=1);

if(flag==5)
{ if(y==0)
{cleardevice();
low_bar(1,0);
low_bar(2,0);
low_bar(x,y);
light_bar(x,1);
low_bar(x,2);
low_bar(x,3);
low_bar(x,4);
y=1;}
else
{cleardevice();
low_bar(1,0);
low_bar(2,0);
light_bar(x,0);
y=0;}
}

else if((flag==1||flag==2)&&y!=0)
{cleardevice();
if(flag==1&&x<2)x=x+1;
else if(flag==1&&x==2) x=1;
else if(flag==2&&x>1)x=x-1;
else x=2;
low_bar(1,0);
low_bar(2,0);
low_bar(x,1);
low_bar(x,2);
low_bar(x,3);
low_bar(x,4);
light_bar(x,y);
}
else if((flag==3||flag==4)&&y==0)continue;
else move_bar(flag);
}while(1);
}
大家多提意见哦,不要客气!
0D9lkD5R.rar (37.5 KB) 一个图形菜单程序(最新注释版+目标文件下载)


[此贴子已经被作者于2005-12-21 13:42:32编辑过]

搜索更多相关主题的帖子: 目标文件 图形 菜单 注释 
2005-12-20 14:22
快速回复:一个图形菜单程序(最新注释版+目标文件下载)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017436 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved