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

📄 logindlg.cpp

📁 采用MFC+SQLSERVER 2000的图书管理系统,ODBC方式连接数据库。功能包括 书籍管理
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// LogInDlg.cpp : implementation file
//

#include "stdafx.h"
#include "library.h"
#include "LogInDlg.h"
#include "LogInSet.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)
	m_strUsername = _T("zhao");
	m_strPassword = _T("123");
	//}}AFX_DATA_INIT
   	 count=0;
   m_ButtonState= bsNone;
	m_FirstShow = FALSE;
	m_IsMax = TRUE;
	m_CapitonColor =RGB(0,0,255);
	m_Caption = "系统登录";
}


void CLogInDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLogInDlg)
	DDX_Control(pDX, IDC_STATIC2, m_label2);
	DDX_Control(pDX, IDC_STATIC1, m_label1);
	DDX_Text(pDX, IDC_USERNAME, m_strUsername);
	DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLogInDlg, CDialog)
	//{{AFX_MSG_MAP(CLogInDlg)
	ON_WM_CTLCOLOR()
	ON_WM_PAINT()
	ON_WM_SIZE()
	ON_WM_NCLBUTTONDBLCLK()
	ON_WM_SHOWWINDOW()
	ON_WM_NCLBUTTONDOWN()
	ON_WM_NCPAINT()
	ON_WM_NCMOUSEMOVE()
	ON_WM_WINDOWPOSCHANGED()
	ON_WM_CREATE()
	ON_WM_NCACTIVATE()
	ON_WM_ACTIVATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CLogInDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
		m_BorderHeight = GetSystemMetrics(SM_CYBORDER);
	m_BorderWidth = GetSystemMetrics(SM_CXBORDER);
	m_CaptionHeight = GetSystemMetrics(SM_CYCAPTION);	
 
	//获取按钮位图大小
	CBitmap bitmap;
	bitmap.LoadBitmap(IDB_BITMAP6);
	BITMAPINFO bInfo;
	bitmap.GetObject(sizeof(bInfo),&bInfo);
	m_ButtonWidth = bInfo.bmiHeader.biWidth;
	m_ButtonHeight = bInfo.bmiHeader.biHeight;
	bitmap.DeleteObject();

	CRect rect;
	GetClientRect(rect);

	m_IniRect.CopyRect(CRect(8,(m_CaptionHeight+3*m_BorderHeight -m_ButtonHeight)/2,m_ButtonWidth,m_ButtonHeight));
	m_MinRect.CopyRect(CRect(rect.Width()-45,(m_CaptionHeight+2*m_BorderHeight -m_ButtonHeight)/2,m_ButtonWidth,m_ButtonHeight));
	m_MaxRect.CopyRect(CRect(rect.Width()-32,(m_CaptionHeight+2*m_BorderHeight -m_ButtonHeight)/2,m_ButtonWidth,m_ButtonHeight));
	m_CloseRect.CopyRect(CRect(rect.Width()-19,(m_CaptionHeight+2*m_BorderHeight -m_ButtonHeight)/2,m_ButtonWidth,m_ButtonHeight));

	m_CaptionFont.CreateFont(14,10,0,0,600,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FF_ROMAN,"宋体");
	
	DrawForm();

	m_label1.ModifyStyleEx(0,WS_EX_TRANSPARENT);  
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void   CLogInDlg::DrawForm()
{

	//获取窗口设备上下文
	CDC* pWindowDC = GetWindowDC();
	CBitmap LeftLine;
	BITMAPINFO bitinfo;
	
	CDC memDC;
	memDC.CreateCompatibleDC(pWindowDC);

	CRect Clientrect;
	GetClientRect(Clientrect);

	int leftwidth=0; //左标题的宽度
	int rightwidth = 0; //右标题的宽度
	int leftlinewidth = 0; //左边线宽度
	LeftLine.LoadBitmap(IDB_BITMAP3); //加载右标题
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	rightwidth = bitinfo.bmiHeader.biWidth;
	LeftLine.DeleteObject();

	int x,y;
	//绘制左边线

	//获取位图大小
	LeftLine.LoadBitmap(IDB_BITMAP4);

	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	leftlinewidth = x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;

	memDC.SelectObject(&LeftLine);
	pWindowDC->StretchBlt(1-m_BorderWidth,m_CaptionHeight+1,x+1,Clientrect.Height()+2*m_BorderHeight+5,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	
	/*****************************绘制左标题**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP2);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	leftwidth = x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(-m_BorderWidth,0,x,m_CaptionHeight+4,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制左标题**************************************/

	/*****************************绘制中间标题**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP1);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(leftwidth-1,0,Clientrect.Width()-leftwidth-rightwidth ,m_CaptionHeight+4,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制中间标题***************************************/

	/*****************************绘制右标题**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP3);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;

	pWindowDC->StretchBlt(Clientrect.Width()-x-1,0,x+m_BorderWidth+9,m_CaptionHeight+4,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制右标题***************************************/

	/*****************************绘制右边框**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP4);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(Clientrect.Width()+m_BorderWidth+2,m_CaptionHeight+1,x+m_BorderWidth,Clientrect.Height()+2*m_BorderHeight+5,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制右边框***************************************/

	/*****************************绘制底边框**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP5);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(leftlinewidth-m_BorderWidth,Clientrect.Height()+m_CaptionHeight+2,Clientrect.Width()+m_BorderWidth,y+2,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制底边框***************************************/

	/*****************************绘制初始化按钮**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP6);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(m_IniRect.left,m_IniRect.top,m_IniRect.right,m_IniRect.bottom,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制初始化按钮***************************************/

	/*****************************绘制最小化按钮**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP6);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(m_MinRect.left,m_MinRect.top,m_MinRect.right,m_MinRect.bottom,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制最小化按钮***************************************/

	/*****************************绘制最大化按钮**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP6);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(m_MaxRect.left,m_MaxRect.top,m_MaxRect.right,m_MaxRect.bottom,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	/*****************************绘制最大化按钮***************************************/

	/*****************************绘制关闭按钮**************************************/
	LeftLine.LoadBitmap(IDB_BITMAP6);
	//获取位图大小
	LeftLine.GetObject(sizeof(bitinfo),&bitinfo);
	memDC.SelectObject(&LeftLine);
	x = bitinfo.bmiHeader.biWidth;
	y = bitinfo.bmiHeader.biHeight;
	pWindowDC->StretchBlt(m_CloseRect.left,m_CloseRect.top,m_CloseRect.right,m_CloseRect.bottom,&memDC,0,0,x,y,SRCCOPY);
	LeftLine.DeleteObject();
	m_IsDrawForm = TRUE;
	/*****************************绘制关闭按钮***************************************/
	ReleaseDC(&memDC);
	DrawFormCaption();

}
void CLogInDlg::DrawFormCaption()
{
	if (! m_Caption.IsEmpty())
	{
		CDC* pDC = GetWindowDC();
		pDC->SetBkMode(TRANSPARENT);
		pDC->SetTextColor(m_CapitonColor);
		pDC->SetTextAlign(TA_CENTER);
		CRect rect;
		GetClientRect(rect);
		pDC->SelectObject(&m_CaptionFont);
		pDC->TextOut(rect.Width()/2, m_CaptionHeight/3 ,m_Caption);	
	}
}

/////////////////////////////////////////////////////////////////////////////
// CLogInDlg message handlers

void CLogInDlg::OnOK() 
{
	// TODO: Add extra validation here
   
	UpdateData();
	if(m_strUsername.IsEmpty())
	{
		MessageBox("Please input your username!","登录系统",MB_OK|MB_ICONEXCLAMATION);
		m_strUsername.Empty();
		UpdateData(FALSE);
		return;
	}
	if(m_strPassword.IsEmpty())
	{
		MessageBox("Please input your password!","登录系统",MB_OK|MB_ICONEXCLAMATION);
		m_strPassword.Empty();
		UpdateData(FALSE);
		return;
	}

		if(!m_database.IsOpen())
	{
		//连接数据源
		if(!m_database.OpenEx("DSN=MySQL;UID=sa;PWD=123;CDatabase::noOdbcDialog"))
		{
			MessageBox("连接数据库失败!","图书管理系统",MB_OK|MB_ICONINFORMATION);
			return;
		}
	}

⌨️ 快捷键说明

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