《C语言实现图形界面登陆窗口(共7页).docx》由会员分享,可在线阅读,更多相关《C语言实现图形界面登陆窗口(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上纯C语言实现图形界面登陆窗口一下是界面图:编程工具是:VC6.0请根据个人需要对源代码进行修改使用,图片放在工程文件夹中。新建时应该将文件后缀设置为.cpp以下是程序灯源代码:#include#include#include#include#include#include#define LEN_A 20/账户长度#define LEN_P 10/密码长度typedef struct Accountchar name20;long int password;InAccount;typedef struct inputAPwordInAccount account;int
2、 flag;InputAPword;void inputbox(void);void cursor(void);void cursor2(void);void name(void);int MouseEvent(IMAGE);InputAPword menu2(void)initgraph(640,480);/初始化图形界面IMAGE Img1;/声明一个IMAGE变量IMAGE Img2(640,480);/声明一个IMAGE变量char input1LEN_A;/用于接收输入的字符串char input2LEN_P;/用于接收输入的字符串int j;InputAPword account;
3、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)
4、;/设置字体的颜色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);/显示图片doname();/显示文字信息setbkmode(OPAQUE);/设置字体背景为默认setbkcolor(RGB(255,255,255);cursor();/显示输入框以及闪烁的光标for(j
5、=0;LEN_A;j+)/限制输入,最多允许输入LNE位数据input1j=getch();/读取键盘输入的字符并存入数组outtextxy(161+8*j,193,input1j);/将字符显示在图片上if(input1j=8)/按删除键时的操作input1j-1=0;/字符数组内容删除一位outtextxy(161+8*j,193, );/将字符遮掩outtextxy(161+8*(j-1),193, );/将字符遮掩j -=2;/数组坐标后退两个if(j=-1)/当回退到头时的处理input10=0;/对数组进行标记break;/退出本次输入continue;else if(input1
6、j=13)/按回车键时的处理input1j=0;/将数组的最后一个数据标记为0if(j=0)/无任何输入,且按下回车时的处理outtextxy(161+8*j,193, );/将回车显示的字符遮掩outtextxy(161+8*(j-1),193, );/将回车显示的字符遮掩input10=0;/对数组进行进行标记break;/退出本次输入setbkmode(OPAQUE);/设置字体背景为默认setbkcolor(RGB(255,255,255);cursor2();/光标聚到下一个输入框的开始位置for(j=0;jLEN_P;j+)/密码输入input2j=getch();/获取从键盘输入
7、的字符outtextxy(161+8*j,234,*);/以*号显示,起到遮掩密码的作用if(input2j=8)/按下删除键时的处理input2j-1=0;/对数组进行处理outtextxy(161+8*j,234, );/对需要进行删除处理的字符进行遮掩outtextxy(161+8*(j-1),234,_T( );/对需要删除进行处理的字符进行遮掩j-=2;/对数组进行处理if(j=-1)/当删除到头时进行的操作input20=0;/对数组进行标记break;/退出本次输入continue;else if(input2j=13)/按下回车时的操作outtextxy(161+8*j,234
8、, );input2j=0;/将数组的最后一位标记为0if(j=0)/无任何操作,直接进行回车输入时的操作outtextxy(161+8*j,234, );/对输入回车时产生的字符进行遮掩outtextxy(161+8*(j-1),234,_T( );/对输入回车时产生的字符进行遮掩input20=0;/对数组进行标记break;/结束本次输入getimage(&Img2,0,0,640,480);/保存当前显示的界面while(input10=0)&(input20=0);/当第一个或第二个框有一个未输入时则继续循环输入switch(MouseEvent(Img2)case 1:accoun
9、t.flag=1;strcpy(account.account.name,input1);/将输入的字符存入结构体account.account.password=atol(input2);/将输入的密码存入结构体break;case 2:account.flag=2;return account;closegraph();void name(void)/显示文字信息函数setfont(25,0,宋体);/设置字体的大小和样式setbkmode(TRANSPARENT);settextcolor(RGB(0,0,0);outtextxy(90,190,_T(账号);/显示汉字outtextxy
10、(90,233,_T(密码);outtextxy(111,285,_T(登录);outtextxy(234,285,_T(取消);setfont(18,0,宋体);/setbkmode(OPAQUE);/设置字体背景为默认void cursor(void)/闪烁光标的作用while(1)/如果键盘没有进行输入这循环闪烁inputbox();if(kbhit()/当键盘有反应时kbhit()会返回一个非零值break;/退出闪烁Sleep(300);/延时setlinestyle(PS_SOLID,NULL,2);/设置线的样式为PS_SOLID,宽度为2line(161,194,162,210
11、);/光标的描绘Sleep(300);/延时void cursor2(void)/第二个光标doSleep(30);/延时setlinestyle(PS_SOLID,NULL,2);/设置字体样式line(162,234,163,251);/光标的描绘Sleep(30);/延时while(!kbhit();/当键盘有反应时kbhit()会返回一个非零值void inputbox(void)/描绘两个输入框int i;for(i=0;i=100&m.x=280&m.y=223&m.x=280&m.y=100&m.x=280&m.y=223&m.x=280&m.y=315)/取消按键范围value=2;break;return value;/返回值void main()long int a;InputAPword account; account = menu2();a = account.account.password;system(cls);printf(这是测试的密码:%ld,a);printf(%s,account.account.name);getchar();getchar();专心-专注-专业
限制150内