📄 gai01011.c
字号:
/**********5***********/
setcolor(0);
rectangle(410,26,460,46);
setfillstyle(1,2);
bar(412,28,458,44);
outtextxy(414,30,"DaYin");
/**********6**********/
setcolor(0);
rectangle(480,26,540,46);
setfillstyle(1,2);
bar(482,28,538,44);
outtextxy(484,30,"TuiChu");
/************菜单结束***********/
/************最下端文本输出区设置************/
setcolor(14); /** 最下边的文本框属性设置**/
rectangle(1,451,639,479); /*** 是花边框 **/
setfillstyle(1,15); /*设置填充样式和颜色*/
bar(3,453,638,477); /** bar 画区域填充 结束 **/
/*************中间的文本输出区设置************/
setcolor(14);
rectangle(1,52,639,450);
setfillstyle(1,8); /*** 文本输出的相关属性**/
bar(3,54,638,448);
setcolor(4);
/**********文本输出结束**********/
}
/****************************鼠标相关操作的函数**************************/
/***************鼠标样式的设置函数****************/
void MouseMath()/*计算鼠标的样子*/
{ int i,j,jj,k;
long UpNum[16]={
0x3fff,0x1fff,0x0fff,0x07ff,
0x03ff,0x01ff,0x00ff,0x007f,
0x003f,0x00ff,0x01ff,0x10ff,
0x30ff,0xf87f,0xf87f,0xfc3f
};
long DownNum[16]={
0x0000,0x7c00,0x6000,0x7000,
0x7800,0x7c00,0x7e00,0x7f00,
0x7f80,0x7e00,0x7c00,0x4600,
0x0600,0x0300,0x0300,0x0180
};
for(i=0;i<16;i++)
{
j=jj=15;
while(UpNum[i]!=0)
{
up[i][j]=UpNum[i]%2;
j--;
UpNum[i]/=2;
}
while(DownNum[i]!=0)
{
down[i][jj--]=DownNum[i]%2;
DownNum[i]/=2;
}
for(k=j;k>=0;k--)
up[i][k]=0;
for(k=jj;k>=0;k--)
down[i][k]=0;
for(k=0;k<16;k++)/*四种组合方式*/
{
if(up[i][k]==0&&down[i][k]==0)
mouse_draw[i][k]=1;
else if(up[i][k]==0&&down[i][k]==1)
mouse_draw[i][k]=2;
else if(up[i][k]==1&&down[i][k]==0)
mouse_draw[i][k]=3;
else
mouse_draw[i][k]=4;
}
}
mouse_draw[1][2]=4;/*特殊点*/
}
/*****************鼠标光标显示**************/
void MouseOn(int x,int y) /**鼠标光标显示**/
{
int i,j;
int color;
for(i=0;i<16;i++)/*画鼠标*/
{
for(j=0;j<16;j++)
{
pixel_save[i][j]=getpixel(x+j,y+i);/*保存原来的颜色*/
if(mouse_draw[i][j]==1)
putpixel(x+j,y+i,0);
else if(mouse_draw[i][j]==2)
putpixel(x+j,y+i,15);
}
}
}
/****************隐藏鼠标光标*****************/
void MouseOff() /***鼠标光标隐藏***/
{
int i,j,x,y,color;
x=MouseX;
y=MouseY;
for(i=0;i<16;i++)/*原位置异或消去*/
for(j=0;j<16;j++)
{
if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)
continue;
color=getpixel(x+j,y+i);
putpixel(x+j,y+i,color^color);
putpixel(x+j,y+i,pixel_save[i][j]);
}
}
/*鼠标是否加载
MouseExist:1=加载
0=未加载
MouseButton:鼠标按键数目 */
void MouseLoad()
{
_AX=0x00;
geninterrupt(0x33);
MouseExist=_AX;
MouseButton=_BX;
}
/*鼠标状态值初始化*/
void MouseReset()
{
_AX=0x00;
geninterrupt(0x33);
}
/*设置鼠标左右边界
lx:左边界
gx:右边界 */
void MouseSetX(int lx,int rx)
{
_CX=lx;
_DX=rx;
_AX=0x07;
geninterrupt(0x33);
}
/*设置鼠标上下边界
uy:上边界
dy:下边界 */
void MouseSetY(int uy,int dy)
{
_CX=uy;
_DX=dy;
_AX=0x08;
geninterrupt(0x33);
}
/*设置鼠标当前位置
x:横向坐标
y:纵向坐标 */
void MouseSetXY(int x,int y)
{
_CX=x;
_DX=y;
_AX=0x04;
geninterrupt(0x33);
}
/*设置鼠标速度(缺省值:vx=8,vy=1)
值越大速度越慢 */
void MouseSpeed(int vx,int vy)
{
_CX=vx;
_DX=vy;
_AX=0x0f;
geninterrupt(0x33);
}
/*获取鼠标按下键的信息*/
/*是否按下左键
返回值: 1=按下 0=释放*/
int LeftPress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&1);
}
/*是否按下中键
返回值同上 */
int MiddlePress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&4);
}
/*是否按下右键
返回值同上 */
int RightPress()
{
_AX=0x03;
geninterrupt(0x33);
return(_BX&2);
}
/*获取鼠标当前位置*/
void MouseGetXY()
{
_AX=0x03;
geninterrupt(0x33);
MouseX=_CX;
MouseY=_DX;
}
/*****************鼠标按键记录函数*********************/
int MouseStatus()/*鼠标按键情况*/
{
int x,y;
int status;
int press=0;
int i,j,color;
status=0;/*默认鼠标没又移动*/
x=MouseX;
y=MouseY;
while(x==MouseX&&y==MouseY&&status==0&&press==0)
{
if(LeftPress()&&RightPress())
press=1;
else if(LeftPress())
press=2;
else if(RightPress())
press=3;
MouseGetXY();
if(MouseX!=x||MouseY!=y)
status=1;
}
if(status)/*移动情况才重新显示鼠标*/
{
for(i=0;i<16;i++)/*原位置异或消去*/
for(j=0;j<16;j++)
{
if(mouse_draw[i][j]==3||mouse_draw[i][j]==4)
continue;
color=getpixel(x+j,y+i);
putpixel(x+j,y+i,color^color);
putpixel(x+j,y+i,pixel_save[i][j]);
}
MouseOn(MouseX,MouseY);/*新位置显示*/
}
if(press!=0)/*有按键得情况*/
return press;
return 0;/*只移动得情况*/
}
/*********************屏幕接收信息处理***********************/
int xinxichuli(char chs[])
{
int i,jis,num=0;
jis=strlen(chs);
for(i=0;i<jis;i++)
{
if(chs[i]<48||chs[i]>57)
{
outtextxy(10,460,"shu ru wu xiao shu ju!qiang zhi chu li wei 0");
return 0;
}
else num=num+((chs[i]-48)*pow(10,(jis-i-1)));
}
if(num<0||num>255)
{
outtextxy(10,460,"shu ru wu xiao shu ju!qiang zhi chu li wei 0");
return 0;
}
else return num;
}
/*******************鼠标操作响应函数***************************/
void main()
{
int i=0,prkey=0,caozuo=1,wenjian=3;
/*******prkey记录鼠标按键操作情况,
以及如何处理********/
int chongxin=1;
int kaishi,jiesu;
char chkaishi[3],chjiesu[3];
char spr[30];
int driver=DETECT,mode;
tocaidan2:
registerbgidriver(EGAVGA_driver);
detectgraph(&driver, &mode);
initgraph(&driver, &mode,"");
setbkcolor(0);
MouseMath(); /*计算鼠标形状,一开始必须使用,后面就不用了*/
MouseSetY(0,479);
MouseSetX(0,639);
MouseSetXY(100,100);
tocaidan:
caidan();
if(prkey==10)
{
setcolor(2);
outtextxy(3,58,"shu ru wen jian ming:");
setcolor(4);
outtextxy(10,78,fliename);
if(wenjian==0)
outtextxy(10,460,"shu ru wu xiao wen jian ming!");
}
if(prkey==30)
{
kaishi=xinxichuli(chkaishi);
jiesu=xinxichuli(chjiesu);
if(jiesu<kaishi)
{
i=kaishi;
kaishi=jiesu;
jiesu=i;
}
setcolor(2);
outtextxy(3,58,"shu ru wen jian ming:");
setcolor(4);
outtextxy(10,78,fliename);
setcolor(2);
outtextxy(3,100,"shu ru cha kan de fan wei qishidian,zhongzhidian(0--255):");
setcolor(4);
sprintf(spr,"cong %d kaishi",kaishi);
outtextxy(10,120,spr);
setcolor(10);
sprintf(spr,"dao %d jieshu",jiesu);
outtextxy(140,120,spr);
}
MouseOn(MouseX,MouseY);/*第一次显示鼠标*/
while(MouseStatus()!=4)
{
i=0;
switch(MouseStatus())
{
/**********左键双击按下的处理操作******/
case 1:
/**************左键按下的处理操作*****/
case 2:
MouseOff();
/****1*****/
if((MouseX>4&&MouseX<64)&&(MouseY>26&&MouseY<46))
{
if(chongxin==1)
{
setcolor(2);
outtextxy(3,58,"qing shu ru wen jian ming:");
scanf("%s",fliename);
prkey=10;
chongxin=2;
wenjian=duhuiduzhi(xiangsu,fliename); /**文件是否出错**/
goto tocaidan;
}
else
{
chongxin=1;
prkey=40;
goto tocaidan;
}
}
/*****2****/
if((MouseX>80&&MouseX<130)&&(MouseY>26&&MouseY<46))
{
closegraph();
TuXianShi( fliename,1);
goto tocaidan2;
}
/****3****/
if((MouseX>150&&MouseX<260)&&(MouseY>26&&MouseY<46))
{
closegraph();
TuXianShi(fliename,3);
goto tocaidan2;
}
/****4****/
if((MouseX>280&&MouseX<390)&&(MouseY>26&&MouseY<46))
{
closegraph();
huatuZHFT();
goto tocaidan2;
}
/*****5****/
if((MouseX>410&&MouseX<460)&&(MouseY>26&&MouseY<46))
{
if(chongxin!=3)
{
if(caozuo==1)
{
setcolor(2);
outtextxy(3,100,"qing shu ru cha kan de qishidian(0--255):");
scanf("%s",chkaishi);
outtextxy(3,120,"qing shu ru cha kan de zhongzhidian(0--255):");
scanf("%s",chjiesu);
prkey=30;
caozuo=2;
goto tocaidan;
}
if(caozuo==2)
{
closegraph();
shuchuhuidu(xiangsu,kaishi,jiesu);
caozuo=1;
chongxin=3;
goto tocaidan2;
}
}
else
{
chongxin=1;
prkey=10;
goto tocaidan;
}
}
/****6****/
if((MouseX>480&&MouseX<540)&&(MouseY>26&&MouseY<46))
exit(1);
MouseGetXY();
MouseOn(MouseX,MouseY);
break;
/******右键按下相应的处理操作*****/
case 3:
MouseOff();
prkey=40;
goto tocaidan;
MouseGetXY();
MouseOn(MouseX,MouseY);
break;
default:break;
}
}
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -