www.pudn.com > PBMS.rar > LibDlg.cpp


// LibDlg.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "PBMS.h" 
#include "LibDlg.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CLibDlg dialog 
 
 
CLibDlg::CLibDlg(CWnd* pParent /*=NULL*/) 
	: CDialog(CLibDlg::IDD, pParent) 
{ 
	//{{AFX_DATA_INIT(CLibDlg) 
	m_bHasHoliday = FALSE; 
	m_HolidayBegin = 0; 
	m_HolidayEnd = 0; 
	m_reborrowCount = 0; 
	m_BorrowTime = 0; 
	m_ID = 0; 
	m_szName = _T(""); 
	m_ReborrowTime = 0; 
	m_MaxBookCount = 0; 
	//}}AFX_DATA_INIT 
	m_curLibInfo.id = 0;	 
} 
 
 
void CLibDlg::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CLibDlg) 
	DDX_Check(pDX, IDC_CHECK_HASHOLIDAY, m_bHasHoliday); 
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_B, m_HolidayBegin); 
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER_E, m_HolidayEnd); 
	DDX_Text(pDX, IDC_EDIT_BC, m_reborrowCount); 
	DDX_Text(pDX, IDC_EDIT_BT, m_BorrowTime); 
	DDX_Text(pDX, IDC_EDIT_ID, m_ID); 
	DDX_Text(pDX, IDC_EDIT_NAME, m_szName); 
	DDX_Text(pDX, IDC_EDIT_RT, m_ReborrowTime); 
	DDX_Text(pDX, IDC_EDIT_BOOKCOUNT, m_MaxBookCount); 
	//}}AFX_DATA_MAP 
} 
 
IMPLEMENT_DYNCREATE(CLibDlg, CDialog) 
BEGIN_MESSAGE_MAP(CLibDlg, CDialog) 
	//{{AFX_MSG_MAP(CLibDlg) 
	ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave) 
	ON_BN_CLICKED(IDC_CHECK_HASHOLIDAY, OnCheckHasholiday) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CLibDlg message handlers 
 
 
 
BOOL CLibDlg::OnInitDialog()  
{ 
	CDialog::OnInitDialog(); 
	 
	//*=首先调整自身大小(与父窗口一样)=*// 
	CRect rect; 
	this->GetParent()->GetWindowRect(&rect); 
	ScreenToClient(&rect); 
	this->MoveWindow(&rect); 
	//*==================================*// 
	 
	if (m_curLibInfo.id != 0)//显示图书馆信息 
	{ 
		//ID 
		m_ID = m_curLibInfo.id; 
		//馆名 
		m_szName = m_curLibInfo.name; 
		//允许借书时间 
		m_BorrowTime = m_curLibInfo.canborrowTime; 
		//允许续借时间 
		m_ReborrowTime = m_curLibInfo.canreborrowTime; 
		//续借次数 
		m_reborrowCount = m_curLibInfo.canreborrowCount; 
		//是否有假期 
		m_bHasHoliday = m_curLibInfo.HasHoliday;  
		if (m_curLibInfo.HasHoliday) 
		{ 
			//假期开始时间 
			if (m_curLibInfo.holiday_begin.GetYear() > 1970 && m_curLibInfo.holiday_begin.GetYear() <= 2038) 
			{ 
				m_HolidayBegin = CTime(m_curLibInfo.holiday_begin.GetYear(),m_curLibInfo.holiday_begin.GetMonth(),m_curLibInfo.holiday_begin.GetDay(),0,0,0); 
			} 
			else 
			{ 
				AfxMessageBox("该图书馆的假期时间设置有问题\n故本系统未将其显示!"); 
				m_curLibInfo.HasHoliday = false; 
			} 
			//假期结束时间 
			if (m_curLibInfo.holiday_end.GetYear() > 1970 && m_curLibInfo.holiday_end.GetYear() <= 2038) 
			{ 
				m_HolidayEnd = CTime(m_curLibInfo.holiday_end.GetYear(),m_curLibInfo.holiday_end.GetMonth(),m_curLibInfo.holiday_end.GetDay(),0,0,0); 
			} 
			else 
			{ 
				AfxMessageBox("该图书馆的假期时间设置有问题\n故本系统未将其显示!"); 
				m_curLibInfo.HasHoliday = false;			 
			} 
		} 
		else	//禁止假期开始时间控件和假期结束时间控件 
		{ 
			m_HolidayBegin = m_HolidayBegin.GetCurrentTime(); 
			m_HolidayEnd = m_HolidayEnd.GetCurrentTime(); 
			CWnd *pWnd = GetDlgItem(IDC_DATETIMEPICKER_B); 
			pWnd->EnableWindow(FALSE); 
			pWnd = GetDlgItem(IDC_DATETIMEPICKER_E); 
			pWnd->EnableWindow(FALSE); 
		} 
		UpdateData(false); 
	} 
	return TRUE;  // return TRUE unless you set the focus to a control 
	              // EXCEPTION: OCX Property Pages should return FALSE 
} 
 
/*=========================PreTranslateMessage======================================== 
说明: 
	重载PreTranslateMessage函数是为了确保用户回车时不关闭对话框, 
	而使其焦点指向下一个控件 
====================================================================================*/ 
BOOL CLibDlg::PreTranslateMessage(MSG* pMsg)  
{ 
 	BOOL handle = FALSE; 
	if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) 
 	{ 
		CWnd *pCurrent = NULL; 
		pCurrent = GetFocus();//指向当前获得焦点的子窗口 
		if (pCurrent) 
		{ 
			CWnd *pNext = NULL; 
			pNext = GetNextDlgTabItem(pCurrent); 
			pNext->SetFocus();//焦点指向下一个子窗口 
			handle = TRUE; 
		} 
	} 
	return (handle ? handle : CDialog::PreTranslateMessage(pMsg)); 
} 
 
/*=========================OnButtonSave=============================================== 
说明: 
	保存图书馆设置 
====================================================================================*/ 
void CLibDlg::OnButtonSave()  
{ 
	//*==================首先更新数据===================*// 
	UpdateData(); 
	//ID 
	m_curLibInfo.id = m_ID; 
	//馆名 
	m_curLibInfo.name = m_szName; 
	//允许借书时间 
	m_curLibInfo.canborrowTime = m_BorrowTime; 
	//允许续借时间 
	m_curLibInfo.canreborrowTime = m_ReborrowTime; 
	//允许续借次数 
	m_curLibInfo.canreborrowCount = m_reborrowCount; 
	//是否有假期 
	m_curLibInfo.HasHoliday = m_bHasHoliday; 
	//假期时间 
	if (m_curLibInfo.HasHoliday) 
	{ 
		if (m_HolidayBegin >= m_HolidayEnd) 
		{ 
			AfxMessageBox("您的假期时间填写有误,请确保假期结束\n时间比假期开始时间晚!\n填写好后请重新保存数据。"); 
			return; 
		} 
		m_curLibInfo.holiday_begin.SetDate(m_HolidayBegin.GetYear(),m_HolidayBegin.GetMonth(),m_HolidayBegin.GetDay()); 
		m_curLibInfo.holiday_end.SetDate(m_HolidayEnd.GetYear(),m_HolidayEnd.GetMonth(),m_HolidayEnd.GetDay()); 
		 
	} 
	else 
	{ 
		m_curLibInfo.holiday_begin.SetStatus(COleDateTime::null); 
		m_curLibInfo.holiday_end.SetStatus(COleDateTime::null); 
	} 
	//*=================================================*// 
	 
	//保存数据库 
	CPBMSView *pMyView = (CPBMSView *)GetParent(); 
	pMyView->DataExchange(4);//调用父窗口(即View窗口)函数实现数据存储	 
} 
 
/*=========================OnCheckHasholiday========================================== 
说明: 
	当点击check控件后,使时间控件允许或不允许 
====================================================================================*/ 
void CLibDlg::OnCheckHasholiday()  
{ 
	UpdateData(); 
	if (m_bHasHoliday)	//允许时间控件 
	{ 
		CWnd *pWnd = GetDlgItem(IDC_DATETIMEPICKER_B); 
		pWnd->EnableWindow(); 
		pWnd = GetDlgItem(IDC_DATETIMEPICKER_E); 
		pWnd->EnableWindow();		 
	} 
	else				//不允许时间控件 
	{ 
		CWnd *pWnd = GetDlgItem(IDC_DATETIMEPICKER_B); 
		pWnd->EnableWindow(FALSE); 
		pWnd = GetDlgItem(IDC_DATETIMEPICKER_E); 
		pWnd->EnableWindow(FALSE);	 
	} 
}