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

📄 graphview.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
// GraphView.cpp : implementation of the CGraphView class
//

#include "stdafx.h"

#include "../StaticDoc.h"
#include "GraphView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CGraphView

#define	IDC_GRAPHVIEW_REPORTTAB	200

#define	GV_REPORTTAB_PARAM			0	// 参数
#define	GV_REPORTTAB_COST			1	// 成本
#define	GV_REPORTTAB_FLAME			2	// 火焰山
#define	GV_REPORTTAB_ACTIVITY		3	// 活跃度

IMPLEMENT_DYNCREATE(CGraphView, CView)

BEGIN_MESSAGE_MAP(CGraphView, CView)
	//{{AFX_MSG_MAP(CGraphView)
	ON_WM_CREATE()
	ON_WM_WINDOWPOSCHANGED()
	ON_WM_DESTROY()
	ON_WM_ERASEBKGND()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_KEYDOWN()
	ON_COMMAND(ID_VIEW_PDAY, OnViewPday)
	ON_COMMAND(ID_VIEW_PWEEK, OnViewPweek)
	ON_COMMAND(ID_VIEW_PMONTH, OnViewPmonth)
	ON_COMMAND(ID_VIEW_PMIN5, OnViewPmin5)
	ON_COMMAND(ID_VIEW_PMIN15, OnViewPmin15)
	ON_COMMAND(ID_VIEW_PMIN30, OnViewPmin30)
	ON_COMMAND(ID_VIEW_PMIN60, OnViewPmin60)
	ON_COMMAND(ID_VIEW_LEFT, OnViewLeft)
	ON_COMMAND(ID_VIEW_RIGHT, OnViewRight)
	ON_COMMAND(ID_VIEW_PAGELEFT, OnViewPageleft)
	ON_COMMAND(ID_VIEW_PAGERIGHT, OnViewPageright)
	ON_COMMAND(ID_VIEW_HOME, OnViewHome)
	ON_COMMAND(ID_VIEW_END, OnViewEnd)
	ON_COMMAND(ID_VIEW_ZOOMIN, OnViewZoomin)
	ON_COMMAND(ID_VIEW_ZOOMOUT, OnViewZoomout)
	ON_COMMAND(ID_VIEW_PREV, OnViewPrev)
	ON_COMMAND(ID_VIEW_NEXT, OnViewNext)
	ON_COMMAND(ID_VIEW_INSERT, OnViewInsert)
	ON_COMMAND(ID_VIEW_NORESUMEDR, OnViewNoresumedr)
	ON_COMMAND(ID_VIEW_RESUMEDRUP, OnViewResumedrup)
	ON_COMMAND(ID_VIEW_RESUMEDRDOWN, OnViewResumedrdown)
	ON_COMMAND(ID_VIEW_MAINDATACLOSE, OnViewMaindataclose)
	ON_COMMAND(ID_VIEW_MAINDATAOPEN, OnViewMaindataopen)
	ON_COMMAND(ID_VIEW_MAINDATAAVERAGE, OnViewMaindataaverage)
	ON_COMMAND(ID_VIEW_KLINECANDLE, OnViewKlinecandle)
	ON_COMMAND(ID_VIEW_KLINEAMERICA, OnViewKlineamerica)
	ON_COMMAND(ID_VIEW_KLINETOWER, OnViewKlinetower)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PDAY, OnUpdateViewPday)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PWEEK, OnUpdateViewPweek)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PMONTH, OnUpdateViewPmonth)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PMIN5, OnUpdateViewPmin5)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PMIN15, OnUpdateViewPmin15)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PMIN30, OnUpdateViewPmin30)
	ON_UPDATE_COMMAND_UI(ID_VIEW_PMIN60, OnUpdateViewPmin60)
	ON_UPDATE_COMMAND_UI(ID_VIEW_NORESUMEDR, OnUpdateViewNoresumedr)
	ON_UPDATE_COMMAND_UI(ID_VIEW_RESUMEDRUP, OnUpdateViewResumedrup)
	ON_UPDATE_COMMAND_UI(ID_VIEW_RESUMEDRDOWN, OnUpdateViewResumedrdown)
	ON_UPDATE_COMMAND_UI(ID_VIEW_MAINDATACLOSE, OnUpdateViewMaindataclose)
	ON_UPDATE_COMMAND_UI(ID_VIEW_MAINDATAOPEN, OnUpdateViewMaindataopen)
	ON_UPDATE_COMMAND_UI(ID_VIEW_MAINDATAAVERAGE, OnUpdateViewMaindataaverage)
	ON_UPDATE_COMMAND_UI(ID_VIEW_KLINECANDLE, OnUpdateViewKlinecandle)
	ON_UPDATE_COMMAND_UI(ID_VIEW_KLINEAMERICA, OnUpdateViewKlineamerica)
	ON_UPDATE_COMMAND_UI(ID_VIEW_KLINETOWER, OnUpdateViewKlinetower)
	ON_NOTIFY(TCN_SELCHANGE, IDC_GRAPHVIEW_REPORTTAB, OnSelchangeReporttab)
	ON_COMMAND(ID_VIEW_HIDETHISTECH, OnViewHidethistech)
	ON_UPDATE_COMMAND_UI(ID_VIEW_HIDETHISTECH, OnUpdateViewHidethistech)
	ON_COMMAND(ID_VIEW_THISTECHPARAM, OnViewThistechparam)
	ON_UPDATE_COMMAND_UI(ID_VIEW_THISTECHPARAM, OnUpdateViewThistechparam)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
	ON_COMMAND_RANGE(ID_VIEW_TECH_START, ID_VIEW_TECH_END, OnViewTechRange)
	ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_TECH_START, ID_VIEW_TECH_END, OnUpdateViewTechRange)
	ON_MESSAGE(WM_USER_GETVIEWTITLE, OnGetViewTitle)
	ON_MESSAGE(WM_USER_GETVIEWCMDID, OnGetViewCmdid)
	ON_MESSAGE(WM_USER_COLORCHANGE, OnColorChange)
	ON_MESSAGE(WM_USER_MYRBUTTONDOWN, OnMyRButtonDown)
	ON_MESSAGE(WM_APP_STKRECEIVER_DATA, OnStkReceiverData)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGraphView construction/destruction

CGraphView::CGraphView()
{
}

CGraphView::~CGraphView()
{
}

void CGraphView::ResetClientRect( )
{
	CRect rectClient;
	GetClientRect( &rectClient );
	m_graph.ResetClient( rectClient );
}

void CGraphView::ChangeKType( int ktype )
{
	m_graph.SetKType( ktype );
	m_graph.ResetIndex( );
	Invalidate( );
}

void CGraphView::ChangeKFormat( int kformat )
{
	m_graph.SetKFormat( kformat );
	m_graph.ResetIndex( );
	Invalidate( );
}

void CGraphView::OnToggleKType()
{
	int ktype = m_graph.GetKType();
	ktype	++;
	if( ktype > CKData::ktypeMax )
		ktype	=	CKData::ktypeMin;
	ChangeKType( ktype );
}

void CGraphView::OnToggleKFormat( int kformat )
{
	int nOld = m_graph.GetKFormat();
	if( nOld == kformat )
		ChangeKFormat( CKData::formatOriginal );
	else
		ChangeKFormat( kformat );
}

void CGraphView::ChangeMaindataType( int maindatatype )
{
	m_graph.SetMaindataType( maindatatype );
	m_graph.ResetIndex( );
	Invalidate( );
}

void CGraphView::ChangeKLineMode( int klineMode )
{
	m_graph.SetKLineMode( klineMode );
	m_graph.ResetIndex( );
	Invalidate( );
}

void CGraphView::OnTechParametersChange( )
{
	m_graph.ClearTechniqueCache( );
}

BOOL CGraphView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

void CGraphView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	OnUpdate( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
}

void CGraphView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) 
{
	// TODO: Add your specialized code here and/or call the base class
	if( UPDATE_HINT_GRAPHVIEW != lHint && UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint )
		return;
	if( !IsWindowVisible() )
		return;
	SetFocus( );

	CStockInfo	info;
	if( AfxGetProfile().GetCurrentStock( &info ) )
	{
		m_graph.SetCurStock( info );
		m_graph.PrepareStockData( UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint );
	}
	else
	{
		m_graph.SetCurStock( STKLIB_CODE_MAIN );
		m_graph.PrepareStockData( UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA != lHint );
		AfxGetProfile().SetCurrentStock( STKLIB_CODE_MAIN, FALSE );
	}

	Invalidate( );

	CMainFrame	* pFrame = AfxGetMainFrame();
	if( pFrame )
		pFrame->m_SearchBox.SetCurrentWindowText( );
}

BOOL CGraphView::PreTranslateMessage(MSG* pMsg) 
{
	if( WM_KEYDOWN == pMsg->message )
	{
		switch( pMsg->wParam )
		{
		case VK_F5:
			{
				AfxSwitchToStaticView( RUNTIME_CLASS(CRealTimeView) );
				CRealTimeView * pView = AfxGetRealTimeView( );
				if( pView )
					pView->ChangeDrawMode( CRealTime::modePriceLine );
			}
			return TRUE;
		}
	}
	
	return CView::PreTranslateMessage(pMsg);
}

/////////////////////////////////////////////////////////////////////////////
// CGraphView drawing

void CGraphView::OnDraw(CDC* pDC)
{
	CStaticDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CRect rectClient;
	GetClientRect(&rectClient);

	CDC memDC;
	memDC.CreateCompatibleDC(pDC);
	CBitmap memBitmap;
	memBitmap.CreateCompatibleBitmap(pDC, rectClient.Width(), rectClient.Height());

	memDC.SelectObject(&memBitmap);

	m_graph.Redraw(&memDC, rectClient);
	pDC->BitBlt(rectClient.left, rectClient.top, rectClient.Width(), rectClient.Height(), &memDC, 0, 0, SRCCOPY);

	memBitmap.DeleteObject();
}

/////////////////////////////////////////////////////////////////////////////
// CGraphView printing

BOOL CGraphView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CGraphView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: add extra initialization before printing
	CView::OnBeginPrinting( pDC, pInfo );
}

void CGraphView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: add cleanup after printing
	CView::OnEndPrinting( pDC, pInfo );
}

void CGraphView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: add customized printing code here
	pDC->SetMapMode( MM_ISOTROPIC );
	CRect	rectClient( 0, 0, 1020, 586 );
	// GetClientRect( &rectClient );
	pDC->SetWindowOrg( rectClient.left, rectClient.top );
	pDC->SetWindowExt( rectClient.Width(), rectClient.Height() );
	pDC->SetViewportOrg( pInfo->m_rectDraw.left, pInfo->m_rectDraw.top );
	pDC->SetViewportExt( pInfo->m_rectDraw.Width(), pInfo->m_rectDraw.Height() );
	
	m_graph.Redraw( pDC, rectClient );
	CRect	rectKData	=	m_graph.GetKDataRect();
	rectKData.InflateRect( -2, -1, 2, 1 );
	m_graph.DrawKData( pDC, m_graph.GetKDataRect() );
	// CView::OnPrint(pDC,pInfo);
}

/////////////////////////////////////////////////////////////////////////////
// CGraphView diagnostics

#ifdef _DEBUG
void CGraphView::AssertValid() const
{
	CView::AssertValid();
}

void CGraphView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CGraphView message handlers

int CGraphView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	CFont	font;
	if( !font.CreateStockObject( DEFAULT_GUI_FONT ) )
		font.CreateStockObject( ANSI_VAR_FONT );
	SetFont( &font );

	m_graph.SetParent( this );

	// tab
	if (!m_wndReportTab.Create(WS_VISIBLE|WS_CHILD,CRect(0,0,180,19),this,IDC_GRAPHVIEW_REPORTTAB))
		return -1;
	
	CString	strName;
	strName.LoadString( IDS_GRAPHTAB_PARAM );

⌨️ 快捷键说明

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