📄 moneyanywhereview.cpp
字号:
// MoneyAnyWhereView.cpp : implementation of the CMoneyAnyWhereView class
//
#include "stdafx.h"
#include "MoneyAnyWhere.h"
#include "MoneyAnyWhereDoc.h"
#include "MoneyAnyWhereView.h"
#include "IrDASocket.h"
#include <atlconv.h>
#include "Module1Dlg.h"
#include "CashDlg.h"
#include "TopDlg.h"
#include "HelpDlg.h"
#include "AllCashDlg.h"
#include "AllAssetDlg.h"
#include "AssetDlg.h"
#include "AllStockDlg.h"
#include "StockDlg.h"
#include "GoodsDlg.h"
#include "TaxComputeDlg.h"
#include "InterestComputeDlg.h"
#include "NotificationDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
#define IRDA_SERVICENAME "MoneyAnyWhereIrDAService" // IrDA service name
#define LONG_TIMEOUT 10000 // = 10 seconds
#define SHORT_TIMEOUT 5000 // = 5 seconds
//把对话框变量都定义成全局变量,方便操作,在析构函数中将他们释放掉
CModule1Dlg *pAccountDlg;
CTopDlg *pTopDlg;
CCashDlg *pCashDlg;
CAllCashDlg *pAllCashDlg;
CAllAssetDlg *pAllAssetDlg;
CAssetDlg *pAssetDlg;
CAllStockDlg *pAllStockDlg;
CStockDlg *pStockDlg;
CGoodsDlg *pGoodsDlg;
CNotificationDlg *pNotiDlg;
/////////////////////////////////////////////////////////////////////////////
// CMoneyAnyWhereView
IMPLEMENT_DYNCREATE(CMoneyAnyWhereView, CView)
BEGIN_MESSAGE_MAP(CMoneyAnyWhereView, CView)
//{{AFX_MSG_MAP(CMoneyAnyWhereView)
ON_WM_CREATE()
ON_COMMAND(ID_APPEXIT, OnAppexit)
ON_COMMAND(ID_APPHELP, OnApphelp)
ON_COMMAND(ID_TAXCAL, OnTaxcal)
ON_COMMAND(ID_INTERESTCAL, OnInterestcal)
ON_COMMAND(ID_IRDABACKUP, OnIrdabackup)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMoneyAnyWhereView construction/destruction
CMoneyAnyWhereView::CMoneyAnyWhereView()
{
// TODO: add construction code here
Sleep(4000);
}
CMoneyAnyWhereView::~CMoneyAnyWhereView()
{
if(pAccountDlg!=NULL)
delete pAccountDlg;
if(pTopDlg !=NULL)
delete pTopDlg;
if(pCashDlg != NULL)
delete pCashDlg;
if(pAllCashDlg !=NULL)
delete pAllCashDlg;
}
BOOL CMoneyAnyWhereView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMoneyAnyWhereView drawing
void CMoneyAnyWhereView::OnDraw(CDC* pDC)
{
CMoneyAnyWhereDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CMoneyAnyWhereView diagnostics
#ifdef _DEBUG
void CMoneyAnyWhereView::AssertValid() const
{
CView::AssertValid();
}
void CMoneyAnyWhereView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMoneyAnyWhereDoc* CMoneyAnyWhereView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMoneyAnyWhereDoc)));
return (CMoneyAnyWhereDoc*)m_pDocument;
}
#endif //_DEBUG
/*************************************************
函数功能:在VIEW创建时,同时创建对话框
-------------------------------------------------
修改时间:2005-3-6
修改人: 宋雷
修改内容:在VIEW的Create时候,同时创建若干个对话框,但只有一个显示,其他都隐藏(应该可以让用户设置先进哪个界面的)
*************************************************/
/////////////////////////////////////////////////////////////////////////////
// CMoneyAnyWhereView message handlers
//
int CMoneyAnyWhereView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
pTopDlg = new CTopDlg();
pTopDlg->Create( IDD_DIALOG_TOP, this );
pTopDlg->MoveWindow(0,0,240,40);
pTopDlg->ShowWindow( SW_SHOW );
pAccountDlg= new CModule1Dlg();
pAccountDlg->Create(IDD_DIALOG_MODULE1, this );
pAccountDlg->MoveWindow(0,40,240,230);
pAccountDlg->ShowWindow( SW_SHOW );
pCashDlg = new CCashDlg();
pCashDlg->Create(IDD_DIALOG_CASH, this );
pCashDlg->MoveWindow(0,40,240,230);
pCashDlg->ShowWindow( SW_HIDE );
pAllCashDlg = new CAllCashDlg();
pAllCashDlg->Create(IDD_DIALOG_CASHALL, this );
pAllCashDlg->MoveWindow(0,40,240,230);
pAllCashDlg->ShowWindow( SW_HIDE );
pAllAssetDlg = new CAllAssetDlg();
pAllAssetDlg->Create(IDD_DIALOG_ASSETALL, this );
pAllAssetDlg->MoveWindow(0,40,240,230);
pAllAssetDlg->ShowWindow( SW_HIDE );
pAssetDlg = new CAssetDlg();
pAssetDlg->Create(IDD_DIALOG_ASSET, this );
pAssetDlg->MoveWindow(0,40,240,230);
pAssetDlg->ShowWindow( SW_HIDE );
pStockDlg = new CStockDlg();
pStockDlg->Create(IDD_DIALOG_STOCK, this );
pStockDlg->MoveWindow(0,40,240,230);
pStockDlg->ShowWindow( SW_HIDE );
pAllStockDlg = new CAllStockDlg();
pAllStockDlg->Create(IDD_DIALOG_STOCKALL, this );
pAllStockDlg->MoveWindow(0,40,240,230);
pAllStockDlg->ShowWindow( SW_HIDE );
pGoodsDlg = new CGoodsDlg();
pGoodsDlg->Create(IDD_DIALOG_GOODS, this );
pGoodsDlg->MoveWindow(0,40,240,230);
pGoodsDlg->ShowWindow( SW_HIDE );
pNotiDlg = new CNotificationDlg();
pNotiDlg->Create(IDD_DIALOG_NOTIFICATION, this );
pNotiDlg->MoveWindow(0,40,240,230);
pNotiDlg->ShowWindow( SW_HIDE );
return 0;
}
//下面几个函数,分别对应着TOP对话框中的按钮作用
/*************************************************
函数功能:显示帐户界面
-------------------------------------------------
修改时间:2005-3-6
修改人: 宋雷
修改内容:显示帐户界面
*************************************************/
void CMoneyAnyWhereView::DisplayDlgAccount()
{
if(pAccountDlg!=NULL && pCashDlg!=NULL)
{
pCashDlg->ShowWindow(SW_HIDE);
pAccountDlg->ShowWindow(SW_SHOW);
}
}
/*************************************************
函数功能:显示现金界面
-------------------------------------------------
修改时间:2005-3-6
修改人: 宋雷
修改内容:显示帐户界面
*************************************************/
void CMoneyAnyWhereView::DisplayDlgCash(CString filename)
{
if(pAccountDlg!=NULL && pCashDlg!=NULL && pAllCashDlg !=NULL)
{
if(filename!="NULL")
{
pCashDlg->m_strCashName = filename;
pCashDlg->ReadIni(filename);
pAllCashDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_SHOW);
}
else //显示所有帐户类型为现金的帐户
{
//AfxMessageBox(L"显示所有帐户类型为现金的帐户");
pAllCashDlg->ShowWindow(SW_SHOW);
pCashDlg->ShowWindow(SW_HIDE);
}
pAllStockDlg->ShowWindow(SW_HIDE);
pAccountDlg->ShowWindow(SW_HIDE);
pAllAssetDlg->ShowWindow(SW_HIDE);
}
}
void CMoneyAnyWhereView::DisplayDlgStock(CString filename)
{
if(pAccountDlg!=NULL && pCashDlg!=NULL && pAllCashDlg !=NULL)
{
if(filename!="NULL")
{
pStockDlg->m_strStockName = filename;
pStockDlg->ReadIni(filename);
pAllStockDlg->ShowWindow(SW_HIDE);
pStockDlg->ShowWindow(SW_SHOW);
}
else
{
pAllStockDlg->ShowWindow(SW_SHOW);
pStockDlg->ShowWindow(SW_HIDE);
}
pAccountDlg->ShowWindow(SW_HIDE);
pAllAssetDlg->ShowWindow(SW_HIDE);
pAssetDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_HIDE);
pAllCashDlg->ShowWindow(SW_HIDE);
}
}
/*************************************************
函数功能:程序退出
-------------------------------------------------
修改时间:2005-3-6
修改人: 宋雷
修改内容:同时播放声音
*************************************************/
void CMoneyAnyWhereView::OnAppexit()
{
PlaySound(_T("Program Files\\wav\\Normal_ShutDown.wav"), NULL, SND_ASYNC | SND_FILENAME);
exit(1);
}
/*************************************************
函数功能:显示帮助信息
-------------------------------------------------
修改时间:2005-3-6
修改人: 宋雷
修改内容:只是显示出来,待添加内容
*************************************************/
void CMoneyAnyWhereView::OnApphelp()
{
CHelpDlg dlg(this);
dlg.DoModal();
}
void CMoneyAnyWhereView::DisplayDlgAsset(CString filename)
{
if(pAccountDlg!=NULL && pAssetDlg!=NULL && pAllAssetDlg !=NULL)
{
if(filename!="NULL")
{
pAssetDlg->m_strAssetName = filename;
pAssetDlg->ReadIni(filename);
pAllAssetDlg->ShowWindow(SW_HIDE);
pAssetDlg->ShowWindow(SW_SHOW);
}
else //显示所有帐户类型为现金的帐户
{
pAllAssetDlg->ShowWindow(SW_SHOW);
pAssetDlg->ShowWindow(SW_HIDE);
//AfxMessageBox(L"显示所有帐户类型为现金的帐户");
}
pAccountDlg->ShowWindow(SW_HIDE);
pAllCashDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_HIDE);
}
}
void CMoneyAnyWhereView::DisplayDlgSaving(CString filename)
{
if(pAccountDlg!=NULL && pCashDlg!=NULL && pAllCashDlg !=NULL)
{
if(filename!="NULL")
{
pCashDlg->m_strCashName = filename;
pCashDlg->ReadIni(filename);
pAllCashDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_SHOW);
}
else //显示所有帐户类型为现金的帐户
{
//AfxMessageBox(L"显示所有帐户类型为现金的帐户");
pAllCashDlg->ShowWindow(SW_SHOW);
pCashDlg->ShowWindow(SW_HIDE);
}
pAccountDlg->ShowWindow(SW_HIDE);
}
}
void CMoneyAnyWhereView::DisplayDlgGoods(CString filename)
{
/* pAllAssetDlg->ShowWindow(SW_HIDE);
pGoodsDlg->ShowWindow(SW_SHOW);*/
if(pAccountDlg!=NULL && pGoodsDlg!=NULL && pAllAssetDlg !=NULL)
{
if(filename!="NULL")
{
pGoodsDlg->m_strGoodsAccountName = filename;
pGoodsDlg->ReadIni(filename);
pAllAssetDlg->ShowWindow(SW_HIDE);
pGoodsDlg->ShowWindow(SW_SHOW);
}
else
{
pAllAssetDlg->ShowWindow(SW_SHOW);
pGoodsDlg->ShowWindow(SW_HIDE);
}
pAccountDlg->ShowWindow(SW_HIDE);
pAllCashDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_HIDE);
}
}
void CMoneyAnyWhereView::OnTaxcal()
{
CTaxComputeDlg DealDlg(this) ;
DealDlg.DoModal();
// TODO: Add your command handler code here
}
void CMoneyAnyWhereView::OnInterestcal()
{
CInterestComputeDlg DealDlg(this) ;
DealDlg.DoModal();
// TODO: Add your command handler code here
}
void CMoneyAnyWhereView::DisplayDlgPlan()
{
if(pAccountDlg!=NULL && pGoodsDlg!=NULL && pAllAssetDlg !=NULL)
{
pNotiDlg->ShowWindow(SW_HIDE);
pAssetDlg->ShowWindow(SW_HIDE);
pAllAssetDlg->ShowWindow(SW_HIDE);
pGoodsDlg->ShowWindow(SW_HIDE);
pAccountDlg->ShowWindow(SW_HIDE);
pAllCashDlg->ShowWindow(SW_HIDE);
pCashDlg->ShowWindow(SW_HIDE);
}
}
void CMoneyAnyWhereView::OnIrdabackup()
{
m_pAccountIni = new CIniReader(L"帐户.ini");
//装载和解析INI文件
if(! m_pAccountIni->Load())
{
::AfxMessageBox(L"Can not load ini");
delete m_pAccountIni;
m_pAccountIni = NULL;
return ;
}
if(! m_pAccountIni->Parse())
{
::AfxMessageBox(L"Invalid format ");
delete m_pAccountIni;
m_pAccountIni = NULL;
return ;
}
UINT uiResult = Send(m_pAccountIni->m_Buffer);
}
UINT CMoneyAnyWhereView::Send(LPCTSTR lpszMessage)
{
ASSERT(AfxIsValidString(lpszMessage));
if (_tcslen(lpszMessage) <= 0)
return IDS_ERROR_NO_MESSAGE;
CWaitCursor wc;
USES_CONVERSION;
//确定socket曾是活动的
CWinSock winSock;
//打开一个红外端口
CIrDASocket sd;
if (!sd.Open())
return IDS_ERROR_IRDA_NO_SOCKET;
//尝试发现其他设备
DEVICELIST deviceList = { 0 };
for (int nTry = 0; nTry < (LONG_TIMEOUT / 1000); nTry++)
{
if (!sd.EnumDevices(&deviceList, sizeof(DEVICELIST)))
return IDS_ERROR_IRDA_CANNOT_ENUMDEVS;
//如果发现设备则立刻退出
if (deviceList.numDevice > 0)
break;
::Sleep(1000);
}
if (deviceList.numDevice == 0)
return IDS_ERROR_NO_DEVICES_FOUND;
// 获得设备名 (ANSI)
LPCTSTR lpszDeviceName = A2CT(deviceList.Device[0].irdaDeviceName);
//询问是否连接
CString strCaption, strText;
strCaption.LoadString(IDS_MESSAGE_SEND);
strText.Format(IDS_MESSAGE_SENDTOHOST, lpszDeviceName);
if (MessageBox(strText, strCaption, MB_ICONQUESTION | MB_YESNO) != IDYES)
return 0;
wc.Restore();
// 发现设备,尝试连接
if (!sd.Connect(IRDA_SERVICENAME, deviceList.Device[0].irdaDeviceID, LONG_TIMEOUT))
return IDS_ERROR_IRDA_CANNOT_CONNECT;
// Send the length of the message to the server
u_long ulLength = htonl(_tcslen(lpszMessage));
//向服务端发送信息
if (!sd.Send((LPCVOID) T2CA(lpszMessage), _tcslen(lpszMessage), SHORT_TIMEOUT))
return IDS_ERROR_IRDA_CANNOT_SEND;
AfxMessageBox(L"数据传输成功!");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -