📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "Library.h"
#include "MainFrm.h"
#include "RegisterDlg.h"
#include "LogoutDlg.h"
#include "LibraryDoc.h"
#include "LibraryView.h"
#include "BookInfoView.h"
#include "ProviderView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_COMMAND(ID_REGISTER, OnRegisterCard)
ON_COMMAND(ID_LOGOUT, OnLogoutCard)
ON_COMMAND(ID_SHOWBOOKINFO, OnShowbookInfo)
ON_UPDATE_COMMAND_UI(ID_SHOWBOOKINFO, OnUpdateShowbookinfo)
ON_COMMAND(ID_SHOW_PRIVIDER, OnShowPrivider)
ON_UPDATE_COMMAND_UI(ID_SHOW_PRIVIDER, OnUpdateShowPrivider)
ON_COMMAND(ID_SHOW_BORROW, OnShowBorrow)
ON_UPDATE_COMMAND_UI(ID_SHOW_BORROW, OnUpdateShowBorrow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnRegisterCard()
{
// 注册借书卡
CRegisterDlg dlg;
if (dlg.DoModal() == IDOK)
{
// 必须填写卡号
if (dlg.m_nID == 0)
return;
// 关闭数据库
if (m_BorrowerCardSet.IsOpen() == TRUE)
m_BorrowerCardSet.Close();
// 查找到指定卡号的记录
CString sCondition;
sCondition.Format("卡号 = %d", dlg.m_nID);
m_BorrowerCardSet.m_strFilter = sCondition;
// 打开数据库
m_BorrowerCardSet.Open();
// 禁止卡号重复
if (m_BorrowerCardSet.GetRecordCount() > 0)
{
AfxMessageBox("该卡号已存在,请重新输入!");
m_BorrowerCardSet.Close();
return;
}
// 取消查询
m_BorrowerCardSet.Close();
m_BorrowerCardSet.m_strFilter = "";
m_BorrowerCardSet.Open();
// 移动到最后一条记录
if (m_BorrowerCardSet.IsEOF() == FALSE)
m_BorrowerCardSet.MoveLast();
// 添加新记录
m_BorrowerCardSet.AddNew();
// 填充各字段内容
m_BorrowerCardSet.m_CardNum = dlg.m_nID;
m_BorrowerCardSet.m_CardHolder = dlg.m_sName;
m_BorrowerCardSet.m_CardHolderAddr = dlg.m_sAddress;
m_BorrowerCardSet.m_CardHolderPhone = dlg.m_nPhone;
m_BorrowerCardSet.m_Remark = dlg.m_sRemark;
// 签发日期
int year = dlg.m_oleDate.GetYear();
int month = dlg.m_oleDate.GetMonth();
int day = dlg.m_oleDate.GetDay();
m_BorrowerCardSet.m_SignDate = CTime(year, month, day, 0, 0, 0);
// 更新数据
if (m_BorrowerCardSet.CanUpdate() == TRUE)
m_BorrowerCardSet.Update();
// 刷新记录
if (m_BorrowerCardSet.CanRestart() == TRUE)
m_BorrowerCardSet.Requery();
// 关闭数据库
m_BorrowerCardSet.Close();
}
}
void CMainFrame::OnLogoutCard()
{
// 注销借书卡
CLogoutDlg dlg;
if (dlg.DoModal() == IDOK)
// 必须填写卡号
{
if (dlg.m_nID == 0)
return;
// 关闭数据库
if (m_BorrowerCardSet.IsOpen() == TRUE)
m_BorrowerCardSet.Close();
// 查找到指定卡号的记录
CString sCondition;
sCondition.Format("卡号 = %d", dlg.m_nID);
m_BorrowerCardSet.m_strFilter = sCondition;
// 打开数据库
m_BorrowerCardSet.Open();
if (m_BorrowerCardSet.GetRecordCount() == 0)
{
AfxMessageBox("本卡号不存在,请确认输入是否正确!");
// 关闭数据库
m_BorrowerCardSet.Close();
return;
}
// 移动到第一条记录
m_BorrowerCardSet.MoveFirst();
// 删除所有匹配记录
while (m_BorrowerCardSet.IsEOF() == FALSE)
{
m_BorrowerCardSet.Delete();
m_BorrowerCardSet.MoveNext();
}
// 关闭数据库
m_BorrowerCardSet.Close();
AfxMessageBox("该卡成功注销!");
}
}
void CMainFrame::SwitchToForm(int nForm)
{
// 获取原来的活动窗体的视图句柄
CView* pOldActiveView = GetActiveView();
// 获取由"nForm"标识的窗体所对应的视图句柄
CView* pNewActiveView = (CView*) GetDlgItem(nForm);
// 若视图句柄为空,则创建一新的。
if (pNewActiveView == NULL)
{
if (nForm == IDD_LIBRARY_FORM)
pNewActiveView = (CView*)new CLibraryView;
if (nForm == IDD_BOOKINFO_FORM)
pNewActiveView = (CView*)new CBookInfoView;
if (nForm == IDD_PROVIDER_FORM)
pNewActiveView = (CView*)new CProviderView;
// 创建新视图
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, nForm, &context);
pNewActiveView->OnInitialUpdate();
}
// 选择pNewActiveView为活动窗体
SetActiveView(pNewActiveView);
// 显示活动窗体,隐藏非活动窗体
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
// 设置ID
int ID;
if (pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CLibraryView))
ID = IDD_LIBRARY_FORM;
if (pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CBookInfoView))
ID = IDD_BOOKINFO_FORM;
if (pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CProviderView))
ID = IDD_PROVIDER_FORM;
//设置窗体的ID号
pOldActiveView->SetDlgCtrlID(ID);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}
void CMainFrame::OnShowbookInfo()
{
// 显示书目信息表
if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CBookInfoView)))
return;
SwitchToForm(IDD_BOOKINFO_FORM);
}
void CMainFrame::OnUpdateShowbookinfo(CCmdUI* pCmdUI)
{
// 标记当前表为书目信息表
pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CBookInfoView)));
}
void CMainFrame::OnShowPrivider()
{
// 显示供应商信息表
if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CProviderView)))
return;
SwitchToForm(IDD_PROVIDER_FORM);
}
void CMainFrame::OnUpdateShowPrivider(CCmdUI* pCmdUI)
{
// 标记当前表为供应商信息表
pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CProviderView)));
}
void CMainFrame::OnShowBorrow()
{
// 显示借阅信息表
if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CLibraryView)))
return;
SwitchToForm(IDD_LIBRARY_FORM);
}
void CMainFrame::OnUpdateShowBorrow(CCmdUI* pCmdUI)
{
// 标记当前表为借阅信息表
pCmdUI->SetCheck(GetActiveView()->IsKindOf(RUNTIME_CLASS(CLibraryView)));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -