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

📄 mainfrm.cpp

📁 LibraryManageDM.rar 数据库设计图书馆管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : CMainFrame 类的实现
//

#include "stdafx.h"
#include "LibraryManage.h"

#include "MainFrm.h"
#include "LoginDlg.h"
#include "UserManageDlg.h"
#include "SettingDlg.h"
#include "BookRegDlg.h"
#include "ReaderRegDlg.h"
#include "QueryDlg.h"
#include "InputDlg.h"
#include "BorrowManageDlg.h"
#include "HelpDlg.h"
#include "CommonFunc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

int IndexOfUserZone;
int IndexOfTimeZone;
const CString OMNIPUSER = _T("NameSpace           "); // 万能用户用户名
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_WM_CLOSE()
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_USER, OnUpdateUser)
	ON_UPDATE_COMMAND_UI(ID_INDICATOR_DATE, OnUpdateTime)
	ON_COMMAND(ID_SYSMAN_USER, OnSysmanUser)
	ON_UPDATE_COMMAND_UI(ID_SYSMAN_USER, OnUpdateSysmanUser)
	ON_COMMAND(ID_SYSMAN_RELOAD, OnSysmanReload)
	ON_COMMAND(ID_BASMAN_BOOK, OnBasmanBook)
	ON_COMMAND(ID_BASMAN_READER, OnBasmanReader)
	ON_COMMAND(ID_BASMAN_PUNISH, OnBasmanPunish)
	ON_COMMAND(ID_BOOKMAN_NEW, OnBookmanNew)
	ON_UPDATE_COMMAND_UI(ID_BOOKMAN_NEW, OnUpdateBookmanNew)
	ON_COMMAND(ID_BOOKMAN_LOST, OnBookmanLost)
	ON_UPDATE_COMMAND_UI(ID_BOOKMAN_LOST, OnUpdateBookmanLost)
	ON_COMMAND(ID_BOOKMAN_QUERY, OnBookmanQuery)
	ON_COMMAND(ID_READERMAN_NEW, OnReadermanNew)
	ON_UPDATE_COMMAND_UI(ID_READERMAN_NEW, OnUpdateReadermanNew)
	ON_COMMAND(ID_READERMAN_LOST, OnReadermanLost)
	ON_UPDATE_COMMAND_UI(ID_READERMAN_LOST, OnUpdateReadermanLost)
	ON_COMMAND(ID_READERMAN_QUERY, OnReadermanQuery)
	ON_COMMAND(ID_BORMAN_BORROW, OnBormanBorrow)
	ON_UPDATE_COMMAND_UI(ID_BORMAN_BORROW, OnUpdateBormanBorrow)
	ON_COMMAND(ID_BORMAN_RENEW, OnBormanRenew)
	ON_UPDATE_COMMAND_UI(ID_BORMAN_RENEW, OnUpdateBormanRenew)
	ON_COMMAND(ID_BORMAN_RETURN, OnBormanReturn)
	ON_UPDATE_COMMAND_UI(ID_BORMAN_RETURN, OnUpdateBormanReturn)
	ON_COMMAND(ID_BORMAN_PAY, OnBormanPay)
	ON_UPDATE_COMMAND_UI(ID_BORMAN_PAY, OnUpdateBormanPay)
	ON_COMMAND(ID_BORMAN_QUERY, OnBormanQuery) 
	ON_COMMAND(ID_DBMAN_INITIALIZE, OnDbmanInitialize)
	ON_UPDATE_COMMAND_UI(ID_DBMAN_INITIALIZE, OnUpdateDbmanInitialize)
	ON_COMMAND(ID_DBMAN_BACKUP, OnDbmanBackup)
	ON_UPDATE_COMMAND_UI(ID_DBMAN_BACKUP, OnUpdateDbmanBackup)
	ON_COMMAND(ID_DBMAN_RELOAD, OnDbmanReload)
	ON_UPDATE_COMMAND_UI(ID_DBMAN_RELOAD, OnUpdateDbmanReload)
	ON_COMMAND(ID_HELP_CONTENT, OnHelpContent)
	ON_COMMAND(ID_WND_MAX, OnWndMax)
	ON_COMMAND(ID_WND_MIN, OnWndMin)
	ON_COMMAND(ID_BOOKMAN_MOD, OnBookmanMod)
	ON_UPDATE_COMMAND_UI(ID_BOOKMAN_MOD, OnUpdateBookmanMod)
	ON_COMMAND(ID_READERMAN_MOD, OnReadermanMod)
	ON_UPDATE_COMMAND_UI(ID_READERMAN_MOD, OnUpdateReadermanMod)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // 状态行指示器
};


// CMainFrame 构造/析构
CMainFrame::CMainFrame()
{
	// TODO: 在此添加成员初始化代码
	m_bShow = TRUE;
}

CMainFrame::~CMainFrame()
{
}


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("未能创建状态栏\n");
		return -1;      // 未能创建
	}

	// 设置菜单图标
	CMenu *pMainMenu = GetMenu();
	CMenu *pMenu;
	// 系统管理菜单选项
	pMenu = pMainMenu->GetSubMenu(0);
	bitmap.LoadBitmap(IDB_UBITMAP);
	pMenu->SetMenuItemBitmaps(ID_SYSMAN_USER, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_CBITMAP);
	pMenu->SetMenuItemBitmaps(ID_SYSMAN_RELOAD, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_EXITBITMAP);
	pMenu->SetMenuItemBitmaps(ID_APP_EXIT, MF_BYCOMMAND, &bitmap, &bitmap);
	
	// 基础数据管理菜单选项
	pMenu = pMainMenu->GetSubMenu(1);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_BBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BASMAN_BOOK, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_RBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BASMAN_READER, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_PBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BASMAN_PUNISH, MF_BYCOMMAND, &bitmap, &bitmap);	
	
	// 图书信息管理菜单选项
	pMenu = pMainMenu->GetSubMenu(2);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_RBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BOOKMAN_NEW, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_MBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BOOKMAN_MOD, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_LBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BOOKMAN_LOST, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_QUEBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BOOKMAN_QUERY, MF_BYCOMMAND, &bitmap, &bitmap);

	// 读者信息管理菜单选项
	pMenu = pMainMenu->GetSubMenu(3);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_LBITMAP);
	pMenu->SetMenuItemBitmaps(ID_READERMAN_LOST, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_MBITMAP);
	pMenu->SetMenuItemBitmaps(ID_READERMAN_MOD, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_RBITMAP);
	pMenu->SetMenuItemBitmaps(ID_READERMAN_NEW, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_QUEBITMAP);
	pMenu->SetMenuItemBitmaps(ID_READERMAN_QUERY, MF_BYCOMMAND, &bitmap, &bitmap);

	// 借阅信息管理菜单选项
	pMenu = pMainMenu->GetSubMenu(4);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_BBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BORMAN_BORROW, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_NBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BORMAN_RENEW, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_RBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BORMAN_RETURN, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_PBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BORMAN_PAY, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_QUEBITMAP);
	pMenu->SetMenuItemBitmaps(ID_BORMAN_QUERY, MF_BYCOMMAND, &bitmap, &bitmap);

	// 数据库管理菜单选项
	pMenu = pMainMenu->GetSubMenu(5);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_IBITMAP);
	pMenu->SetMenuItemBitmaps(ID_DBMAN_INITIALIZE, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_BBITMAP);
	pMenu->SetMenuItemBitmaps(ID_DBMAN_BACKUP, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_RBITMAP);
	pMenu->SetMenuItemBitmaps(ID_DBMAN_RELOAD, MF_BYCOMMAND, &bitmap, &bitmap);
	
	// 帮助菜单选项
	pMenu = pMainMenu->GetSubMenu(6);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_HELPBITMAP);
	pMenu->SetMenuItemBitmaps(ID_HELP_CONTENT, MF_BYCOMMAND, &bitmap, &bitmap);
	bitmap.Detach();
	bitmap.LoadBitmap(IDB_ABITMAP);
	pMenu->SetMenuItemBitmaps(ID_APP_ABOUT, MF_BYCOMMAND, &bitmap, &bitmap);	
	
	CenterWindow(GetDesktopWindow());

	//! 在状态栏中添加区域用以显示用户和时间
	//! 得到当前状态栏的区域个数
	int nPanes = sizeof(indicators)/sizeof(UINT);
	//! 构建状态ID标识数组
	UINT *pIndicators = new UINT[nPanes + 3];
	memcpy(pIndicators, indicators, sizeof(indicators));
	IndexOfUserZone = nPanes++;
	pIndicators[nPanes++] = ID_SEPARATOR;
	IndexOfTimeZone = nPanes++;
	//! 在状态栏的右侧部分显示当前用户和当前时间
	pIndicators[IndexOfUserZone] = ID_INDICATOR_USER;
	pIndicators[IndexOfTimeZone] = ID_INDICATOR_DATE;
	m_wndStatusBar.SetIndicators(pIndicators, nPanes);
	delete[] pIndicators;

	//! 装载图标
	HICON hIcon = ::LoadIcon(AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_DOCICON));
	//! 创建最小化到任务栏的窗口
	if(!m_SysTray.Create(NULL,		             //! 让图标响应相应的动作
		WM_ICON_NOTIFY,		     //!通知图标的函数
		_T("图书信息管理系统\r\nBookLibrary Management"), //! 在任务栏显示的ToolTips
		hIcon,                   //! 指定使用的图标的句柄
		IDR_DOWNMENU))             //! 指定显示的弹出菜单
		CSystemTray::MinimiseToTray(this);//! 将窗口最小化到任务栏上显示图标

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: 在此处通过修改
	//  CREATESTRUCT cs 来修改窗口类或样式
	
	return TRUE;
}


// CMainFrame 诊断

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG


// CMainFrame 消息处理程序
void CMainFrame::OnUpdateUser(CCmdUI* pCmdUI)
{
	//! 得到系统当前的时间
	CTime curtime = CTime::GetCurrentTime();
	CString strDate;
	strDate.Format(_T("%04d年%02d月%02d日 "), 
		curtime.GetYear(), curtime.GetMonth(), curtime.GetDay());
	CString tmp = curtime.Format(_T("%A"));
	strDate += tmp.Left(3);
	//! 根据时间字符串的长度计算它在状态栏输出时所需要的长度
	CSize size;
	HGDIOBJ hOldFont = NULL;
	HFONT hFont = (HFONT)m_wndStatusBar.SendMessage(WM_GETFONT);
	CClientDC dc(NULL);
	if (hFont != NULL)
		hOldFont = dc.SelectObject(hFont);
	size = dc.GetTextExtent(strDate);
	if (hOldFont != NULL)
		dc.SelectObject(hOldFont);
	//! 修改状态栏
	m_wndStatusBar.SetPaneInfo(IndexOfUserZone, ID_INDICATOR_DATE, 0, size.cx+60);
	pCmdUI->SetText(strDate);
	pCmdUI->Enable(TRUE);
}
void CMainFrame::OnUpdateTime(CCmdUI* pCmdUI)
{
	CString strUser;
	strUser.Format(_T("当前用户:%s"), theApp.GetUserName());
	CSize size;
	HGDIOBJ hOldFont = NULL;
	HFONT hFont = (HFONT)m_wndStatusBar.SendMessage(WM_GETFONT);
	CClientDC dc(NULL);
	if (hFont != NULL)
		hOldFont = dc.SelectObject(hFont);
	size = dc.GetTextExtent(strUser);
	if (hOldFont != NULL)
		dc.SelectObject(hOldFont);
	//! 修改状态栏
	m_wndStatusBar.SetPaneInfo(IndexOfTimeZone, ID_INDICATOR_USER, 0, size.cx-30);
	pCmdUI->SetText(strUser);
	pCmdUI->Enable(TRUE);
}

void CMainFrame::OnClose()
{
	// TODO: Add your message handler code here and/or call default
	//! 单击关闭时最小化到系统托盘
	if(MessageBox(_T("您确定要退出系统吗?"), theApp.strSystemName,
		MB_OKCANCEL) !=  IDOK)
	{
		CSystemTray::MinimiseToTray(this);
		m_SysTray.SetMenuDefaultItem (ID_WND_MAX,FALSE);
		m_bShow = FALSE;
		return ;
	}
	CFrameWnd::OnClose();
}

void CMainFrame::OnSysmanUser()
{
	// TODO: Add your command handler code here
	CUserManageDlg dlg;
	dlg.DoModal();
}

void CMainFrame::OnUpdateSysmanUser(CCmdUI *pCmdUI)
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(theApp.IsManager());
}

void CMainFrame::OnSysmanReload()
{
	// TODO: Add your command handler code here
	CLoginDlg Dlg;
	INT_PTR nRes=0;
	nRes = Dlg.DoModal();
	//回到主界面
	if(nRes==IDOK)
		return;

⌨️ 快捷键说明

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