📄 login.c
字号:
#include <windows.h>#include <windowsx.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <time.h>#include <io.h>#include "global.h"#include "resource.h"#include "appmain.h"#include "hq.h"#include "jy_cl.h"#include "msg.h"extern void UDP_Send_Exit(void);LRESULT CALLBACK HqUserDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ char tmp[10]; HWND hctl; int idFocus,xWindowExt,yWindowExt; PAINTSTRUCT ps; static int input_try_times =0, total_times_1 =0,login_time=30; RECT rc; HDC hDC; static HBRUSH hBrush; HFONT hFont; LOGFONT lf; DWORD dw; switch(message) { case WM_INITDIALOG: ghDlgChkUsr =ghDlgJy =hDlg; input_try_times =total_times_1 =0; hBrush=CreateSolidBrush(RGB(0,255,255)); SendDlgItemMessage(hDlg, IDC_USER, EM_LIMITTEXT, HQ_USERID_SIZE, 0L); SendDlgItemMessage(hDlg, IDC_PASSWORD, EM_LIMITTEXT, HQ_USERPWD_SIZE, 0L); CenterWindow(hDlg); SetTimer(hDlg, 2, 1000, NULL); return TRUE; case WM_PAINT: BeginPaint(hDlg, &ps); DrawFrame(ps.hdc, hDlg); GetClientRect(hDlg, &rc); xWindowExt =rc. right; yWindowExt =rc.bottom; SetBkMode(ps.hdc,TRANSPARENT); memset(&lf,0,sizeof(lf)); lf.lfWeight =FW_NORMAL; lf.lfQuality =PROOF_QUALITY; lf.lfOutPrecision = OUT_DEVICE_PRECIS; strcpy(lf.lfFaceName, "Termianl"); lf.lfHeight=35; hFont =CreateFontIndirect(&lf); SelectObject(ps.hdc,hFont); SetTextColor(ps.hdc,RGB(0,0,0)); TextOut(ps.hdc,35,10,"逍 遥 游",8); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,34,10-1,"逍 遥 游",8); lf.lfHeight=16; hFont =CreateFontIndirect(&lf); SelectObject(ps.hdc,hFont); SetTextColor(ps.hdc,RGB(0,0,0)); TextOut(ps.hdc,150,24,"版本:V 2.20",12); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,150-1,24-1,"版本:V 2.20",12); SetTextColor(ps.hdc,RGB(0,0,0)); TextOut(ps.hdc,150,10,"作者:李应明",12); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,150-1,10-1,"作者:李应明",12); lf.lfHeight=16; hFont =CreateFontIndirect(&lf); SelectObject(ps.hdc,hFont); SetTextColor(ps.hdc,RGB(0,0,0)); TextOut(ps.hdc,35,(int)yWindowExt/4+15,"用户代码",8); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,34,(int)yWindowExt/4 -1+15,"用户代码",8); SetTextColor(ps.hdc,RGB(0,0,0)); TextOut(ps.hdc,35,(int)yWindowExt*2/4+15,"密 码",12); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,34,(int)yWindowExt*2/4-1+15,"密 码",12); SetTextColor(ps.hdc,RGB(0,0,0)); //TextOut(ps.hdc,35,(int)yWindowExt*3/4+15,"汕头长讯发展公司软件部",22); //SetTextColor(ps.hdc,RGB(255,255,255)); //TextOut(ps.hdc,34,(int)yWindowExt*3/4-1+15,"汕头长讯发展公司软件部",22); TextOut(ps.hdc,35,(int)yWindowExt*3/4+15,"按ESC键进入离线状态",17); SetTextColor(ps.hdc,RGB(255,255,255)); TextOut(ps.hdc,34,(int)yWindowExt*3/4-1+15,"按ESC键进入离线状态",17); DeleteObject(hFont); EndPaint(hDlg, &ps); break; case WM_CTLCOLOR: switch(HIWORD(lParam)) { case CTLCOLOR_EDIT: SetTextColor((HDC)wParam,RGB(0,0,0)); SetBkColor((HDC)wParam,RGB(0,255,255)); return (LRESULT)hBrush; case CTLCOLOR_MSGBOX: return (LRESULT)hBrush; } return (LRESULT)(HBRUSH)NULL; case WM_COMMAND: switch(wParam) { case IDOK: GetDlgItemText(hDlg, IDC_USER, UserID, sizeof(UserID)); if(UserID[0] ==0) { SetFocus(GetDlgItem(hDlg, IDC_USER)); MessageBeep(0); break; } GetDlgItemText(hDlg, IDC_PASSWORD, UserPwd, sizeof(UserPwd)); if(UserPwd[0] ==0) { SetFocus(GetDlgItem(hDlg, IDC_PASSWORD)); MessageBeep(0); break; } hctl =GetFocus(); idFocus =GetWindowWord(hctl, GWW_ID); if(idFocus ==IDC_USER) { SetFocus(GetDlgItem(hDlg, IDC_PASSWORD)); break; } if(idFocus ==IDC_PASSWORD || UserPwd[0]!=0 && UserID[0]!=0) { Msg("请求主机效验身份",MSG_VERT); HqCheckUser(UserID, UserPwd); EnableWindow(LOWORD(lParam), FALSE); } break; case IDCANCEL: KillTimer(hDlg, 1); KillTimer(hDlg, 2); UDP_Send_Exit(); gfOnLine=FALSE; DeleteObject(hBrush); EndDialog(hDlg, IDCANCEL); ghDlgJy =NULL; break; case 100: KillTimer(hDlg, 1); if(lParam !=LOGIN_SUCC) { if(input_try_times <3) { if(lParam==LOGIN_NO_THIS_ID) ErrMsg(hDlg, "无此用户号!"); else if(lParam==LOGIN_NO_PRIV) ErrMsg(hDlg, "用户代码与密码不符"); else if(lParam==LOGIN_NO_TIME) ErrMsg(hDlg, "您已没有主机进入时间"); else if(lParam==LOGIN_LOCKED) ErrMsg(hDlg, "您已被主机锁定"); else if(lParam==LOGIN_SYS_ERR) ErrMsg(hDlg, "主机系统错,不能登录"); else if(lParam==LOGIN_ANOTHER) ErrMsg(hDlg, "已有相同的用户号进入主机!"); SetDlgItemText(hDlg, IDC_USER, NULL); SetDlgItemText(hDlg, IDC_PASSWORD, NULL); hctl =GetDlgItem(hDlg, IDOK); EnableWindow(hctl, TRUE); hctl =GetDlgItem(hDlg, IDC_USER); SetFocus(hctl); input_try_times++; break; } else { ErrMsg(hDlg, "登录失败,系统进入离线状态"); gfOnLine=FALSE; UDP_Send_Exit(); } } EndDialog(hDlg, IDOK); ghDlgJy =NULL; } break; case WM_TIMER: if(wParam==2) { hDC =GetDC(hDlg); GetClientRect(hDlg, &rc); rc.right =rc.right -40; rc.bottom =rc. bottom -15; strcpy(tmp,"88"); dw=GetTextExtent(hDC,tmp,strlen(tmp)); rc.left =rc.right -LOWORD(dw)-12; rc.top = rc.bottom -HIWORD(dw); SelectObject(hDC,GetStockObject(WHITE_PEN)); MoveTo(hDC,rc.left+1,rc.top-1); LineTo(hDC,rc.right+1,rc.top-1); MoveTo(hDC,rc.left-1,rc.top+1); LineTo(hDC,rc.left-1,rc.bottom+1); SelectObject(hDC,GetStockObject(BLACK_PEN)); MoveTo(hDC,rc.right+1,rc.top+1); LineTo(hDC,rc.right+1,rc.bottom+1); MoveTo(hDC,rc.left+1,rc.bottom+1); LineTo(hDC,rc.right+1,rc.bottom+1); wsprintf(tmp,"%d",login_time); if(login_time<10) { tmp[1]=tmp[0]; tmp[0]='0'; } SetBkColor(hDC,RGB(255,0,255)); SetTextColor(hDC,RGB(255,255,0)); dw=GetTextExtent(hDC,tmp,strlen(tmp)); ExtTextOut(hDC,(int)(rc.right-rc.left-LOWORD(dw))/2+rc.left, rc.top, ETO_CLIPPED|ETO_OPAQUE, &rc,tmp , 2, NULL); login_time--; ReleaseDC(hDlg, hDC); if(login_time==0) PostMessage(hDlg,WM_COMMAND,IDCANCEL,NULL); } break; } return FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -