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

📄 graphview.cpp.svn-base

📁 股票软件源码
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
	m_wndReportTab.Addtab( this, strName, -1);
	strName.LoadString( IDS_GRAPHTAB_COST );
	m_wndReportTab.Addtab( this, strName, -1);
	strName.LoadString( IDS_GRAPHTAB_FLAME );
	m_wndReportTab.Addtab( this, strName, -1);
	strName.LoadString( IDS_GRAPHTAB_ACTIVITY );
	m_wndReportTab.Addtab( this, strName, -1);

	m_wndReportTab.SetColorTabs(AfxGetProfile().GetColor(CColorClass::clrGraphBK));
	m_wndReportTab.SetSelectTabColor( AfxGetProfile().GetColor(CColorClass::clrGraphBK),
									AfxGetProfile().GetColor(CColorClass::clrTitle) );
	m_wndReportTab.SetAutoAjust(FALSE);
	m_wndReportTab.ShowButtonClose(FALSE);
	m_wndReportTab.SetALingTabs( CGuiTabWnd::ALN_BOTTOM );

	// 实时行情刷新
	AfxGetStkReceiver().AddRcvDataWnd( GetSafeHwnd() );

	return 0;
}

void CGraphView::OnSelchangeReporttab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	int nCur = m_wndReportTab.GetCurtab();
	CRect	rect = m_wndReportTab.GetTabRect( nCur );

	switch( nCur )
	{
	case GV_REPORTTAB_PARAM:
		m_graph.SetReportWhat( CStockGraph::reportParam );
		break;
	case GV_REPORTTAB_COST:
		m_graph.SetReportWhat( CStockGraph::reportCost );
		break;
	case GV_REPORTTAB_FLAME:
		m_graph.SetReportWhat( CStockGraph::reportFlame );
		break;
	case GV_REPORTTAB_ACTIVITY:
		m_graph.SetReportWhat( CStockGraph::reportActivity );
		break;
	default:;
	}
	m_graph.DrawReportRegion( NULL );
	
	*pResult = 0;
}

void CGraphView::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
{
	CView::OnWindowPosChanged(lpwndpos);

	if( !(lpwndpos->flags & SWP_NOSIZE) || !(lpwndpos->flags & SWP_NOMOVE)
		|| (lpwndpos->flags & SWP_SHOWWINDOW) )
	{
		CRect	rect;
		GetClientRect( &rect );
		if( ::IsWindow(m_wndReportTab.GetSafeHwnd()) )
			m_wndReportTab.SetWindowPos( NULL, rect.right-172, rect.bottom-19, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW );
	}
}

void CGraphView::OnDestroy() 
{
	// 停止行情刷新通知消息
	AfxGetStkReceiver().RemoveRcvDataWnd( GetSafeHwnd() );

	CView::OnDestroy();
}

void CGraphView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	// TODO: Add your specialized code here and/or call the base class
	if( bActivate )
		OnUpdate( NULL, UPDATE_HINT_GRAPHVIEW_NOTRELOADDATA, NULL );

	CView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}

BOOL CGraphView::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	if( pDC && pDC->IsKindOf(RUNTIME_CLASS(CDC)) )
	{
		CRect rect;
		GetClientRect( &rect );
		CBrush brush;
		brush.CreateSolidBrush( AfxGetProfile().GetColor(CColorClass::clrGraphBK) );
		pDC->FillRect( &rect, &brush );
		return TRUE;
	}
	return CView::OnEraseBkgnd(pDC);
}

LRESULT CGraphView::OnGetViewTitle(WPARAM wParam, LPARAM lParam)
{
	CString	strTitle;
	strTitle.LoadString( IDS_TITLE_GRAPHVIEW );

	lstrcpyn((LPTSTR)lParam, (LPCTSTR)strTitle, wParam);
	if ((int)wParam > strTitle.GetLength())
		wParam = strTitle.GetLength();
	return wParam;
}

LRESULT CGraphView::OnGetViewCmdid(WPARAM wParam, LPARAM lParam)
{
	if( lParam )
		*((LPARAM *)lParam)	=	ID_VIEW_GRAPH;
	return 0L;
}

LRESULT CGraphView::OnColorChange(WPARAM wParam, LPARAM lParam)
{
	m_wndReportTab.SetColorTabs(AfxGetProfile().GetColor(CColorClass::clrGraphBK));
	m_wndReportTab.SetSelectTabColor( AfxGetProfile().GetColor(CColorClass::clrGraphBK),
									AfxGetProfile().GetColor(CColorClass::clrTitle) );

	Invalidate( );
	return 0L;
}

LRESULT CGraphView::OnStkReceiverData(WPARAM wParam, LPARAM lParam)
{
	return m_graph.OnStkReceiverData(wParam,lParam);
}

void CGraphView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	m_graph.OnLButtonDown( nFlags, point, IsSHIFTpressed(), IsCTRLpressed() );
	CView::OnLButtonDown(nFlags, point);
}

void CGraphView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	m_graph.OnLButtonUp( nFlags, point, IsSHIFTpressed(), IsCTRLpressed() );
	CView::OnLButtonUp(nFlags, point);
}

void CGraphView::OnMouseMove(UINT nFlags, CPoint point) 
{
	m_graph.OnMouseMove( nFlags, point );
	CView::OnMouseMove(nFlags, point);
}

void CGraphView::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	m_graph.OnLButtonDblClk( nFlags, point, IsSHIFTpressed(), IsCTRLpressed() );
	CView::OnLButtonDblClk(nFlags, point);
}

LRESULT CGraphView::OnMyRButtonDown(WPARAM wParam, LPARAM lParam) 
{
	UINT nFlags = wParam;
	CPoint point( (lParam & 0x0000ffff), ((lParam & 0xffff0000) >> 16) );
	m_graph.OnRButtonDown( nFlags, point, IsSHIFTpressed(), IsCTRLpressed() );
	return 0L;
}

void CGraphView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	switch( nChar )
	{
	case VK_RETURN:
		m_graph.OnReturn( IsSHIFTpressed(), IsCTRLpressed() );
		break;
	case VK_UP:
		m_graph.ExpandUp( IsSHIFTpressed() );
		break;
	case VK_DOWN:
		m_graph.ExpandDown( IsSHIFTpressed() );
		break;
	case VK_LEFT:
		if(IsCTRLpressed())
			m_graph.PageLeft( IsSHIFTpressed() );
		else
			m_graph.MoveLeft( IsSHIFTpressed() );
		break;
	case VK_RIGHT:
		if(IsCTRLpressed())
			m_graph.PageRight( IsSHIFTpressed() );
		else
			m_graph.MoveRight( IsSHIFTpressed() );
		break;
	case VK_HOME:
		m_graph.MoveHome( IsSHIFTpressed() );
		break;
	case VK_END:
		m_graph.MoveEnd( IsSHIFTpressed() );
		break;
	case VK_PRIOR:	//	Page Up
		OnViewPrev( );
		break;
	case VK_NEXT:	//	Page Down
		OnViewNext( );
		break;
	case VK_F8:
		OnToggleKType( );
		break;
	case VK_ESCAPE:
		m_graph.ResetIndexCurrent( );
		Invalidate( );
		break;
	}

	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}

void CGraphView::OnViewPday()	{	ChangeKType( CKData::ktypeDay );	}
void CGraphView::OnViewPweek()	{	ChangeKType( CKData::ktypeWeek );	}
void CGraphView::OnViewPmonth()	{	ChangeKType( CKData::ktypeMonth );	}
void CGraphView::OnViewPmin5()	{	ChangeKType( CKData::ktypeMin5 );	}
void CGraphView::OnViewPmin15()	{	ChangeKType( CKData::ktypeMin15 );	}
void CGraphView::OnViewPmin30()	{	ChangeKType( CKData::ktypeMin30 );	}
void CGraphView::OnViewPmin60()	{	ChangeKType( CKData::ktypeMin60 );	}

void CGraphView::OnUpdateViewPday(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeDay == m_graph.GetKType() );		}
void CGraphView::OnUpdateViewPweek(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeWeek == m_graph.GetKType() );	}
void CGraphView::OnUpdateViewPmonth(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeMonth == m_graph.GetKType() );	}
void CGraphView::OnUpdateViewPmin5(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeMin5 == m_graph.GetKType() );	}
void CGraphView::OnUpdateViewPmin15(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeMin15 == m_graph.GetKType() );	}
void CGraphView::OnUpdateViewPmin30(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeMin30 == m_graph.GetKType() );	}
void CGraphView::OnUpdateViewPmin60(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::ktypeMin60 == m_graph.GetKType() );	}

void CGraphView::OnViewLeft()		{	m_graph.MoveLeft( );	}
void CGraphView::OnViewRight()		{	m_graph.MoveRight( );	}
void CGraphView::OnViewPageleft()	{	m_graph.PageLeft( );	}
void CGraphView::OnViewPageright()	{	m_graph.PageRight( );	}
void CGraphView::OnViewHome()		{	m_graph.MoveHome( );	}
void CGraphView::OnViewEnd()		{	m_graph.MoveEnd( );		}

void CGraphView::OnViewZoomin()		{	m_graph.ExpandUp( );	}
void CGraphView::OnViewZoomout()	{	m_graph.ExpandDown( );	}

void CGraphView::OnViewPrev() 
{
	CStockInfo	info;
	if( AfxGetProfile().GetPrevStock( &info ) )
		OnUpdate( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
}
void CGraphView::OnViewNext() 
{
	CStockInfo	info;
	if( AfxGetProfile().GetNextStock( &info ) )
		OnUpdate( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
}
void CGraphView::OnViewInsert()
{
	m_graph.OnInsert( );
}

void CGraphView::OnViewTechRange( UINT nCmdID )
{
	if( nCmdID < ID_VIEW_TECH_START || nCmdID > ID_VIEW_TECH_END )
	{
		ASSERT( FALSE );
		return;
	}

	UINT	nID	=	nCmdID - ID_VIEW_TECH_START;
	if( nID > STT_MAX )
		nID = nID-STT_MAX-1+STT_USER_MIN;
	AfxGetProfile().ToggleGraphViewTech( nID );

	CRect	rectClient;
	GetClientRect( &rectClient );
	m_graph.ResetClient(rectClient );
	Invalidate( );
}

void CGraphView::OnUpdateViewTechRange(CCmdUI* pCmdUI)
{
	UINT	nCmdID	=	pCmdUI->m_nID;
	if( nCmdID < ID_VIEW_TECH_START || nCmdID > ID_VIEW_TECH_END )
	{
		ASSERT( FALSE );
		return;
	}

	UINT	nID	=	nCmdID - ID_VIEW_TECH_START;
	if( nID > STT_MAX )
		nID = nID-STT_MAX-1+STT_USER_MIN;
	pCmdUI->SetCheck( AfxGetProfile().IsGraphTechShow( nID ) );
}

// K Format
void CGraphView::OnViewNoresumedr()	{	OnToggleKFormat( CKData::formatOriginal );	}
void CGraphView::OnViewResumedrup()	{	OnToggleKFormat( CKData::formatXDRup );		}
void CGraphView::OnViewResumedrdown(){	OnToggleKFormat( CKData::formatXDRdown );		}

void CGraphView::OnUpdateViewNoresumedr(CCmdUI* pCmdUI)		{	pCmdUI->SetCheck( CKData::formatOriginal == m_graph.GetKFormat() );	}
void CGraphView::OnUpdateViewResumedrup(CCmdUI* pCmdUI)		{	pCmdUI->SetCheck( CKData::formatXDRup == m_graph.GetKFormat() );	}
void CGraphView::OnUpdateViewResumedrdown(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::formatXDRdown == m_graph.GetKFormat() );	}

// Main data Type
void CGraphView::OnViewMaindataclose(){	ChangeMaindataType( CKData::mdtypeClose );	}
void CGraphView::OnViewMaindataopen(){	ChangeMaindataType( CKData::mdtypeOpen );		}
void CGraphView::OnViewMaindataaverage(){ChangeMaindataType( CKData::mdtypeAverage );	}

void CGraphView::OnUpdateViewMaindataclose(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::mdtypeClose == m_graph.GetMaindataType() );	}
void CGraphView::OnUpdateViewMaindataopen(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CKData::mdtypeOpen == m_graph.GetMaindataType() );	}
void CGraphView::OnUpdateViewMaindataaverage(CCmdUI* pCmdUI){	pCmdUI->SetCheck( CKData::mdtypeAverage == m_graph.GetMaindataType() );	}

// kline Mode
void CGraphView::OnViewKlinecandle()	{	ChangeKLineMode( CStockGraph::klineCandle );	}
void CGraphView::OnViewKlineamerica()	{	ChangeKLineMode( CStockGraph::klineAmerica );	}
void CGraphView::OnViewKlinetower()		{	ChangeKLineMode( CStockGraph::klineTower );	}

void CGraphView::OnUpdateViewKlinecandle(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CStockGraph::klineCandle == m_graph.GetKLineMode() );		}
void CGraphView::OnUpdateViewKlineamerica(CCmdUI* pCmdUI)	{	pCmdUI->SetCheck( CStockGraph::klineAmerica == m_graph.GetKLineMode() );		}
void CGraphView::OnUpdateViewKlinetower(CCmdUI* pCmdUI)		{	pCmdUI->SetCheck( CStockGraph::klineTower == m_graph.GetKLineMode() );		}


void CGraphView::OnViewHidethistech() 
{
	m_graph.HideSelectedTech( );
}

void CGraphView::OnUpdateViewHidethistech(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(STT_INVALID != m_graph.GetSelectedTech());
}

void CGraphView::OnViewThistechparam() 
{
	m_graph.AdjustSelectedTech();
}

void CGraphView::OnUpdateViewThistechparam(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(STT_INVALID != m_graph.GetSelectedTech());
}

⌨️ 快捷键说明

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