C语言实现图形界面登陆窗口.docx
- 文档编号:15943271
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:11
- 大小:37.13KB
C语言实现图形界面登陆窗口.docx
《C语言实现图形界面登陆窗口.docx》由会员分享,可在线阅读,更多相关《C语言实现图形界面登陆窗口.docx(11页珍藏版)》请在冰点文库上搜索。
C语言实现图形界面登陆窗口
纯C语言实现图形界面登陆窗口
编程工具是:
请根据个人需要对源代码进行修改使用,图片放在工程文件夹中.新
建时应该将文件后缀设置为.cpp
以下是程序灯源代码:
#include<>
#include<>
#include<>
#include<>
#include<>
#include<>
#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;〃声明一个IMAGED量
IMAGEImg2(640,480);//声明一个IMAG豉量
charinput1[LEN_A];//用于接收输入的字符串charinput2[LEN_P];//用于接收输入的字符串intj;
InputAPwordaccount;
10adimage(&Img1,_T(""));〃加载图片
SetWorkingImage(&Img1);//设置当前绘图设备为Img1
set1inesty1e(PS_SOLID,NULL,2);//设置线的样式
setfont(64,0,"华文隶书");//设置字体的样式和大小
settextc010r(RGB(134,0,255));〃设置字体的颜色
setlinec010r(RGB(16,16,16));〃设置线的颜色
setbkmode(TRANSPARENT);般置字体的背景为透明
0uttextxy(50,50,_T("A用户登录"));//显示汉字
settextc010r(RGB(0,0,0));//设置字体的颜色
rectang1e(50,150,350,340);//画矩形框
rectang1e(254,515,302,585);//画一个矩形框
fi11rectang1e(100,280,173,315);//登录框
fi11rectang1e(223,280,296,315);//取消框
SetW0rkingImage();//恢复当前绘图设备为默认设备
putimage(0,0,&Img1);//显示图片
do{
name();//显示文字信息
setbkmode(OPAQUE);//设置字体背景为默认
setbkc010r(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);//设置字体背景为默认
setbkc010r(RGB(255,255,255));
cursor2();//光标聚到下一个输入框的开始位置
for(j=0;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: { =1; strcpy将输入的字符存入结构体 将输入的密码存入结构体 break; } case2: { =2; } } returnaccount; closegraph(); ) voidname(void)//显示文字信息函数 ( setfont(25,0,"宋体)〃设置字体的大小和样式 setbkmode(TRANSPARENT); settextc010r(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宽度为2 line(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;i<2;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{ case{ if(>=100&&<=173)&&>=280&&<=315)){//对鼠标的 X,Y坐标进行判断 SetWorkingImage(&Img);//设置当前的绘图设 备 setlinestyle(PS_SOLID,NULL,2); 字体颜色,红 setlinec010r(RGB(252,15,0));//线的颜色,红 settextc010r(RGB(252,15,0));// setfont〔25,0,"宋体"〕;//设置字体的大小和样 setbkmode(TRANSPARENT); fillrectangle(100,280,173,315);//登录框 outtextxy(111,285,_T("登录")); SetWorkingImage();//恢复当前的绘图设备 putimage(0,0,&Img);//显示当前的图画 }elseif(>=223&&<=296)&&>=280&&<=315)){//对 鼠标的X,Y坐标进行判断 SetWorkingImage(&Img);//设置当前的绘图设 备 setlinestyle(PS_SOLID,NULL,2); setlinec010r(RGB(252,15,0));//线的颜色,红 色 settextc010r(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);//设置当前的绘图设 备 setlinec010r(RGB(134,0,255));//设置线的颜 色 settextc010r(RGB(134,0,255));//字体颜色, 黑色 fillrectangle(100,280,173,315);//登录框 fillrectangle(223,280,296,315);//取消框 色,白色 setfont(25,0,"宋体");//设置字体的大小和样 式 outtextxy(111,285,_T("登录")); outtextxy(234,285,_T("取消")); SetWorkingImage();//恢复当前绘图设备为默 认设备 putimage(0,0,&Img); } break; } case{ if(>=100&&<=173)&&>=280&&<=315)){//登陆按键 范围 value=1; }elseif(>=223&&<=296)&&>=280&&<=315)){//取 消按键范围 value=2; ) break; ) ) ) returnvalue;//返回值 ) voidmain() ( longinta; InputAPwordaccount; account=menu2(); a=system("cls"); printf〔"这是测试的密码: %ld",a〕; printf("%s",getchar(); getchar(); )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实现 图形界面 登陆 窗口