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);
}
}