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

📄 moneyanywhereview.cpp

📁 该项目是为PPC(PocketPc)使用者提供方便的理财事务.如,现金的借贷,债务处理,证券买卖,以及物品管 理等等。该项目的主要用户群是:PPC使用者.
💻 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 + -