分享
 
 
 

个简单菜单程序

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

今天下午下个菜单程序试试看,主要是要用鼠标控制的,现在还没写完,发现有一些问题值得大家讨论下,也希望用c写过鼠标控制菜单程序的朋友一起来探讨下.首先是鼠标假如没按键而位置在菜单选向上的时候,大家觉得这个时候应该在菜单主标题这里显示什么样的效果呢?是用rectangle画一个框还是添加背景颜色呢?同样在菜单选向里也应该显示什么样的效果.第二个问题是假如有滚屏的话你们觉得是把一大块保存下来,还是一行行保存好呢?希望写过类似程序的朋友以及想写这个程序的朋友提点意见吧,谢谢.

/*email: milo_zy@sohu.com*/

#include "stdio.h"

#include "dos.h"

#include "stdlib.h"

#include "graphics.h"

#define WA99vING 0xff00

#define LEFTPRESS 0xff01

#define LEFTCLICK 0xff10

#define LEFTDRAG 0xff19

#define MOUSEMOVE 0xff08

int Keystate;/*这里的开始都与鼠标有关*/

int MouseExist;

int MouseButton;

int MouseX;

int MouseY;

void *save;/*储存一块地方用的*/

strUCt time now;/*这里开始的变量都是时间有关*/

int old,new;

char ss[10];

struct caidan/*用来检验是否菜单已经打开*/

{

int on;/*菜单打开1,否则0*/

char ml[5][20];/*子目录*/

}c[4];

/*鼠标光标外形定义*/

typedef struct

{

unsigned int shape[32];

char hotx;

char hoty;

}SHAPE;

/*箭头型*/

SHAPE ARROW={

{

0x3fff,0x1fff,0x0fff,0x07ff,

0x03ff,0x01ff,0x00ff,0x007f,

0x003f,0x00ff,0x01ff,0x10ff,

0x30ff,0xf87f,0xf87f,0xfc3f,

0x0000,0x7c00,0x6000,0x7000,

0x7800,0x7c00,0x7e00,0x7f00,

0x7f80,0x7e00,0x7c00,0x4600,

0x0600,0x0300,0x0300,0x0180

},

0,0,

};

void TimeDelay(unsigned long microsec); /*延时函数 传入微秒数*/

void MouseOn();/*鼠标光标显示*/

void MouseOff();/*鼠标光标掩示*/

void MouseReset();/*鼠标状态值初始化*/

void MouseSetXY(int x,int y);/*设置鼠标当前位置*/

int LeftPress();/*获取鼠标按下键的信息*/

void MouseGetXY();/*获取鼠标当前位置*/

void prtime();/*输出时间的函数*/

void cdbegain();/*菜单各参数初始状态*/

void Init();/*开始画面*/

void delcd();/*先把已有的菜单删除了*/

void drawcdml(int n);/*输出菜单中的具体内容*/

void drawcd(int l,int u,int r,int d,int n);/*画菜单*/

void mouseleft();/*左键按下画菜单具体内容*/

void Move();/*测试过程*/

void main(void)

{

Init();

Move();

MouseOff();

closegraph();

}

void TimeDelay(unsigned long microsec) /*延时函数 传入微秒数*/

{

union REGS r;

r.h.ah=0x86;

r.x.cx=microsec>>16;

r.x.dx=microsec;

int86(0x15,&r,&r);

}

void MouseOn()/*鼠标光标显示*/

{

_AX=0x01;

geninterrupt(0x33);

}

void MouseOff()/*鼠标光标掩示*/

{

_AX=0x02;

geninterrupt(0x33);

}

void MouseReset()/*鼠标状态值初始化*/

{

_AX=0x00;

geninterrupt(0x33);

}

void MouseSetXY(int x,int y)/*设置鼠标当前位置*/

{

_CX=x;

_DX=y;

_AX=0x04;

geninterrupt(0x33);

}

int LeftPress()/*获取鼠标按下键的信息*/

{

_AX=0x03;

geninterrupt(0x33);

return(_BX&1);

}

void MouseGetXY()/*获取鼠标当前位置*/

{

_AX=0x03;

geninterrupt(0x33);

MouseX=_CX;

MouseY=_DX;

}

void prtime()/*输出时间的函数*/

{

gettime(&now);

new=now.ti_sec;

if(abs(new-old)>=1)

{

setfillstyle(SOLID_FILL,7);/*把原来的老时间给去除*/

bar(500,8,620,18);

old=new;

sprintf(ss,"%02d:%02d:%02d",now.ti_hour,now.ti_min,now.ti_sec);

setcolor(0);

outtextxy(500,8,ss);

}

}

void cdbegain()/*菜单各参数初始状态*/

{int i;

for(i=0;i<4;i++)/*所有菜单都已经关闭*/

c[i].on=0;

strcpy(c[0].ml[0],"Open");/*各菜单的各选项*/

strcpy(c[0].ml[1],"New");

strcpy(c[0].ml[2],"Save");

strcpy(c[0].ml[3],"Save as");

strcpy(c[0].ml[4],"Exit");

strcpy(c[1].ml[0],"Undo");

strcpy(c[1].ml[1],"Cut");

strcpy(c[1].ml[2],"Copy");

strcpy(c[1].ml[3],"Paste");

strcpy(c[1].ml[4],"Properties");

strcpy(c[2].ml[0],"Styles");

strcpy(c[2].ml[1],"L Icons");

strcpy(c[2].ml[2],"S Icons");

strcpy(c[2].ml[3],"\0");

strcpy(c[2].ml[4],"\0");

strcpy(c[3].ml[0],"Textcolor");

strcpy(c[3].ml[1],"Backcolor");

strcpy(c[3].ml[2],"Clearscr");

strcpy(c[3].ml[3],"\0");

strcpy(c[3].ml[4],"\0");

}

void Init()/*开始画面*/

{

int gd=DETECT,gm;

unsigned size;

initgraph(&gd,&gm,"c:\\tc");

gettime(&now);/*获取时间*/

old=now.ti_sec;

prtime();/*输出时间*/

setcolor(15);

size=imagesize(40,21,140,130);

save=malloc(size);/*开辟存储空间*/

setbkcolor(BLUE);/*以下是开始界面初始化*/

rectangle(2,25,638,470);

outtextxy(10,40,"Because of c,I make a lot of friends.");/*测试菜单不覆盖原来的东西*/

outtextxy(10,60,"Because of c,I'm afraid I can do ......");

outtextxy(10,80,"Thank you for all the friends in the c classroom.");

outtextxy(400,110,"milo_zy");

outtextxy(390,130,"2003.9.20");

setfillstyle(SOLID_FILL,7);

bar(0,0,640,20);

setcolor(RED);

outtextxy(50,8,"File");

outtextxy(150,8,"Edit");

outtextxy(250,8,"Tool");

outtextxy(350,8,"Color");

cdbegain();/*菜单各参数初始状态*/

MouseOn();

}

void delcd()/*先把已有的菜单删除了*/

{

int i;

for(i=0;i<4;i++)

if(c[i].on==1)

{

if(i==0)/*开始恢复原来的样子*/

putimage(40,21,save,COPY_PUT);

else if(i==1)

putimage(140,21,save,COPY_PUT);

else if(i==2)

putimage(240,21,save,COPY_PUT);

else

putimage(340,21,save,COPY_PUT);

c[i].on=0;

break;

}

}

void drawcdml(int n)/*输出菜单中的具体内容*/

{

int i,j=30,k;

switch(n)

{

case 0:k=50;break;

case 1:k=150;break;

case 2:k=250;break;

case 3:k=350;break;

}

setcolor(6);

for(i=0;i<5;i++)

&n

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有