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