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

📄 loginform.cpp

📁 windows ce开发技巧与实例光盘代码
💻 CPP
字号:
// LoginForm.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "LoginForm.h"
#include "User.h"
#include "MainFrm.h"
#include "SQLCEDemo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLoginForm

IMPLEMENT_DYNCREATE(CLoginForm, CFormView)

CLoginForm::CLoginForm()
	: CFormView(CLoginForm::IDD)
{
	//{{AFX_DATA_INIT(CLoginForm)
	m_strUserName = _T("");
	m_strPassword = _T("");
	//}}AFX_DATA_INIT
}

CLoginForm::~CLoginForm()
{
}

void CLoginForm::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLoginForm)
	DDX_Text(pDX, IDC_EDIT_USERNAME, m_strUserName);
	DDX_Text(pDX, IDC_EDIT_PASSWORD, m_strPassword);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLoginForm, CFormView)
	//{{AFX_MSG_MAP(CLoginForm)
	ON_BN_CLICKED(IDC_BUTTON_LOGIN, OnButtonLogin)
	ON_BN_CLICKED(IDC_BUTTON_QUIT, OnButtonQuit)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLoginForm diagnostics

#ifdef _DEBUG
void CLoginForm::AssertValid() const
{
	CFormView::AssertValid();
}

void CLoginForm::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLoginForm message handlers

void CLoginForm::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_USERNAME);
	
	CString strSection       = L"User";
	CString strStringItem    = L"UserName";
	
	CWinApp* pTheApp = AfxGetApp();	
	CString strValue;
	strValue = pTheApp->GetProfileString(strSection, strStringItem);	
	
	if (strValue.GetLength() > 1)
	{
		pEdit->SetWindowText(strValue);
	}
	
}

void CLoginForm::OnButtonLogin() 
{
	// TODO: Add your control notification handler code here
	CSQLCEDemoApp *pTheApp = (CSQLCEDemoApp*)AfxGetApp();
	
	UpdateData(TRUE);
	
	if (m_strUserName.GetLength() < 1)
	{
		AfxMessageBox(L"请输入用户名", MB_OK | MB_ICONEXCLAMATION);
		return;
	}
	
	CUser::m_pUser_Name = m_strUserName;
	
	CWaitCursor waitcursor;
	
	AdoNS::_ConnectionPtr pConnection= pTheApp->m_pADOConn->OpenDB(_T("\\palmheart.sdf"));
	if ((pConnection != NULL) && 
		(pTheApp->m_pADORs->PutConnection(pConnection)))
	{
		CWaitCursor waitcursor;
		//开始密码校验
		int nReturn = CUser::VerifyUser(m_strUserName, m_strPassword, pTheApp->m_pADORs);

		switch (nReturn) {
		case -4:
			AfxMessageBox(L"密码错误", MB_OK | MB_ICONEXCLAMATION);
			//断开连接
			if (pTheApp->m_pADORs->IsOpened()) 
				pTheApp->m_pADORs->Close();		

			if (pTheApp->m_pADOConn->IsConnected())
				pTheApp->m_pADOConn->Close();	
			if (pConnection->State == AdoNS::adStateOpen)
				pConnection->Close();
			return;
			break;
		case -3:			
			//断开连接
			if (pTheApp->m_pADORs->IsOpened()) 
				pTheApp->m_pADORs->Close();		

			if (pTheApp->m_pADOConn->IsConnected())
				pTheApp->m_pADOConn->Close();	
			if (pConnection->State == AdoNS::adStateOpen)
				pConnection->Close();			
			//到同步界面
			if (AfxMessageBox(L"用户列表错误,建议重新下载数据,或者立刻上传所有数据,确定同步数据吗?", MB_YESNO | MB_ICONQUESTION) == IDYES)
			{
				::PostMessage(AfxGetMainWnd()->m_hWnd,WM_USER_COMMAND, CMainFrame.RDAForm, 0);				
			}			
			return;
			break;
		case -2:
			AfxMessageBox(L"一般性错误", MB_OK | MB_ICONEXCLAMATION);
			//断开连接
			if (pTheApp->m_pADORs->IsOpened()) 
				pTheApp->m_pADORs->Close();		

			if (pTheApp->m_pADOConn->IsConnected())
				pTheApp->m_pADOConn->Close();	
			if (pConnection->State == AdoNS::adStateOpen)
				pConnection->Close();			
			return;
			break;
		case -1:
			AfxMessageBox(L"用户名错误", MB_OK | MB_ICONEXCLAMATION);
			//断开连接
			if (pTheApp->m_pADORs->IsOpened()) 
				pTheApp->m_pADORs->Close();		

			if (pTheApp->m_pADOConn->IsConnected())
				pTheApp->m_pADOConn->Close();	
			if (pConnection->State == AdoNS::adStateOpen)
				pConnection->Close();			
			return;
			break;
		case 0:
			AfxMessageBox(L"未知错误", MB_OK | MB_ICONEXCLAMATION);
			//断开连接
			if (pTheApp->m_pADORs->IsOpened()) 
				pTheApp->m_pADORs->Close();		

			if (pTheApp->m_pADOConn->IsConnected())
				pTheApp->m_pADOConn->Close();	
			if (pConnection->State == AdoNS::adStateOpen)
				pConnection->Close();			
			return;
			break;
		case 1:
			CUser* pUser = new CUser(m_strUserName, pTheApp->m_pADORs);
			CUser::m_pUser_ID = pUser->getUser_ID();		//记录userid
				
			::PostMessage(AfxGetMainWnd()->m_hWnd,WM_USER_COMMAND, CMainFrame.MainForm, 0);	
			delete pUser;
			
			return;
			break;
		}
		waitcursor.Restore();
	}
	else
	{
		if (AfxMessageBox(L"数据库不存在,将要同步数据,确定同步吗?", MB_YESNO | MB_ICONQUESTION) == IDYES)
		{
			::PostMessage(AfxGetMainWnd()->m_hWnd,WM_USER_COMMAND, CMainFrame.RDAForm, 0);							
		}		
	}
	waitcursor.Restore();		
}

void CLoginForm::OnButtonQuit() 
{
	::PostQuitMessage(0);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -