📄 mainfrm.cpp
字号:
// 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 + -