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

📄 stockdlg.cpp

📁 该项目是为PPC(PocketPc)使用者提供方便的理财事务.如,现金的借贷,债务处理,证券买卖,以及物品管 理等等。该项目的主要用户群是:PPC使用者.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// StockDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MoneyAnyWhere.h"
#include "StockDlg.h"
#include "StockDetailDlg.h"
#include "MakeStockDealBuyIn.h"
#include "StockSellOutDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CStockDlg dialog


CStockDlg::CStockDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CStockDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CStockDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CStockDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CStockDlg)
	DDX_Control(pDX, IDC_LIST_STOCK, m_ctrStockList);
	DDX_Control(pDX, IDC_BTNSTOCKOPERATEMENU, m_btnOper);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CStockDlg, CDialog)
	//{{AFX_MSG_MAP(CStockDlg)
	ON_WM_PAINT()
	ON_COMMAND(ID_MENUBTN_BUYIN,OnBuyIn)
	ON_COMMAND(ID_MENUBTN_SELLOUT,OnSellOut)
	ON_COMMAND(ID_MENUBTN_ADDCASH, OnAdd)
	ON_COMMAND(ID_MENUBTN_MODIFYACCOUNT, OnModify)
	ON_COMMAND(ID_MENUBTN_DELSTOCK, OnDelete)
	ON_BN_CLICKED(IDC_BTNSTOCKHELP, OnBtnstockhelp)
	ON_BN_CLICKED(IDC_BTNSTOCKDETAIL, OnBtnstockdetail)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_STOCK, OnDblclkListStock)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CStockDlg message handlers

BOOL CStockDlg::OnInitDialog() 
{
	
	CDialog::OnInitDialog();
	m_strMoneyType=L"人民币";  //默认是RMB
	m_strBeginDate=L"2004-01-01";  //默认是2005-01-01
	m_strLastDate=L"2005-02-23";  //默认是2005-01-01
	m_iBeginSum=0;
	m_iSumOut=0;
	m_iSumIn=0;
	m_iLeft=0;
	m_iCount = 0;
	m_btnOper.SetMenu(IDR_MENUBTN_STOCK, m_hWnd);
	m_btnOper.SetFlat(FALSE);
	
	//改变列表的背景色
	m_ctrStockList.SetBkColor(COLORREF(RGB(251,251,249)));
	m_ctrStockList.SetExtendedStyle(LVS_EX_FULLROWSELECT);//|LVS_EX_GRIDLINES);
	//设置表头格式为Account/Name/Date
	m_ctrStockList.SetHeadings(_T("交易日期,50;股票名称,50;股票价格,50;出入,50;数量,50"));
	//宽度设置
	m_ctrStockList.SetColumnWidth(0,50);
	m_ctrStockList.SetColumnWidth(1,50);
	m_ctrStockList.SetColumnWidth(2,40);
	m_ctrStockList.SetColumnWidth(3,50);
	m_ctrStockList.SetColumnWidth(4,50);		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CStockDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	CRect	rect;
	this->GetClientRect(&rect);
	CBrush	*pBrush = new CBrush(COLORREF(RGB(227,234,206)));
	dc.FillRect(rect,pBrush);	
	dc.SetBkColor(COLORREF(RGB(227,234,206)));
	dc.DrawText(m_strStockName,CRect(0,0,100,20),NULL);
	CString	str;

	str.Format(L"帐户类型:(%s)证券",m_strMoneyType);
	dc.DrawText(str,CRect(0,160,140,180),NULL);
	str.Format(L"合计买入:%d",m_iSumIn);
	dc.DrawText(str,CRect(0,180,140,200),NULL);
	str.Format(L"合计卖出:%d",m_iSumOut);
	dc.DrawText(str,CRect(0,200,140,220),NULL);
	str.Format(L"帐户余额:%d",m_iLeft);
	dc.DrawText(str,CRect(140,200,240,220),NULL);
	
	
}

BOOL CStockDlg::ReadIni(CString file)
{
	m_iBeginSum = 0;
	m_iSumOut=0;
	m_iSumIn=0;
	m_iLeft=0;
	m_strStockName = file ;
	m_ctrStockList.DeleteAllItems();
	file +=".ini";

//	file = "\\Program Files\\理财能手\\Data\\"+file;

	pStockIni = new CIniReader(file);
	pStockInfo = new CIniReader(file);
	//装载和解析INI文件
	if(! pStockInfo->Load())
	{
		::AfxMessageBox(L"Can not load ini");
		delete pStockInfo;
		pStockInfo = NULL;
		return FALSE;
	}
	
	if(! pStockInfo->Parse())
	{
		::AfxMessageBox(L"Invalid format  ");
		delete pStockInfo;
		pStockInfo = NULL;
		return FALSE;
	}
	CSection	StockInfo= (*pStockInfo)[L"Info"];
	
	POSITION _pos = StockInfo.m_item.GetStartPosition();
	
	while( _pos != NULL)
	{
		String _key;
		String _value;
		
		StockInfo.m_item.GetNextAssoc(_pos, _key, _value);
		if((CString)_key==(CString)"deal_count") //获得该帐户一共有多少笔交易
		{
			m_iCount = _wtoi(_value);
		}	
		if((CString)_key==(CString)"money_type")//获得该帐户的币种
		{
			
			m_strMoneyType =(CString)(_value);
		}
		if((CString)_key==(CString)"amount")//获得该帐户的开户金额
		{
			m_iBeginSum =_wtoi(_value);
			
		}
		if((CString)_key==(CString)"date")//获得该帐户的开户日期
		{
			m_strBeginDate =(CString)(_value);
			
		}
	}
	
	////////////////////////////////////////////////////////////////////
	//装载和解析INI文件
	if(! pStockIni->Load())
	{
		::AfxMessageBox(L"Can not load ini");
		delete pStockIni;
		pStockIni = NULL;
		return FALSE;
	}
	
	if(! pStockIni->Parse())
	{
		::AfxMessageBox(L"Invalid format  ");
		delete pStockIni;
		pStockIni = NULL;
		return FALSE;
	}

	
	for(int i=0;i<m_iCount;i++)
	{
		CString	str;
		str.Format(L"%d",i);
		CSection	Info= (*pStockIni)[str];
		
		POSITION pos = Info.m_item.GetStartPosition();
		m_pCStock[i] = new CStock();
		while( pos != NULL)
		{
			String key;
			String value;
			
			Info.m_item.GetNextAssoc(pos, key, value);
			SetStock(key,value,i);
			
		}
		if(m_pCStock [i]->deal_inout=="卖出")
		{
			
			
			m_iSumOut +=m_pCStock[i]->price * m_pCStock[i]->stock_amount ;
		}
		else
		{
			m_iSumIn  +=m_pCStock[i]->price * m_pCStock[i]->stock_amount ;
		}
	//	_T("交易日期,50;股票名称,50;股票价格,50;出入,50;数量,50")
		CString str2,strTmp;
		str2.Format(L"%f",m_pCStock[i]->price);
	//	AfxMessageBox(str2);
		strTmp.Format(L"%d",m_pCStock[i]->stock_amount);
		
		m_ctrStockList.AddItem(m_pCStock[i]->deal_time,m_pCStock[i]->stock_name,str2,m_pCStock[i]->deal_inout,strTmp);
	}
	m_iLeft = m_iBeginSum + m_iSumIn - m_iSumOut;
	return true;
}


void CStockDlg::SetStock(String key,String value,int i)
{
	
	if(key=="deal_time")
		m_pCStock[i]->deal_time = value;
	else
		if(key=="stock_name")
			m_pCStock[i]->stock_name = value;
	else
		if(key=="stock_amount")
			m_pCStock[i]->stock_amount = _wtoi(value);
	else
		if(key=="stock_code")
			m_pCStock[i]->stock_code = value;
	else 
		if(key=="price")
			m_pCStock[i]->price = wcstod(value,NULL);
	
	else
		if(key=="deal_inout")
			m_pCStock[i]->deal_inout = value;
}

//显示现金概况
void CStockDlg::OnBtnstockdetail() 
{
	CString strTmpAmout;
	strTmpAmout.Format(L"%d",m_iLeft);

	CStockDetailDlg dlg(this);
	dlg.m_strStockType = m_strMoneyType; 
	dlg.m_strLastDealDate = m_strLastDate;
	dlg.m_strStockName = m_strStockName;
	dlg.m_strLeftAmount = strTmpAmout;
	dlg.m_strStockDate = m_strBeginDate;
	dlg.DoModal();

}
void CStockDlg::OnAdd()
{
/*
	CString	str,str2;
	CString	tmpStr;
	CSection tmpSec,tmpSec2;
	CStock	*pStock = new CStock();
	CNewStockBuyInDlg BuyInDlg(this) ;
	BuyInDlg.m_strDealAccount = m_strStockName;
	if( BuyInDlg.DoModal() == IDOK )
	{
		
		pStock->deal_money = BuyInDlg.m_iDealMoney;
		pStock->deal_inout = BuyInDlg.m_strInOrOut ;
		pStock->Account_Type = BuyInDlg.m_strCategory;
		pStock->deal_time = BuyInDlg.m_strDealTime ;
		
		
		pStockIni = new CIniReader(m_strStockName+".ini");
		
		if(! pStockIni->Load())
		{
			::AfxMessageBox(L"Can not load ini");
			delete pStockIni;
			pStockIni = NULL;
			return ;
		}
		
		if(! pStockIni->Parse())
		{
			::AfxMessageBox(L"Invalid format  ");
			delete pStockIni;
			pStockIni = NULL;
			return ;
		}
		//向文件中增加信息:
		tmpSec2.m_SectionName.Format(L"%d",m_iCount);
		m_iCount++;
		tmpStr.Format(L"%d",m_iCount);
		pStockIni->AddPair(L"deal_count",tmpStr,L"Info"); //将帐户数自增1
		pStockIni->AddPair(L"deal_time",pStock->deal_time,tmpSec2.m_SectionName);
		pStockIni->AddPair(L"deal_type",pStock->Account_Type,tmpSec2.m_SectionName);
		tmpStr.Format(L"%d",pStock->deal_money);
		pStockIni->AddPair(L"deal_money",tmpStr,tmpSec2.m_SectionName);
		pStockIni->AddPair(L"deal_inout",pStock->deal_inout,tmpSec2.m_SectionName);
		pStockIni->Store();
		ReadIni(m_strStockName);
	}
	
	if(pStock)

⌨️ 快捷键说明

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