diff --git a/aike/LogInDlg.cpp b/aike/LogInDlg.cpp index 47f5339..457b616 100644 --- a/aike/LogInDlg.cpp +++ b/aike/LogInDlg.cpp @@ -5,6 +5,7 @@ #include "aike.h" #include "afxdialogex.h" #include "LogInDlg.h" +#include "aikeDlg.h" // LogInDlg 对话框 @@ -14,52 +15,113 @@ IMPLEMENT_DYNAMIC(LogInDlg, MyDialog) LogInDlg::LogInDlg(CWnd* pParent /*=nullptr*/) : MyDialog(IDD_LOGINDLG, pParent) { - + m_Parent = pParent; } LogInDlg::~LogInDlg() { } -//void LogInDlg::DoDataExchange(CDataExchange* pDX) -//{ -// MyDialog::DoDataExchange(pDX); -//} - BEGIN_MESSAGE_MAP(LogInDlg, MyDialog) ON_WM_PAINT() + ON_NOTIFY(BCN_HOTITEMCHANGE, IDC_CHECK1, &LogInDlg::OnBnHotItemChangeCheck1) + ON_NOTIFY(NM_THEMECHANGED, IDC_CHECK1, &LogInDlg::OnNMThemeChangedCheck1) + ON_BN_CLICKED(IDC_CHECK1, &LogInDlg::OnBnClickedCheck1) END_MESSAGE_MAP() -// LogInDlg 消息处理程序 - - -//BOOL LogInDlg::PreTranslateMessage(MSG* pMsg) -//{ -// // TODO: 在此添加专用代码和/或调用基类 -// myDlg->PTMessage(pMsg); -// return __super::PreTranslateMessage(pMsg); -//} -// -// -//void LogInDlg::OnPaint() -//{ -// myDlg->PaintDlg(); -// MyDialog::OnPaint(); -//} - BOOL LogInDlg::OnInitDialog() { __super::OnInitDialog(); - //CImage img; - //img.Load(_T("../aike/res/background.jpg")); - //myDlg->SetBackground(img); - //myDlg->PaintDlg(); + CImage img; + img.Load(_T("../aike/res/background.jpg")); + //SetBackground(img); + PaintDlg(); // TODO: 在此添加额外的初始化 //PaintDlg(); FixedSize(); + CRect rt = {0,0,90,30}; + /*480,325*/ + rt.MoveToXY(120, 240); + AddButton(1, rt); + SetLClick(1, [this](int i) {LoginClick(i); }); + rt.MoveToXY(270, 240); + AddButton(2, rt); + SetLClick(2, [this](int i) {CloseClick(i); }); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } + +VOID LogInDlg::LoginClick(int id) +{ + CString Name, Pass, tmp; + GetDlgItemText(IDC_EDIT1, Name); + GetDlgItemText(IDC_EDIT2, Pass); + BOOL sys = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck(); + if (!sys) + { + if (Name == _T("")) + { + MessageBox(_T("请输入要登陆的账号"), _T("温馨提示")); + return; + } + } + CaikeDlg* dlg = (CaikeDlg*)m_Parent; + switch (dlg->CheckUser(Name, Pass, sys)) + { + case 0: + MessageBox(_T("账号不存在"), _T("温馨提示")); + break; + case 1: + if(sys) + { + dlg->LogName = _T("系统管理员"); + } + else + { + dlg->LogName = Name; + } + MyDialog::OnOK(); + break; + case 2: + MessageBox(_T("密码输入错误"), _T("温馨提示")); + break; + default: + break; + } +} + +VOID LogInDlg::CloseClick(int id) +{ + MyDialog::OnCancel(); + //return VOID(); +} + + +void LogInDlg::OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult) +{ + // 此功能要求 Internet Explorer 6 或更高版本。 + // 符号 _WIN32_IE 必须是 >= 0x0600。 + LPNMBCHOTITEM pHotItem = reinterpret_cast(pNMHDR); + // TODO: 在此添加控件通知处理程序代码 + + *pResult = 0; +} + + +void LogInDlg::OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult) +{ + // 该功能要求使用 Windows XP 或更高版本。 + // 符号 _WIN32_WINNT 必须 >= 0x0501。 + // TODO: 在此添加控件通知处理程序代码 + *pResult = 0; +} + + +void LogInDlg::OnBnClickedCheck1() +{ + GetDlgItem(IDC_EDIT1)->EnableWindow(!((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck()); + // TODO: 在此添加控件通知处理程序代码 +} diff --git a/aike/LogInDlg.h b/aike/LogInDlg.h index 291f717..e795cba 100644 --- a/aike/LogInDlg.h +++ b/aike/LogInDlg.h @@ -18,11 +18,14 @@ public: #endif protected: -// virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 - DECLARE_MESSAGE_MAP() + public: - //virtual BOOL PreTranslateMessage(MSG* pMsg); - //afx_msg void OnPaint(); + CWnd* m_Parent = NULL; virtual BOOL OnInitDialog(); + VOID LoginClick(int id); + VOID CloseClick(int id); + afx_msg void OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult); + afx_msg void OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult); + afx_msg void OnBnClickedCheck1(); }; diff --git a/aike/aike.rc b/aike/aike.rc index 2ac75c6..1fd25ff 100644 Binary files a/aike/aike.rc and b/aike/aike.rc differ diff --git a/aike/aikeDlg.cpp b/aike/aikeDlg.cpp index c6761ba..02fa498 100644 --- a/aike/aikeDlg.cpp +++ b/aike/aikeDlg.cpp @@ -350,6 +350,21 @@ VOID CaikeDlg::MoveAllWin() tt.MoveToX(rt.Width() - 25); MoveButton(4, tt); + tt = { 0,0,180,180 }; + CPoint pt = { (rt.Width() - 600) / 2,100 }; + tt.MoveToXY(pt); + MoveButton(1000, tt); + tt.MoveToXY(pt.x + 200, pt.y); + MoveButton(2000, tt); + tt.MoveToXY(pt.x + 400, pt.y); + MoveButton(3000, tt); + tt.MoveToXY(pt.x, pt.y + 200); + MoveButton(4000, tt); + tt.MoveToXY(pt.x + 200, pt.y + 200); + MoveButton(5000, tt); + tt.MoveToXY(pt.x + 400, pt.y + 200); + MoveButton(6000, tt); + GetWindowRect(rt); rt.MoveToXY(-50, -50); rt.left = 150; @@ -385,11 +400,9 @@ BOOL CaikeDlg::CheckAuthority(CString Authority) if (LogName == _T("")) { //MessageBox(_T("请先登录账号"), _T("温馨提示")); - ttttt = FALSE; - LogInDlg dlg; - dlg.DoModal(); - ttttt = TRUE; - return FALSE; + LogInDlg dlg(this); + if (dlg.DoModal() != IDOK) + return FALSE; } if (LogName == _T("系统管理员")) { @@ -412,12 +425,66 @@ BOOL CaikeDlg::CheckAuthority(CString Authority) if (tmp.Find(_T("$") + Authority + _T("$")) == -1) { - MessageBox(_T("该账号权限不足"), _T("温馨提示")); + MessageBox(_T("该用户没有此权限"), _T("温馨提示")); return FALSE; } return TRUE; } +INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem) +{ + CString tmp; + _RecordsetPtr m_pRecor; + _variant_t var; + if (Pass != _T("")) + { + string str = (CStringA)Pass; + AES aes; + Pass = (CStringA)(aes.EncryptionAES(str, "aikehotel1998092")).c_str(); + } + if (isSystem) + { + AdoSql.QuerySql(_T("select * from config where vkey = 'passwords'"), m_pRecor); + int i = 0; + if (!m_pRecor->GetadoEOF()) + { + var = m_pRecor->GetCollect("value"); + if (var.vt != VT_NULL) + { + tmp = (LPCTSTR)_bstr_t(var); + } + } + if (tmp == Pass) + { + return 1; + } + return 2; + } + else + { + tmp.Format(_T("select Passwords from staff where JobID = '%s' and Computer = '1'"), Name); + AdoSql.QuerySql(tmp, m_pRecor); + if (!m_pRecor->GetadoEOF()) + { + var = m_pRecor->GetCollect("Passwords"); + if (var.vt != VT_NULL) + { + tmp = (LPCTSTR)_bstr_t(var); + } + if (tmp == Pass) + { + return 1; + } + return 2; + } + else + { + return 0; + } + } + return 0; +} + //设置按钮 VOID CaikeDlg::SetUpClick(int id) { diff --git a/aike/aikeDlg.h b/aike/aikeDlg.h index 66cf7ca..ff79bff 100644 --- a/aike/aikeDlg.h +++ b/aike/aikeDlg.h @@ -49,7 +49,7 @@ public: CString UserName; //数据库用户名 CString AdoPass; //数据库密码 CString LogName; //当前登录的账号 - BOOL ttttt = TRUE; + char AesKey[18] = "aikehotel19980921"; //AES密钥 RoomSetUpDlg m_RoomSetUpDlg; //房间设置界面 CommodityDlg m_CommodityDlg; //商品信息界面 PaymentDlg PaymentDlg; //付款方式界面 @@ -59,7 +59,6 @@ public: PrintSetUpDlg PrintSetUpDlg; //打印设置界面 CouponDlg m_CouponDlg; //票券设置界面 ParameterDlg m_ParameterDlg; //参数设置界面 - //MFC回调函数 // virtual BOOL PreTranslateMessage(MSG* pMsg); //截获窗口消息 afx_msg void OnSize(UINT nType, int cx, int cy); //窗口大小发生改变 @@ -80,6 +79,7 @@ public: VOID MoveAllWin(); //移动所有窗口和按钮 VOID HideAllBt(BOOL Hide = TRUE); //隐藏所有按钮 BOOL CheckAuthority(CString Authority); //检查权限 + INT CheckUser(CString Name, CString Pass, BOOL isSystem); //检查账号密码 VOID SetUpClick(int id); //设置按钮 VOID HomepageClick(int id); //回到主页 VOID RoomSetUpClick(int id); //点击房间设置 diff --git a/aike/resource.h b/aike/resource.h index df07ec1..5d5873b 100644 --- a/aike/resource.h +++ b/aike/resource.h @@ -14,11 +14,13 @@ #define IDD_COUPONDLG 139 #define IDD_DISCOUNTDLG 140 #define IDD_PARAMENTERDLG 141 -#define IDD_DIALOG1 142 #define IDD_LOGINDLG 142 #define IDC_LIST1 1000 #define IDC_BUTTON1 1001 #define IDC_BUTTON2 1002 +#define IDC_EDIT1 1002 +#define IDC_EDIT2 1003 +#define IDC_CHECK1 1004 #define ID_32771 32771 #define ID_32772 32772 #define ID_SHOW_MENU 32773 @@ -30,7 +32,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 144 #define _APS_NEXT_COMMAND_VALUE 32775 -#define _APS_NEXT_CONTROL_VALUE 1002 +#define _APS_NEXT_CONTROL_VALUE 1005 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif