C语言实现图形界面登陆窗口

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

纯C语言实现图形界面登陆窗口一下是界面图:编程工具是:VC6.0请根据个人需要对源代码进行修改使用,图片放在工程文件夹中。新建时应该将文件后缀设置为.cpp以下是程序灯源代码:#includegraphics.h#includestdio.h#includeconio.h#includestdlib.h#includeString.h#includewindows.h#defineLEN_A20//账户长度#defineLEN_P10//密码长度typedefstructAccount{charname[20];longintpassword;}InAccount;typedefstructinputAPword{InAccountaccount;intflag;}InputAPword;voidinputbox(void);voidcursor(void);voidcursor2(void);voidname(void);intMouseEvent(IMAGE);InputAPwordmenu2(void){initgraph(640,480);//初始化图形界面IMAGEImg1;//声明一个IMAGE变量IMAGEImg2(640,480);//声明一个IMAGE变量charinput1[LEN_A];//用于接收输入的字符串charinput2[LEN_P];//用于接收输入的字符串intj;InputAPwordaccount;loadimage(&Img1,_T(girl4.bmp));//加载图片SetWorkingImage(&Img1);//设置当前绘图设备为Img1setlinestyle(PS_SOLID,NULL,2);//设置线的样式setfont(64,0,华文隶书);//设置字体的样式和大小settextcolor(RGB(134,0,255));//设置字体的颜色setlinecolor(RGB(16,16,16));//设置线的颜色setbkmode(TRANSPARENT);//设置字体的背景为透明outtextxy(50,50,_T(A用户登录));//显示汉字settextcolor(RGB(0,0,0));//设置字体的颜色rectangle(50,150,350,340);//画矩形框rectangle(254,515,302,585);//画一个矩形框fillrectangle(100,280,173,315);//登录框fillrectangle(223,280,296,315);//取消框SetWorkingImage();//恢复当前绘图设备为默认设备putimage(0,0,&Img1);//显示图片do{name();//显示文字信息setbkmode(OPAQUE);//设置字体背景为默认setbkcolor(RGB(255,255,255));cursor();//显示输入框以及闪烁的光标for(j=0;LEN_A;j++){//限制输入,最多允许输入LNE位数据input1[j]=getch();//读取键盘输入的字符并存入数组outtextxy(161+8*j,193,input1[j]);//将字符显示在图片上if(input1[j]==8){//按删除键时的操作input1[j-1]=0;//字符数组内容删除一位outtextxy(161+8*j,193,);//将字符遮掩outtextxy(161+8*(j-1),193,);//将字符遮掩j-=2;//数组坐标后退两个if(j=-1){//当回退到头时的处理input1[0]='\0';//对数组进行标记break;//退出本次输入}continue;}elseif(input1[j]==13){//按回车键时的处理input1[j]='\0';//将数组的最后一个数据标记为'\0'if(j==0){//无任何输入,且按下回车时的处理outtextxy(161+8*j,193,);//将回车显示的字符遮掩outtextxy(161+8*(j-1),193,);//将回车显示的字符遮掩input1[0]='\0';//对数组进行进行标记}break;//退出本次输入}}setbkmode(OPAQUE);//设置字体背景为默认setbkcolor(RGB(255,255,255));cursor2();//光标聚到下一个输入框的开始位置for(j=0;jLEN_P;j++){//密码输入input2[j]=getch();//获取从键盘输入的字符outtextxy(161+8*j,234,*);//以*号显示,起到遮掩密码的作用if(input2[j]==8){//按下删除键时的处理input2[j-1]=0;//对数组进行处理outtextxy(161+8*j,234,);//对需要进行删除处理的字符进行遮掩outtextxy(161+8*(j-1),234,_T());//对需要删除进行处理的字符进行遮掩j-=2;//对数组进行处理if(j=-1){//当删除到头时进行的操作input2[0]='\0';//对数组进行标记break;//退出本次输入}continue;}elseif(input2[j]==13){//按下回车时的操作outtextxy(161+8*j,234,);input2[j]='\0';//将数组的最后一位标记为‘\0’if(j==0){//无任何操作,直接进行回车输入时的操作outtextxy(161+8*j,234,);//对输入回车时产生的字符进行遮掩outtextxy(161+8*(j-1),234,_T());//对输入回车时产生的字符进行遮掩input2[0]='\0';//对数组进行标记}break;//结束本次输入}}getimage(&Img2,0,0,640,480);//保存当前显示的界面}while((input1[0]=='\0')&&(input2[0]=='\0'));//当第一个或第二个框有一个未输入时则继续循环输入switch(MouseEvent(Img2)){case1:{account.flag=1;strcpy(account.account.name,input1);//将输入的字符存入结构体account.account.password=atol(input2);//将输入的密码存入结构体break;}case2:{account.flag=2;}}returnaccount;closegraph();}voidname(void)//显示文字信息函数{setfont(25,0,宋体);//设置字体的大小和样式setbkmode(TRANSPARENT);settextcolor(RGB(0,0,0));outtextxy(90,190,_T(账号));//显示汉字outtextxy(90,233,_T(密码));outtextxy(111,285,_T(登录));outtextxy(234,285,_T(取消));setfont(18,0,宋体);//setbkmode(OPAQUE);//设置字体背景为默认}voidcursor(void)//闪烁光标的作用{while(1){//如果键盘没有进行输入这循环闪烁inputbox();if(kbhit()){//当键盘有反应时kbhit()会返回一个非零值break;//退出闪烁}Sleep(300);//延时setlinestyle(PS_SOLID,NULL,2);//设置线的样式为PS_SOLID,宽度为2line(161,194,162,210);//光标的描绘Sleep(300);//延时}}voidcursor2(void)//第二个光标{do{Sleep(30);//延时setlinestyle(PS_SOLID,NULL,2);//设置字体样式line(162,234,163,251);//光标的描绘Sleep(30);//延时}while(!kbhit());//当键盘有反应时kbhit()会返回一个非零值}voidinputbox(void)//描绘两个输入框{inti;for(i=0;i2;i++){bar(150,188+41*i,300,216+41*i);//账户栏和密码输入栏setcolor(RGB(0,0,0));rectangle(150,188+41*i,300,216+41*i);}}intMouseEvent(IMAGEImg)//鼠标判断{MOUSEMSGm;//声明一个鼠标变量intvalue=0;//返回值while(!value){m=GetMouseMsg();//获取鼠标的信息switch(m.uMsg){caseWM_MOUSEMOVE://当鼠标又移动时的信息处理{if((m.x=100&&m.x=173)&&(m.y=280&&m.y=315)){//对鼠标的X,Y坐标进行判断SetWorkingImage(&Img);//设置当前的绘图设备setlinestyle(PS_SOLID,NULL,2);setlinecolor(RGB(252,15,0));//线的颜色,红色settextcolor(RGB(252,15,0));//字体颜色,红色setfont(25,0,宋体);//设置字体的大小和样式setbkmode(TRANSPARENT);fillrectangle(100,280,173,315);//登录框outtextxy(111,285,_T(登录));SetWorkingImage();//恢复当前的绘图设备putimage(0,0,&Img);//显示当前的图画}elseif((m.x=223&&m.x=296)&&(m.y=280&&m.y=315)){//对鼠标的X,Y坐标进行判断SetWorkingImage(&Img);//设置当前的绘图设备setlinestyle(PS_SOLID,NULL,2);setlinecolor(RGB(252,15,0));//线的颜色,红色settextcolor(RGB(252,15,0));//字体颜色,红色setfont(25,0,宋体);//设置字体的大小和样式setbkmode(TRANSPARENT);fillrectangle(223,280,296,315);//取消框outtextxy(234,285,_T(取消));SetWorkingImage();//恢复当前的绘图设备putimage(0,0,&Img);//显示当前的图画}else{SetWorkingImage(&Img);//设置当前的绘图设备setlinecolor(RGB(134,0,255));//设置线的颜色settextcolor(RGB(134,0,255));//字体颜色,黑色fillrectangle(100,280,173,315);//登录框fillrectangle(223,280,296,315);//取消框setbkcolor(RGB(255,255,255));///字体背景色,白色setfont(25,0,宋体);//设置字体的大小和样式outtextxy(111,285,_T(登录));outtextxy(234,285,_T(取消));SetWorkingImage();//恢复当前绘图设备为默认设备putimage(0,0,&Img);}break;}caseWM_LBUTTONDBLCLK://鼠标双击左键时的信息{if((m.x=100&&m.x=173)&&(m.y=280&&m.y=315)){//登陆按键范围value=1;}elseif((m.x=223&&m.x=296)&&(m.y=280&&m.y=315)){//取消按键范围value=2;}brea

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功