⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logindlg.cpp

📁 VC++和ACCESS使用ADO连接
💻 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 + -