📄 selectorview.cpp.svn-base
字号:
if( 0 == nCol )
m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( SLH_CODE, info, &m_container ) );
else if( 1 == nCol )
m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( SLH_NAME, info, &m_container ) );
else if( 2 == nCol )
m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( SLH_DATE, info, &m_container ) );
else if( 3 == nCol )
m_Grid.SetItemText( nRow, nCol, AfxGetVariantDispString( SLH_CLOSE, info, &m_container ) );
else if( 4 == nCol )
m_Grid.SetItemText( nRow, nCol, AfxGetIntensityString( m_signals.GetAt(i) ) );
else if( 5 == nCol && i<m_reasons.GetSize() )
m_Grid.SetItemText( nRow, nCol, AfxGetIntensityCodeString( m_reasons.GetAt(i) ) );
m_Grid.SetItemBkColour( nRow, nCol, AfxGetProfile().GetColor(CColorClass::clrSListBK) );
if( 4 == nCol )
m_Grid.SetItemFgColour( nRow, nCol, ((int)m_signals[i]) > 0 ? AfxGetProfile().GetColor(CColorClass::clrRise) : AfxGetProfile().GetColor(CColorClass::clrFall) );
else
m_Grid.SetItemFgColour( nRow, nCol, AfxGetProfile().GetColor(CColorClass::clrText) );
}
if( i == nPageCount+5 )
{
m_Grid.Invalidate( );
MSG msg;
while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) )
AfxGetApp()->PumpMessage();
}
if( pMainFrame )
pMainFrame->SetProgress( 100*i/m_container.GetSize() );
}
if( pMainFrame )
{
pMainFrame->SetProgress( 100 );
pMainFrame->HideProgressBar( );
pMainFrame->SetMessageText( IDS_MAINFRAME_FINISHED );
}
m_Grid.Invalidate( );
}
/////////////////////////////////////////////////////////////////////////////
// CSelectorView printing
BOOL CSelectorView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CSelectorView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
if( ::IsWindow( m_Grid.GetSafeHwnd() ) )
m_Grid.OnBeginPrinting(pDC, pInfo);
}
void CSelectorView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
if( ::IsWindow( m_Grid.GetSafeHwnd() ) )
m_Grid.OnPrint(pDC, pInfo);
}
void CSelectorView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
if( ::IsWindow( m_Grid.GetSafeHwnd() ) )
m_Grid.OnEndPrinting(pDC, pInfo);
}
void CSelectorView::OnFilePrint()
{
if( ::IsWindow( m_Grid.GetSafeHwnd() ) )
m_Grid.Print( );
}
void CSelectorView::OnUpdateFilePrint(CCmdUI* pCmdUI)
{
pCmdUI->Enable( ::IsWindow( m_Grid.GetSafeHwnd() ) );
}
/////////////////////////////////////////////////////////////////////////////
// CSelectorView diagnostics
#ifdef _DEBUG
void CSelectorView::AssertValid() const
{
CFormView::AssertValid();
}
void CSelectorView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CSelectorView message handlers
int CSelectorView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFormView::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
void CSelectorView::OnDestroy()
{
CFormView::OnDestroy();
}
void CSelectorView::OnTimer(UINT nIDEvent)
{
CFormView::OnTimer(nIDEvent);
}
void CSelectorView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
// TODO: Add your specialized code here and/or call the base class
if( bActivate && m_bShouldUpdate )
{
OnUpdate( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
m_bShouldUpdate = FALSE;
}
CFormView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
LRESULT CSelectorView::OnGetViewTitle(WPARAM wParam, LPARAM lParam)
{
CString strTitle;
strTitle.LoadString( IDS_TITLE_SELECTORVIEW );
lstrcpyn((LPTSTR)lParam, (LPCTSTR)strTitle, wParam);
if ((int)wParam > strTitle.GetLength())
wParam = strTitle.GetLength();
return wParam;
}
LRESULT CSelectorView::OnGetViewCmdid(WPARAM wParam, LPARAM lParam)
{
if( lParam )
*((LPARAM *)lParam) = ID_VIEW_SELECTOR;
return 0L;
}
LRESULT CSelectorView::OnCanCloseView(WPARAM wParam, LPARAM lParam)
{
if( lParam )
*((BOOL *)lParam) = !m_bRunning;
return 0L;
}
LRESULT CSelectorView::OnColorChange(WPARAM wParam, LPARAM lParam)
{
m_Grid.SetBkColor( AfxGetProfile().GetColor(CColorClass::clrSListBK) );
m_Grid.SetTextBkColor( AfxGetProfile().GetColor(CColorClass::clrSListBK) );
m_Grid.SetSelectedBkColor(AfxGetProfile().GetColor(CColorClass::clrSListSelected));
OnUpdate( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
Invalidate();
return 0L;
}
BOOL CSelectorView::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::clrSimuBK) );
pDC->FillRect( &rect, &brush );
return TRUE;
}
return CFormView::OnEraseBkgnd(pDC);
}
void CSelectorView::OnSize(UINT nType, int cx, int cy)
{
CSize sizeTotal( cx, cy );
SetScaleToFitSize( sizeTotal );
CFormView::OnSize(nType, cx, cy);
}
void CSelectorView::OnSetFocus(CWnd* pOldWnd)
{
CFormView::OnSetFocus(pOldWnd);
// TODO: Add your message handler code here
m_Grid.SetFocus();
if( !m_Grid.GetFocusCell().IsValid()
&& m_Grid.GetRowCount() > 1 && m_Grid.GetColumnCount() > 1 )
{
m_Grid.SetFocusCell( 1, 1 );
for( int nCol=0; nCol<m_Grid.GetColumnCount(); nCol ++ )
m_Grid.SetItemState(1,nCol,m_Grid.GetItemState(1,nCol) | GVIS_SELECTED);
}
}
HBRUSH CSelectorView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if( pDC )
pDC->SetTextColor( AfxGetProfile().GetColor( CColorClass::clrSimuText ) );
if( nCtlColor == CTLCOLOR_DLG
|| nCtlColor == CTLCOLOR_STATIC
|| nCtlColor == CTLCOLOR_MSGBOX )
{
if( nCtlColor == CTLCOLOR_STATIC )
pDC->SetBkMode( TRANSPARENT );
static CBrush brushBK;
static COLORREF clrBKLast = RGB(255,255,255);
COLORREF clrBKNow = AfxGetProfile().GetColor( CColorClass::clrSimuBK );
if( NULL == brushBK.GetSafeHandle() || clrBKLast != clrBKNow )
{
brushBK.DeleteObject( );
VERIFY( brushBK.CreateSolidBrush( clrBKNow ) );
}
clrBKLast = clrBKNow;
return (HBRUSH)brushBK.GetSafeHandle();
}
return CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
}
void CSelectorView::OnRunselector()
{
m_bRunning = TRUE;
// clear
m_btnRunSelector.EnableWindow( FALSE );
m_staticInfo.SetWindowPos( NULL, 0, 0, 0, 0, SWP_HIDEWINDOW | SWP_NOMOVE | SWP_NOSIZE );
m_container.Clear();
m_signals.RemoveAll();
m_reasons.RemoveAll();
OnUpdate( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
// get parameters
CStockContainer cntn;
cntn.RetrieveFromStatic( m_cmbStockGroup.GetCurSelType(), m_cmbStockGroup.GetCurSelName(), NULL, -1 );
int nKType = m_cmbKType.GetSelect();
int nTech = m_cmbTech.GetSelect();
// progress
m_progress.SetWindowPos( NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE );
m_progress.SetRange( 0, cntn.GetSize() );
m_progress.SetPos( 0 );
// run selector
for( int i=0; i<cntn.GetSize(); i++ )
{
m_progress.SetPos( i+1 );
MSG msg;
while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) )
AfxGetApp()->PumpMessage();
CStockInfo & info = cntn.ElementAt(i);
int its = ITS_NOTHING;
UINT itsc = ITSC_NOTHING;
CStock stock;
if( !stock.SetStockInfo( &info ) )
continue;
if( !AfxPrepareStockData( &AfxGetDB(), stock, nKType, CKData::formatXDRdown, AfxGetProfile().GetGraphMaindataType(), FALSE, FALSE ) )
continue;
CKData & kdata = stock.GetKData( nKType );
if( kdata.GetSize() < 1 )
continue;
CTechnique * pTech = CTechnique::CreateTechnique( nTech, &kdata );
if( NULL == pTech )
continue;
AfxGetProfile().GetTechParameters().FindParameters( nTech, pTech );
its = pTech->GetSignal( kdata.GetSize()-1, &itsc );
if( ITS_NOTHING != its )
{
m_container.Add( info );
m_signals.Add( its );
m_reasons.Add( itsc );
}
delete pTech;
}
// display result
OnUpdate( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
if( 0 == m_container.GetSize() )
m_staticInfo.SetWindowPos( NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE );
m_btnRunSelector.EnableWindow( TRUE );
m_bRunning = FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -