📄 graphview.cpp.svn-base
字号:
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 + -