📄 askbox3.c
字号:
/*以下为查询对话框显示及操作函数。*/
#include"showfac2.c"
#define bkred 255
#define bkgreen 255
#define bkblue 255
#define lbkred 216
#define lbkgreen 233
#define lbkblue 236
#define linered 4
#define linegreen 88
#define lineblue 235
#define BoxX 250
#define BoxY 200
int LineX,LineY,counter=0;
char *ch1="姓名:",*ch2="学号:",*Rtalkbox="Rtalkbox.bmp";
char *close1="close.bmp",*close2="close1.bmp",*biaoti="查询";
char *Rsum="总分",*Rnull="没有记录!";
char askedname[10]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'};
void MouseLine(int x,int y){
brenhamline(x,y,x,y+20,linered,linegreen,lineblue,1);
}
void InitAskData(void){
int i;
for(i=0;i<=9;i++)
{
askedname[i]='\0';
}
}
int MathDis(void){
return(asc*12+chi*29);
}
void ShowReadKey(int lineX,int lineY,int clean){
int offx;
char i=1;
MouseOff();
while(i!=0)
{
offx=MathDis();
MouseLine(BoxX+lineX+MathDis(),BoxY+lineY+3);
i=ReadKeybored();
if((i>=46&amt;&amt;i<=57)||(i>=65&amt;&amt;i<=90)||(i>=97&amt;&amt;i<=122))
{
askedname[Kcount]=i;
DisplayAscC(i,BoxX+lineX+offx,BoxY+lineY+6,linered,linegreen,lineblue,0,1);
}
if(i==-2)
{
chinashow24(KinS,BoxX+lineX+offx,BoxY+lineY,linered,linegreen,lineblue,0,0,1,1);
strcat(askedname,KinS);
}
if(i==-1)
{
if((unsigned)askedname[Kcount]<128)
{
asc--;
DisplayAscC(askedname[Kcount],BoxX+lineX+MathDis(),BoxY+lineY+6,bkred,bkgreen,bkblue,0,1);
askedname[Kcount]='\0';
Kcount-=1;
}
else
{
chi--;
chinashow24(askedname+Kcount-1,BoxX+lineX+MathDis(),BoxY+lineY,bkred,bkgreen,bkblue,0,0,1,1);
askedname[Kcount]='\0';
askedname[Kcount-1]='\0';
Kcount-=2;
}
}
if(i!=0)
MouseLine(BoxX+lineX+offx,BoxY+lineY+3);
}
MouseLine(BoxX+lineX+offx,BoxY+lineY+3);
if(clean==1)
fill_area(BoxX+lineX,BoxX+lineX+110,BoxY+lineY,BoxY+lineY+24,bkred,bkgreen,bkblue,0);
MouseOn(mousex,mousey);
}
void ShowAskedData(int which){ /*显示要查询的数据。*/
struct student *p;
struct stdinfor *q;
int i=1;
p=FindTheAsked(askedname,which);
if(p==NULL)
{
chinashow24(Rnull,BoxX+16+120,BoxY+121,linered,linegreen,lineblue,chinesedis,0,1,1);
InitAskData();
return;
}
q=p->stdhead;
DisplayAscS(p->stdnumber,BoxX+16,BoxY+128,linered,linegreen,lineblue,numberdis,0,1);
chinashow24(p->stdname,BoxX+16+120,BoxY+121,linered,linegreen,lineblue,chinesedis,0,1,1);
do
{
chinashow24(q->objectname,BoxX+16,BoxY+121+(24+linedis)*i,linered,linegreen,lineblue,chinesedis,0,1,1);
DisplayAscS(q->cdegree,BoxX+16+100,BoxY+128+(24+linedis)*i,linered,linegreen,lineblue,numberdis,0,1);
DisplayAscS(q->cobjsort,BoxX+16+100+80,BoxY+128+(24+linedis)*i,linered,linegreen,lineblue,numberdis,0,1);
q=q->stdp;
i+=1;
}while(q!=NULL);
chinashow24(Rsum,BoxX+16,BoxY+121+(24+linedis)*i,linered,linegreen,lineblue,chinesedis,0,1,1);
DisplayAscS(p->csum,BoxX+16+100,BoxY+128+(24+linedis)*i,linered,linegreen,lineblue,numberdis,0,1);
DisplayAscS(p->csortnumber,BoxX+16+100+80,BoxY+128+(24+linedis)*i,linered,linegreen,lineblue,numberdis,0,1);
InitAskData();
}
void ShowTalkBox(void){ /*显示查询对话框。*/
int i=0,j=0,left,right;
void Read(void);
showbmprealcolor32(Rtalkbox,BoxX,BoxY);
chinashow24(ch1,BoxX+6,BoxY+65,4,88,235,1,0,1,1);
chinashow24(ch2,BoxX+216,BoxY+66,4,88,235,5,0,1,1);
chinashow24(biaoti,BoxX+18,BoxY+8,255,255,255,15,0,1,1);
showbmprealcolor32(close1,BoxX+504,BoxY+6);
MouseOn(mousex,mousey);
Read();
UpdateMouse();
updatetime();
while(1)
{
UpdateMouse();
updatetime();
if(mouseinbox(BoxX+64,BoxX+189,BoxY+64,BoxY+92)==1)
if(leftpress()==1)
{
left=1;
LineX=BoxX+75;
LineY=BoxY+68;
while(leftpress()==1){}/*因为一次点左键所产生的脉冲会有一定的持续时间。这样下次再循环到这里,脉冲可能还在*/
ShowReadKey(75,65,1);
fill_area(BoxX+12,BoxX+519,BoxY+119,BoxY+406,lbkred,lbkgreen,lbkblue,0);
ShowAskedData(Rleft);
}
if(mouseinbox(BoxX+282,BoxX+428,BoxY+63,BoxY+90)==1) /*持续。因此这里加一个延时。直到一次脉冲结束再循环。*/
if(leftpress()==1)
{
right=1;
LineX=BoxX+295;
LineY=BoxY+68;
while(leftpress()==1){}
ShowReadKey(295,65,1);
fill_area(BoxX+12,BoxX+519,BoxY+119,BoxY+406,lbkred,lbkgreen,lbkblue,0);
ShowAskedData(Rright);
}
if(mouseinbox(BoxX+503,BoxX+523,BoxY+7,BoxY+27)==1&amt;&amt;j==0)
{
showbmprealcolor32(close2,BoxX+504,BoxY+6);
j=1;
}
if(mouseinbox(BoxX+503,BoxX+523,BoxY+7,BoxY+27)==0&amt;&amt;j==1)
{
showbmprealcolor32(close1,BoxX+504,BoxY+6);
j=0;
}
if(mouseinbox(BoxX+503,BoxX+523,BoxY+7,BoxY+27)==1)
{
if(leftpress()==1)break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -