📄 mainfrm.cpp
字号:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "FFMS.h"
#include "GeneralDef.h"
#include "MainFrm.h"
#include "LogDlg.h"
#include "UserDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_MESSAGE(WM_MAXSIZE_MDI,MaxsizeMDIWindow)
ON_MESSAGE(WM_CLOSE_CHILD_FRAME,CloseChildFrame)
ON_COMMAND(ID_APP_EXIT, OnAppExit)
ON_COMMAND(ID_MSG_USER, OnMsgUser)
ON_COMMAND(ID_MSG_IOTYPE, OnMsgIOType)
ON_COMMAND(ID_MSG_BANK, OnMsgBank)
ON_COMMAND(ID_MSG_FAMILY, OnMsgFamily)
ON_COMMAND(ID_ACC_INFO, OnAccInfo)
ON_COMMAND(ID_ACC_TRS, OnAccTrs)
ON_COMMAND(ID_FNC_IO, OnFncIo)
ON_COMMAND(ID_STA_SEARCH, OnStaSearch)
ON_COMMAND(ID_FNC_AST, OnFncAst)
ON_COMMAND(ID_STA_CHART, OnStaChart)
ON_COMMAND(ID_SYS_COPY, OnSysCopy)
ON_COMMAND(ID_SYS_RESUME, OnSysResume)
ON_COMMAND(ID_MSG_ASSET, OnMsgAsset)
ON_COMMAND(ID_APP_HELP, OnAppHelp)
ON_WM_CLOSE()
//}}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
m_pMsgFrm=NULL;
m_pAccFrm=NULL;
m_pIOFrm=NULL;
m_pQueFrm=NULL;
m_pChtFrm=NULL;
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
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
}
if(CheckLog()==0)
return -1;
CDC dc, memdc;
dc.m_hDC=::GetDC(this-> m_hWndMDIClient);
CRect rect;
CBitmap bitmap;
BITMAP szbitmap;
bitmap.LoadBitmap(IDB_BITMAP_BG);
bitmap.GetObject(sizeof(BITMAP),&szbitmap);
CSize size(szbitmap.bmWidth,szbitmap.bmHeight);
memdc.CreateCompatibleDC(&dc);
CBitmap *oldbitmap=memdc.SelectObject(&bitmap);
GetClientRect(&rect);
StretchBlt(dc.m_hDC,0,0,rect.Width(),rect.Height(),
memdc.m_hDC,0,0,size.cx,size.cy,SRCCOPY);
memdc.SelectObject(oldbitmap);
memdc.DeleteDC();
dc.DeleteDC();
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX;
cs.cx=800;
cs.cy=600;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CMDIFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CMDIFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::MaxsizeMDIWindow(WPARAM wParam, LPARAM lParam)
{
lParam=0;
ASSERT(wParam);
CMainFrame* pFrame=(CMainFrame*)wParam;
MDIMaximize(pFrame);
}
void CMainFrame::CloseChildFrame(WPARAM wParam, LPARAM lParam)
{
lParam=0;
ASSERT(wParam==FRAME_MSG||wParam==FRAME_ACC||wParam==FRAME_IO||wParam==FRAME_QUE||wParam==FRAME_CHT);
if(wParam==FRAME_MSG)
m_pMsgFrm=NULL;
else if(wParam==FRAME_ACC)
m_pAccFrm=NULL;
else if(wParam==FRAME_IO)
m_pIOFrm=NULL;
else if(wParam==FRAME_QUE)
m_pQueFrm=NULL;
else if(wParam==FRAME_CHT)
m_pChtFrm=NULL;
}
void CMainFrame::OnAppExit()
{
// TODO: Add your command handler code here
if(IDOK!=MessageBox("确认退出?",NULL,MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2))
return;
CMDIFrameWnd::OnClose();
}
int CMainFrame::CheckLog()
{
CString sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Finance;Data Source=(local)";
CString uid="",upwd="";
CLogDlg dlg;
int num=0;
if(adoDB.Open(sql)==TRUE)
{
CDStrs UserField;
adoDB.ExecuteQuery("select * from MSG_USER",UserField);
uid=UserField[0][0];
uid.TrimRight();
upwd=UserField[0][1];
upwd.TrimRight();
}
else return 0;
while(num<4)
{
if(dlg.DoModal()==0)
return 0;
else
{
if(strcmp(dlg.m_uid,uid)||strcmp(dlg.m_upwd,upwd))
{
num++;
CString tip;
tip.Format("无效登录%d次,还有%d次机会!",num,4-num);
AfxMessageBox(tip);
}
else break;
}
}
if(num>3) return 0;
else return 1;
}
void CMainFrame::OnMsgUser()
{
// TODO: Add your command handler code here
CString sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Finance;Data Source=(local)";
CString uid="",upwd="";
if(adoDB.Open(sql)==TRUE)
{
CDStrs UserField;
adoDB.ExecuteQuery("select * from MSG_USER",UserField);
uid=UserField[0][0];
uid.TrimRight();
upwd=UserField[0][1];
upwd.TrimRight();
}
else return;
CUserDlg dlg;
while(dlg.DoModal()==IDOK)
{
if(dlg.m_oldpwd!=upwd)
MessageBox("原始密码输入错误!");
else
{
CString sql;
sql.Format("update MSG_USER set user_id='%s',user_pwd='%s' where user_id='%s'",dlg.m_newname,dlg.m_newpwd,uid);
adoDB.Execute(sql);
MessageBox("用户信息成功修改!");
break;
}
}
}
void CMainFrame::OnMsgIOType()
{
// TODO: Add your command handler code here
if(m_pMsgFrm)
MDIActivate(m_pMsgFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pMsgTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("信息管理");
m_pMsgFrm=(CMsgFrm*)MDIGetActive();
}
}
void CMainFrame::OnMsgBank()
{
// TODO: Add your command handler code here
if(m_pMsgFrm)
MDIActivate(m_pMsgFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pMsgTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("信息管理");
m_pMsgFrm=(CMsgFrm*)MDIGetActive();
}
}
void CMainFrame::OnMsgFamily()
{
// TODO: Add your command handler code here
if(m_pMsgFrm)
MDIActivate(m_pMsgFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pMsgTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("信息管理");
m_pMsgFrm=(CMsgFrm*)MDIGetActive();
}
}
void CMainFrame::OnMsgAsset()
{
// TODO: Add your command handler code here
if(m_pMsgFrm)
MDIActivate(m_pMsgFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pMsgTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("信息管理");
m_pMsgFrm=(CMsgFrm*)MDIGetActive();
}
}
void CMainFrame::OnAccInfo()
{
// TODO: Add your command handler code here
if(m_pAccFrm)
MDIActivate(m_pAccFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pAccTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("账户管理");
m_pAccFrm=(CAccFrm*)MDIGetActive();
}
}
void CMainFrame::OnAccTrs()
{
// TODO: Add your command handler code here
if(m_pAccFrm)
MDIActivate(m_pAccFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pAccTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("账户管理");
m_pAccFrm=(CAccFrm*)MDIGetActive();
}
}
void CMainFrame::OnFncIo()
{
// TODO: Add your command handler code here
if(m_pIOFrm)
MDIActivate(m_pIOFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pIOTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("财务管理");
m_pIOFrm=(CIOFrm*)MDIGetActive();
}
}
void CMainFrame::OnFncAst()
{
// TODO: Add your command handler code here
if(m_pIOFrm)
MDIActivate(m_pIOFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pIOTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("财务管理");
m_pIOFrm=(CIOFrm*)MDIGetActive();
}
}
void CMainFrame::OnStaSearch()
{
// TODO: Add your command handler code here
if(m_pQueFrm)
MDIActivate(m_pQueFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pQueTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("明细查询");
m_pQueFrm=(CQueFrm*)MDIGetActive();
}
}
void CMainFrame::OnStaChart()
{
// TODO: Add your command handler code here
if(m_pChtFrm)
MDIActivate(m_pChtFrm);
else
{
CDocument *pDoc=((CFFMSApp*)AfxGetApp())->m_pChtTemplate->OpenDocumentFile(NULL);
pDoc->SetTitle("图表分析");
m_pChtFrm=(CChtFrm*)MDIGetActive();
}
}
void CMainFrame::OnSysCopy()
{
// TODO: Add your command handler code here
CString sPath,sDate;
CTime ttime;
ttime=ttime.GetCurrentTime();
sDate=ttime.Format("%Y-%m-%d-%H-%M-%S");
sPath=ShowPath();
int b=sPath.GetLength();
if(b<3)
return;
else
sPath=sPath+"\\"+sDate+"BAK.DB";
CString strSql;
strSql.Format("BACKUP database finance to disk='%s'",sPath);
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未连接!");
return;
}
else
{
adoDB.Execute(strSql,adCmdText);
AfxMessageBox("数据成功备份!");
return;
}
}
void CMainFrame::OnSysResume()
{
// TODO: Add your command handler code here
CString sPath;
char szFile[]="数据文件(*.db)|*.db||";
CFileDialog dlg(true,"DB","",OFN_HIDEREADONLY,szFile,this);
if(dlg.DoModal()==IDOK)
{
sPath=dlg.GetPathName();
ClearAllChildFrm();
}
else return;
if(adoDB.IsOpen())
adoDB.Close();
CString sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=(local)";
adoDB.Open(sql,adModeUnknown);
CString strSql;
strSql.Format("RESTORE database finance from disk='%s' with replace",sPath);
if(adoDB.Execute(strSql,adCmdText))
{
AfxMessageBox("数据恢复成功!");
adoDB.Close();
}
sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Finance;Data Source=(local)";
adoDB.Open(sql);
}
CString CMainFrame::ShowPath()
{
CString res;
TCHAR szPath[_MAX_PATH];
BROWSEINFO bi;
bi.hwndOwner=NULL;
bi.pidlRoot=NULL;
bi.lpszTitle=_T("请选择一个文件夹");
bi.pszDisplayName=szPath;
bi.ulFlags=BIF_RETURNONLYFSDIRS;
bi.lpfn=NULL;
bi.lParam=NULL;
LPITEMIDLIST pItemIDList=SHBrowseForFolder(&bi);
if(pItemIDList)
{
if(SHGetPathFromIDList(pItemIDList,szPath))
res=szPath;
}
else
res="";
return res;
}
void CMainFrame::ClearAllChildFrm()
{
CFFMSApp *pApp = (CFFMSApp*)::AfxGetApp();
pApp->CloseAllDocuments(TRUE);
m_pMsgFrm=NULL;
m_pAccFrm=NULL;
m_pIOFrm=NULL;
m_pQueFrm=NULL;
m_pChtFrm=NULL;
}
void CMainFrame::OnAppHelp()
{
// TODO: Add your command handler code here
ShellExecute(NULL,NULL,_T(".\\FFMS.CHM"),NULL,NULL,SW_SHOWNORMAL);
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
if(IDOK!=MessageBox("确认退出?",NULL,MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2))
return;
CMDIFrameWnd::OnClose();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -