📄 logindlg.cpp
字号:
// LoginDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MinistryPerson.h"
#include "LoginDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLoginDlg dialog
CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLoginDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLoginDlg)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDI_LOGINTITLE);
}
void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLoginDlg)
DDX_Control(pDX, IDCANCEL, m_CBmpBtn_Cancel);
DDX_Control(pDX, IDOK, m_CBmpBtn_OK);
DDX_Control(pDX, IDC_EDIT_PASSWORD, m_CEditPassword);
DDX_Control(pDX, IDC_EDIT_LOGINID, m_CEditLogin);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
//{{AFX_MSG_MAP(CLoginDlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDOK, OnOK)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLoginDlg message handlers
/*********************************************************************
函数说明: 初始化的一些操作
函数参数:
*********************************************************************/
BOOL CLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
ModifyStyle(0, 0, SWP_NOSIZE);
// TODO: Add extra initialization here
//????????????????????????????????????//
// m_Title.LoadBitmap() // 加载标题栏位图
// m_Cross.LoadBitmap(IDB_CROSS_NORMAL); // 加载系统按钮位图
//????????????????????????????????????//
// 加载系统登陆按钮位图
m_CBmpBtn_OK.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_LAND_NORMAL)));
m_CBmpBtn_OK.SetHBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_LAND_OVER)),
LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_LAND_NORMAL)));
// 加载取消按钮位图
m_CBmpBtn_Cancel.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_CANCEL_NORMAL)));
m_CBmpBtn_Cancel.SetHBitmap(LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_CANCEL_OVER)),
LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BTN_CANCEL_NORMAL)));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/*********************************************************************
函数说明: 从数据库连接检查登陆安全
函数参数:
*********************************************************************/
BOOL CLoginDlg::CheckLogin(CString &Name, CString &Password)
{
CADOOperation load;
CString SQL;
DWORD dwCount = 0;
SQL.Format("select count(*) from Employee_Login_Table \
where Login_ID = '%s' and Login_Password = '%s'", Name, Password);
load.OpenRecordset(SQL);
if (load.IsLastRow()) // 如果当前没有记录则用户名或密码无效
{
load.CloseRecorset();
return FALSE;
}
load.GetItemContentDw(0, CADOOperation::ADO_TYPE_INT, &dwCount); // 得到结果值
load.CloseRecorset();
if (dwCount <= 0)
{
return FALSE;
}
return TRUE;
}
/*********************************************************************
函数说明: 绘制标题栏(登陆界面此时没添加标题栏资源,此函数未用)
函数参数:
*********************************************************************/
BOOL CLoginDlg::DrawTitleBar(CWindowDC &dc)
{
CDC memDC;
BITMAP bm;
memDC.CreateCompatibleDC((CDC*)&dc);
memDC.SelectObject(&m_Title); // 把标题栏位图选入DC
m_Title.GetObject(sizeof(bm), &bm); // 得到位图信息
// 绘制标题栏
dc.StretchBlt(3, 1, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
memDC.DeleteDC();
return TRUE;
}
/*********************************************************************
函数说明: 绘制系统按钮(比如:关闭按钮)
函数参数:
*********************************************************************/
BOOL CLoginDlg::DrawSystemButton(CWindowDC &dc, CBitmap &bitmap)
{
CDC memDC;
BITMAP bm;
memDC.CreateCompatibleDC((CDC*)&dc);
memDC.SelectObject(&m_Cross);
m_Cross.GetObject(sizeof(bm), &bm);
dc.StretchBlt(584, 2, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
memDC.DeleteDC();
return TRUE;
}
/*********************************************************************
函数说明: 窗口重绘时调用
函数参数:
*********************************************************************/
void CLoginDlg::OnPaint()
{
CWindowDC *dc = (CWindowDC*)GetWindowDC();
// DrawTitleBar(*dc);
// DrawSystemButton(*dc, m_Cross);
CDialog::OnPaint();
// Do not call CDialog::OnPaint() for painting messages
}
/*********************************************************************
函数说明: 登陆按钮的安全检测
函数参数:
*********************************************************************/
void CLoginDlg::OnOK()
{
// TODO: Add your control notification handler code here
CString strName;
CString strPassword;
// 得到用户名和密码
GetDlgItemText(IDC_EDIT_LOGINID, strName);
GetDlgItemText(IDC_EDIT_PASSWORD, strPassword);
// 检查用户名和密码的有效性
if (!CheckLogin(strName, strPassword))
{
MessageBox("错误的用户名或密码!", "提示", MB_OK | MB_ICONWARNING);
m_CEditLogin.SetWindowText(_T(""));
m_CEditPassword.SetWindowText(_T(""));
((CEdit*)GetDlgItem(IDC_EDIT_LOGINID))->SetFocus(); // 把焦点移动到第一个编辑框上
((CEdit*)GetDlgItem(IDC_EDIT_LOGINID))->SetSel(0, -1); // 设置框内容选定状态
Invalidate();
return;
}
m_UserName = strName; // 保存登录后的用户名
CDialog::OnOK();
}
/*********************************************************************
函数说明:
函数参数:
*********************************************************************/
CString CLoginDlg::GetUserName()
{
return m_UserName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -