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

📄 simuaddopdlg.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
字号:
// SimuAddOpDlg.cpp : implementation file
//

#include "stdafx.h"

#include "SimuAddOpDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSimuAddOpDlg dialog


CSimuAddOpDlg::CSimuAddOpDlg(CWnd* pParent /*=NULL*/)
	: CXFDialog(CSimuAddOpDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSimuAddOpDlg)
	m_time = 0;
	m_strShare = _T("");
	m_strSharePrice = _T("");
	m_strRateCost = _T("");
	//}}AFX_DATA_INIT
	m_time	=	CSPTime::GetCurrentTime();
	m_strShare = _T("");
	m_strSharePrice = _T("");
	m_strRateCost = _T("0");

	m_pStrategy	=	NULL;
}

void CSimuAddOpDlg::SetStrategy( CStrategy * pStrategy )
{
	m_pStrategy	=	pStrategy;
}

/***
	自动设定交易费用
*/
void CSimuAddOpDlg::AutoSetRateCost( )
{
	UpdateData( );

	if( NULL == m_pStrategy )
		return;

	// Share
	if( !IsNumber( m_strShare, TRUE ) || !IsNumber( m_strSharePrice, TRUE ) || !IsNumber( m_strRateCost, TRUE ) )
	{
		AfxMessageBox( IDS_SIMUADDOP_NOTNUMBER, MB_OK|MB_ICONINFORMATION );
		return;
	}

	DWORD	dwShare		=	atol(m_strShare);
	double	dSharePrice	=	atol(m_strSharePrice);
	
	CString	strStockCode	=	m_comboStock.GetSelectedStockCode();
	CStockInfo	info;
	if( !AfxGetStockContainer().GetStockInfo( strStockCode, &info )
		|| !info.IsValidStock() )
		return;
	m_strRateCost.Format( "%.2f", dwShare*dSharePrice*m_pStrategy->GetRateParam().GetRate(info) );
	UpdateData( FALSE );
}

void CSimuAddOpDlg::DoDataExchange(CDataExchange* pDX)
{
	CXFDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSimuAddOpDlg)
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDOK, m_btnOK);
	DDX_Control(pDX, IDC_OPERATE, m_comboOperate);
	DDX_Control(pDX, IDC_STOCK, m_comboStock);
	DDX_DateTimeCtrl(pDX, IDC_TIME, m_time);
	DDX_Text(pDX, IDC_SHARE, m_strShare);
	DDX_Text(pDX, IDC_SHAREPRICE, m_strSharePrice);
	DDX_Text(pDX, IDC_RATECOST, m_strRateCost);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSimuAddOpDlg, CXFDialog)
	//{{AFX_MSG_MAP(CSimuAddOpDlg)
	ON_EN_CHANGE(IDC_SHARE, OnChangeShare)
	ON_EN_CHANGE(IDC_SHAREPRICE, OnChangeShareprice)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSimuAddOpDlg message handlers

BOOL CSimuAddOpDlg::OnInitDialog() 
{
	CXFDialog::OnInitDialog();
	
	ASSERT( m_pStrategy );

	// Operate
	CString	strBuy, strSell;
	strBuy.LoadString( IDS_SIMUREPORT_BUY );
	strSell.LoadString( IDS_SIMUREPORT_SELL );
	m_comboOperate.SetItemData( m_comboOperate.AddString( strBuy ), STRATEGY_OPTYPE_BUY );
	m_comboOperate.SetItemData( m_comboOperate.AddString( strSell ), STRATEGY_OPTYPE_SELL );
	m_comboOperate.SetCurSel( 0 );

	// Stock
	m_comboStock.InitStocks( m_pStrategy->GetStocks(), FALSE, FALSE, FALSE );
	m_comboStock.SetAutoHide( FALSE );
	m_comboStock.SetCurSel( 0 );
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSimuAddOpDlg::OnOK() 
{
	UpdateData( );

	OPRECORD	record;
	memset( &record, 0, sizeof(record) );
	
	// Time
	CSPTime	tmDay( m_time.GetYear(), m_time.GetMonth(), m_time.GetDay(), 0, 0, 0 );
	record.time	=	tmDay.GetTime();

	// Stock
	CString	strStockCode	=	m_comboStock.GetSelectedStockCode();
	if( strStockCode.GetLength() <= 0 )
	{
		AfxMessageBox( IDS_SIMUADDOP_NOSTOCK, MB_OK|MB_ICONINFORMATION );
		return;
	}
	strncpy( record.szCode, strStockCode.GetBuffer(sizeof(record.szCode)+1), sizeof(record.szCode) );
	strStockCode.ReleaseBuffer( );

	// Operate
	int	nSel	=	m_comboOperate.GetCurSel();
	if( CB_ERR != nSel )
		record.lOpType	=	m_comboOperate.GetItemData(nSel);

	// Share
	if( !IsNumber( m_strShare, FALSE ) || !IsNumber( m_strSharePrice, FALSE ) || !IsNumber( m_strRateCost, TRUE ) )
	{
		AfxMessageBox( IDS_SIMUADDOP_NOTNUMBER, MB_OK|MB_ICONINFORMATION );
		return;
	}

	record.dwShare		=	atol(m_strShare);
	record.dSharePrice	=	atol(m_strSharePrice);
	record.dRateCost	=	atol(m_strRateCost);

	COpRecordContainer & container = m_pStrategy->RealGetOpRecord();
	if( container.GetSize() > 0 && container.ElementAt(container.GetSize()-1).time > record.time
		&& IDYES != AfxMessageBox( IDS_SIMUADDOP_ADDWILLDELETE, MB_YESNO ) )
	{
		return;
	}

	if( !m_pStrategy || !m_pStrategy->RealAddOpRecordStrict( record ) )
	{
		AfxMessageBox( IDS_SIMUADDOP_LOGICERROR, MB_OK|MB_ICONINFORMATION );
		return;
	}
	
	CXFDialog::OnOK();
}

void CSimuAddOpDlg::OnChangeShare() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CXFDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	AutoSetRateCost( );
}

void CSimuAddOpDlg::OnChangeShareprice() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CXFDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	AutoSetRateCost( );
}

⌨️ 快捷键说明

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