📄 logondlg.cpp
字号:
// LogonDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PersonelManage.h"
#include "LogonDlg.h"
#include "ModifyPwdDlg.h"
#include "ado.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CPersonelManageApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CLogonDlg dialog
CLogonDlg::CLogonDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLogonDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLogonDlg)
m_strLoginName = _T("");
m_strPassword = _T("");
//}}AFX_DATA_INIT
}
void CLogonDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLogonDlg)
DDX_Text(pDX, IDC_EDIT_LOGINNAME, m_strLoginName);
DDX_Text(pDX, IDC_EDIT_PASSWORD, m_strPassword);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLogonDlg, CDialog)
//{{AFX_MSG_MAP(CLogonDlg)
ON_BN_CLICKED(IDC_BUTTON_LOGIN, OnButtonLogin)
ON_BN_CLICKED(IDC_BUTTON_MODPASS, OnButtonModpass)
ON_EN_CHANGE(IDC_EDIT_LOGINNAME, OnChangeEditLoginname)
ON_EN_CHANGE(IDC_EDIT_PASSWORD, OnChangeEditPassword)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLogonDlg message handlers
void CLogonDlg::OnButtonLogin()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strPwd;
CString query;
CString strName;
long empID;
int flag = 0;
//初始化数据库连接
CADODatabase *pDb = new CADODatabase();
query.Format("SELECT [EmployeeID],[Name],[LoginName],cast([Password] as varchar(20)) AS Password FROM [tblEmployee] WHERE LoginName = '%s'", m_strLoginName);
try
{
if(pDb->Open())
{
CADOParameter pParamInSysEvent(CADORecordset::typeChar, sizeof(char) * 50, CADOParameter::paramInput);
CADOCommand pSysEventCmd(pDb, "spwinAddEvent");
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(query, CADORecordset::openQuery))
{
if(pRs->GetRecordCount() == 0)
{
pParamInSysEvent.SetValue("不存在的用户:" + m_strLoginName + "试图登录");
pSysEventCmd.AddParameter(&pParamInSysEvent);
pSysEventCmd.Execute();
flag = 0;
AfxMessageBox("用户:" + m_strLoginName + " 不存在,请重新输入!");
}
else
{
pRs->GetFieldValue("EmployeeID", empID);
pRs->GetFieldValue("Name", strName);
pRs->GetFieldValue("Password", strPwd);
strPwd.TrimRight();
if(m_strPassword != strPwd)
{
pParamInSysEvent.SetValue("用户:" + m_strLoginName + "密码输入错误");
pSysEventCmd.AddParameter(&pParamInSysEvent);
pSysEventCmd.Execute();
flag = 0;
AfxMessageBox("密码错误请重新输入!");
}
else
{
pParamInSysEvent.SetValue("用户:" + m_strLoginName + "成功登录");
pSysEventCmd.AddParameter(&pParamInSysEvent);
pSysEventCmd.Execute();
theApp.CurrentUser.id = empID;
theApp.CurrentUser.loginName = m_strLoginName;
theApp.CurrentUser.name = strName;
theApp.CurrentUser.pwd = m_strPassword;
theApp.CurrentUser.isLogin = true;
flag = 1;
}
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
if(1 == flag)
CDialog::OnOK();
}
void CLogonDlg::OnButtonModpass()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString strPwd;
long empID;
CString query;
int flag = 0;
//初始化数据库连接
CADODatabase *pDb = new CADODatabase();
query.Format("SELECT [EmployeeID],cast([Password] as varchar(20)) AS Password FROM [tblEmployee] WHERE LoginName = '%s'", m_strLoginName);
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(query, CADORecordset::openQuery))
{
if(pRs->GetRecordCount() == 0)
{
flag = 0;
AfxMessageBox("用户:" + m_strLoginName + " 不存在,请重新输入!");
}
else
{
pRs->GetFieldValue("EmployeeID", empID);
pRs->GetFieldValue("Password", strPwd);
strPwd.TrimRight();
flag = 1;
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
if(1 == flag)
{
CModifyPwdDlg modPwd;
modPwd.m_nDBEmpID = empID;
modPwd.m_strDBPwd = strPwd;
modPwd.DoModal();
}
}
void CLogonDlg::OnChangeEditLoginname()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strLoginName.GetLength() > 0 && m_strPassword.GetLength() > 0)
{
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(TRUE);
}
else if(m_strLoginName.GetLength() > 0)
{
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(FALSE);
}
}
void CLogonDlg::OnChangeEditPassword()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_strLoginName.GetLength() > 0 && m_strPassword.GetLength() > 0)
{
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(TRUE);
}
else if(m_strLoginName.GetLength() > 0)
{
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(FALSE);
}
}
BOOL CLogonDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
GetDlgItem(IDC_BUTTON_MODPASS)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_LOGIN)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -