Esempio n. 1
0
void CSearchBox::OnSelendok()
{
	// TODO: Add your control notification handler code here
	if( m_bDoNothing )
		return;

	int nSel = GetCurSel();

	m_hwndLastFocus	=	NULL;
	m_bSegmentEnd	=	TRUE;
	
	if( CB_ERR != nSel )
	{
		SetCurSel( nSel );
		if( m_bShowOnSel )
		{
			DWORD	dwData	=	GetItemData( nSel );
			CView * pView = AfxGetStaticDoc()->GetActiveView();
			if( dwData & SEARCHBOX_SIGNBIT_STT )
				AfxShowStockTech( dwData & ~SEARCHBOX_SIGNBIT_STT ); 
			else if( dwData & SEARCHBOX_SIGNBIT_ACCE )
				AfxExecuteAccelerator( dwData & ~SEARCHBOX_SIGNBIT_ACCE );
			else if( pView && pView->IsKindOf( RUNTIME_CLASS(CRealTimeView) ) )
				AfxShowStockRealTime( dwData, FALSE );
			else
				AfxShowStockGraph( dwData, FALSE );
			return;
		}
	}
	SetCurrentWindowText( );

	if( m_bAutoHide )
		SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW );
}
Esempio n. 2
0
void CTechsView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	CTreeCtrl &treectrl = GetTreeCtrl();
	HTREEITEM	hItem	=	treectrl.GetSelectedItem();
	CString	strText	=	treectrl.GetItemText(hItem);
	
	if( NULL != hItem )
	{
		UINT	nTech	=	treectrl.GetItemData(hItem);
		if( (nTech >= STT_MIN && nTech <= STT_MAX) || nTech >= STT_USER_MIN )
		{
			AfxGetProfile().ShowGraphViewTech( nTech );
			CGraphView * pGraphView = AfxGetGraphView();
			CView * pActiveView = AfxGetStaticDoc()->GetActiveView();
			if( pGraphView )
				pGraphView->ResetClientRect( );
			if( pGraphView && pGraphView->GetSafeHwnd() == pActiveView->GetSafeHwnd() )
				pGraphView->Invalidate();
			else
				AfxSwitchToStaticView( RUNTIME_CLASS(CGraphView) );
			SetFocus( );
		}
	}
	
	*pResult = 0;
}
Esempio n. 3
0
BOOL CStkUIApp::OnDBChanged( BOOL bRecalculate )
{
	CWaitCursor	waitcursor;

	// Reload DB
	AfxGetStockContainer().Load( &AfxGetDB(), NULL, NULL );
	AfxGetDomainContainer().Load( AfxGetProfile().GetDomainFile() );
	AfxGetGroupContainer().Load( AfxGetProfile().GetGroupFile() );
	AfxGetDB().LoadKDataCache( AfxGetStockContainer(), NULL, NULL, 0, STKLIB_MAX_PROGRESS );
	AfxGetStockContainer().OnDataChanged( );

	AfxGetStkReceiver().RefreshStockContainer( AfxGetStockContainer(), TRUE );

	// Reload AfxGetStockMain()
	AfxReloadStockMain( );

	// Recalcuate Yield
	if( bRecalculate && IDYES == AfxMessageBox( IDS_INSTALLPAC_IFRECALCULATE, MB_YESNO|MB_ICONINFORMATION ) )
	{
		AfxRecalculateYield( AfxGetProfile().GetYieldAverageDays(), TRUE );
		AfxGetStockContainer().ReloadBase( &AfxGetDB() );
	}

	// Update SListBar
	CMainFrame	* pMainFrame	=	AfxGetMainFrame();
	if( pMainFrame )
	{
		pMainFrame->m_SearchBox.InitStocks( TRUE, TRUE, TRUE );
		pMainFrame->m_SearchBox.SetCurrentWindowText( );
		//pMainFrame->m_DateBox.InitDates( );
		//pMainFrame->m_DateBox.SetCurrentWindowText( );
	}

	// Update Views
	AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy(), TRUE );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SLISTVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SIMUVIEW_REREALRUN, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
	::PostMessage( AfxGetGroupView()->GetSafeHwnd(), WM_USER_UPDATEGROUPS, 0, 0 );

	return TRUE;
}
Esempio n. 4
0
void CMultiSortView::SendRequestQuote( BOOL bForced )
{
	BOOL bInTrade = CSPTime::InTradeTime(CSPTime::GetCurrentTime().GetTime(),900);
	CView * pView = AfxGetStaticDoc()->GetActiveView();
	if( bForced || (bInTrade && pView == this) )
	{
		CStockInfo info;
		info.SetType( m_multisort.GetMultiSortClass( ) );
		AfxGetStkReceiver().RequestStockData( CStock::dataMultisort, &info, 1, 0, 0 );
	}
}
Esempio n. 5
0
CStrategy* CStkUIApp::OpenStrategyFile( LPCTSTR lpszPathName )
{
	// Resolve File Name
	TCHAR szPath[_MAX_PATH];
	ASSERT(lstrlen(lpszPathName) < sizeof(szPath));
	if( NULL != lpszPathName )
	{
		TCHAR szTemp[_MAX_PATH];
		if (lpszPathName[0] == '\"')
			++lpszPathName;
		lstrcpyn(szTemp, lpszPathName, _MAX_PATH);
		LPTSTR lpszLast = _tcsrchr(szTemp, '\"');
		if (lpszLast != NULL)
			*lpszLast = 0;
		AfxFullPath(szPath, szTemp);
		TCHAR szLinkName[_MAX_PATH];
		if (AfxResolveShortcut(AfxGetMainWnd(), szPath, szLinkName, _MAX_PATH))
			lstrcpy(szPath, szLinkName);
	}

	if( NULL != lpszPathName )
	{
		POSITION pos = GetFirstStrategyPosition();
		while (pos != NULL)
		{
			CStrategy* pStrategy = GetNextStrategy(pos);
			if( 0 == pStrategy->GetPathName().CompareNoCase( szPath ) )
			{
				if( m_bAutoUpdateViews )
				{
					::SendMessage( AfxGetStrategyView()->GetSafeHwnd(), WM_USER_ACTIVATESTRATEGY, DWORD(pStrategy), 0 );
					AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_WIZARDVIEW, NULL );
					// AfxGetMainFrame()->ShowWorkspBar( );
				}
				return pStrategy;
			}
		}
	}

	CStrategy   * pStrategy = new CStrategy();
	if( NULL == pStrategy )
		return NULL;
	char	szErr[256];
	if( !pStrategy->OpenStrategyFile( szPath, szErr, sizeof(szErr)-1 ) )
	{
		AfxMessageBox( szErr, MB_OK|MB_ICONINFORMATION );
		delete	pStrategy;
		return NULL;
	}
	
	AddStrategy( pStrategy );
	return pStrategy;
}
Esempio n. 6
0
void CMultiSortView::OnTimer(UINT nIDEvent) 
{
	if( MSV_TIMER_REFRESH == nIDEvent )
	{
		SendRequestQuote(FALSE);

		CView * pView = AfxGetStaticDoc()->GetActiveView();
		if( pView == this )
			m_multisort.RecalculateSortID( TRUE, TRUE );
	}

	CView::OnTimer(nIDEvent);
}
Esempio n. 7
0
void CStkUIApp::RemoveStrategy(CStrategy* pStrategy)
{
	POSITION pos = m_strategyList.Find(pStrategy);
	ASSERT( NULL != pos );
	if( pos )
		m_strategyList.RemoveAt( pos );

	if( m_bAutoUpdateViews )
	{
		::SendMessage( AfxGetStrategyView()->GetSafeHwnd(), WM_USER_REMOVESTRATEGY, 0, 0 );
		AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_WIZARDVIEW, NULL );
	}
}
Esempio n. 8
0
void CStkUIApp::AddStrategy(CStrategy* pStrategy)
{
	if( NULL == pStrategy )
		return;
	ASSERT(m_strategyList.Find(pStrategy, NULL) == NULL); // must not be in list
	m_strategyList.AddTail(pStrategy);

	if( m_bAutoUpdateViews )
	{
		::SendMessage( AfxGetStrategyView()->GetSafeHwnd(), WM_USER_ADDSTRATEGY, 0, 0 );
		AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_WIZARDVIEW, NULL );
		// AfxGetMainFrame()->ShowWorkspBar( );
	}
}
Esempio n. 9
0
void CRealTimeView::SendRequestQuote( BOOL bForced )
{
	BOOL bInTrade = CSPTime::InTradeTime(CSPTime::GetCurrentTime().GetTime(),900);
	CView * pView = AfxGetStaticDoc()->GetActiveView();
	if( bForced || (bInTrade && pView == this) )
	{
		for( int i=0; i<m_nMultiStockCount && i<RTV_MAX_MULTICOUNT; i++ )
		{
			CStock & stock = m_realtime[i].GetCurStock( );
			CStockInfo & info = stock.GetStockInfo();
			if( info.IsValidStock() )
				AfxGetStkReceiver().RequestStockData( CStock::dataReport, &info, 1, 0, 0 );
		}
	}
}
Esempio n. 10
0
void CStkUIApp::CloseAllStrategy( BOOL bEndSession )
{
	POSITION pos = GetFirstStrategyPosition();
	while (pos != NULL)
	{
		CStrategy* pStrategy = GetNextStrategy(pos);
		pStrategy->OnClose();
		delete	pStrategy;
	}
	m_strategyList.RemoveAll();
	
	if( ! bEndSession && m_bAutoUpdateViews )
	{
		::SendMessage( AfxGetStrategyView()->GetSafeHwnd(), WM_USER_REMOVESTRATEGY, 0, 0 );
		AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_WIZARDVIEW, NULL );
	}
}
Esempio n. 11
0
// 快捷键
void AfxExecuteAccelerator( UINT nAcce )
{
	HWND	hWnd	=	AfxGetMainFrame()->GetSafeHwnd();
	switch( nAcce )
	{
	case ACCE_01:		// 热键F1
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_REPORTDETAIL, 0 );
		break;
	case ACCE_02:		// 热键F2
		::PostMessage( hWnd, WM_COMMAND, ID_VIEW_SLIST, 0 );
		break;
	case ACCE_03:		// 热键F3
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_VIEWSZZS, 0 );
		break;
	case ACCE_04:		// 热键F4
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_VIEWSZNCZ, 0 );
		break;
	case ACCE_05:		// 热键F5
		{
			CView * pView = AfxGetStaticDoc()->GetActiveView();
			if( pView && pView->IsKindOf( RUNTIME_CLASS(CGraphView) ) )
				::PostMessage( hWnd, WM_COMMAND, ID_VIEW_REALTIME, 0 );
			else
				::PostMessage( hWnd, WM_COMMAND, ID_VIEW_GRAPH, 0 );
		}
		break;
	case ACCE_06:		// 热键F6
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_GROUPSELF, 0 );
		break;
	case ACCE_07:		// 热键F7
		::PostMessage( hWnd, WM_COMMAND, ID_VIEW_MULTISORT, 0 );
		break;
	case ACCE_08:		// 热键F8
		break;
	case ACCE_09:		// 热键F9
		break;
	case ACCE_10:		// 热键F10
		::PostMessage( hWnd, WM_COMMAND, ID_VIEW_F10, 0 );
		break;
	case ACCE_1:		// 上A报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAA, 0 );
		break;
	case ACCE_2:		// 上B报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAB, 0 );
		break;
	case ACCE_3:		// 深A报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNA, 0 );
		break;
	case ACCE_4:		// 深B报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNB, 0 );
		break;
	case ACCE_5:		// 上债报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABOND, 0 );
		break;
	case ACCE_6:		// 深债报价
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBOND, 0 );
		break;
	case ACCE_61:		// 上A涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHAASORTDP, 0 );
		break;
	case ACCE_62:		// 上B涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABSORTDP, 0 );
		break;
	case ACCE_63:		// 深A涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNASORTDP, 0 );
		break;
	case ACCE_64:		// 深B涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBSORTDP, 0 );
		break;
	case ACCE_65:		// 上债涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SHABONDSORTDP, 0 );
		break;
	case ACCE_66:		// 深债涨跌
		::PostMessage( hWnd, WM_COMMAND, ID_SLIST_SZNBONDSORTDP, 0 );
		break;
	case ACCE_71:		// 上证信息
		break;
	case ACCE_72:		// 深证信息
		break;
	case ACCE_73:		// 券商信息
		break;
	case ACCE_81:		// 上A综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZAG, 0 );
		break;
	case ACCE_82:		// 上B综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZBG, 0 );
		break;
	case ACCE_83:		// 深A综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNAG, 0 );
		break;
	case ACCE_84:		// 深B综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNBG, 0 );
		break;
	case ACCE_85:		// 上债综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZZQ, 0 );
		break;
	case ACCE_86:		// 深债综合
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MSSZNZQ, 0 );
		break;
	case ACCE_LBDK:		// 量比多空
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_LBDK, 0 );
		break;
	case ACCE_MMLD:		// 买卖力道
		::PostMessage( hWnd, WM_COMMAND, ID_REALTIME_MMLD, 0 );
		break;
	default:
		ASSERT( FALSE );
	}
}
Esempio n. 12
0
void CSetBaseDlg::OnStart() 
{
	UpdateData( );

	CNetDatabase	netdb;
	if( !netdb.SetRootPath( AfxGetProfile().GetSelfDBPath(), IStStore::dbtypeSelfDB ) )
	{
		AfxMessageBox( IDS_ROOTPATH_ERROR, MB_OK | MB_ICONINFORMATION );
		return;
	}

	if( ( m_strFileF10.IsEmpty() && m_strFileTdx.IsEmpty() && m_strFileFxj.IsEmpty() && m_strPathFxjBlock.IsEmpty() )
		|| ( 0 != access(m_strFileF10,0) && 0 != access(m_strFileTdx,0) && 0 != access(m_strFileFxj,0) && 0 != access(m_strPathFxjBlock,0) ) )
	{
		AfxMessageBox( IDS_SETBASE_FILENOTEXISTS, MB_OK|MB_ICONINFORMATION );
		return;
	}

	m_btnStart.EnableWindow( FALSE );

	AfxGetApp()->WriteProfileString( "setbasedlg", "filef10", m_strFileF10 );
	AfxGetApp()->WriteProfileString( "setbasedlg", "filetdx", m_strFileTdx );
	AfxGetApp()->WriteProfileString( "setbasedlg", "filefxj", m_strFileFxj );
	AfxGetApp()->WriteProfileString( "setbasedlg", "pathfxjblock", m_strPathFxjBlock );

	m_ctrlProgress.SetWindowPos( NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE );
	m_ctrlProgress.SetRange( 0, STKLIB_MAX_PROGRESS );
	m_ctrlProgress.SetPos( 0 );

	if( m_strFileF10.GetLength() > 0 )
	{
		CPackage	pac;
		pac.m_nType		=	CPackage::packageBasetext;
		pac.m_bIsZipped	=	( m_strFileF10.GetLength() > 4 && 0 == m_strFileF10.Right(4).CompareNoCase(".zip") );
		pac.m_strDescript	=	m_strFileF10;
		if( netdb.InstallPackageEx( pac, m_strFileF10, InstallBaseCallback, GetSafeHwnd() ) )
			AfxMessageBox( IDS_SETBASE_INSTALLF10OK, MB_OK|MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_SETBASE_INSTALLF10FAIL, MB_OK|MB_ICONINFORMATION );
	}
	
	if( m_strFileTdx.GetLength() > 0 )
	{
		CPackage	pac;
		pac.m_nType		=	CPackage::packageBasetable;
		pac.m_bIsZipped	=	( m_strFileTdx.GetLength() > 4 && 0 == m_strFileTdx.Right(4).CompareNoCase(".zip") );
		pac.m_strDescript	=	m_strFileTdx;
		if( netdb.InstallPackageEx( pac, m_strFileTdx, NULL, NULL ) )
			AfxMessageBox( IDS_SETBASE_INSTALLTDXOK, MB_OK|MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_SETBASE_INSTALLTDXFAIL, MB_OK|MB_ICONINFORMATION );
	}
	
	if( m_strFileFxj.GetLength() > 0 )
	{
		CPackage	pac;
		pac.m_nType		=	CPackage::packageBasetable;
		pac.m_bIsZipped	=	( m_strFileFxj.GetLength() > 4 && 0 == m_strFileFxj.Right(4).CompareNoCase(".zip") );
		pac.m_strDescript	=	m_strFileFxj;
		if( netdb.InstallPackageEx( pac, m_strFileFxj, NULL, NULL ) )
			AfxMessageBox( IDS_SETBASE_INSTALLFXJOK, MB_OK|MB_ICONINFORMATION );
		else
			AfxMessageBox( IDS_SETBASE_INSTALLFXJFAIL, MB_OK|MB_ICONINFORMATION );
	}

	if( m_strPathFxjBlock.GetLength() > 0 )
	{
		CPackage	pac;
		pac.m_nType		=	CPackage::packageCode;
		pac.m_bIsZipped	=	( m_strPathFxjBlock.GetLength() > 4 && 0 == m_strPathFxjBlock.Right(4).CompareNoCase(".zip") );
		pac.m_strDescript	=	m_strPathFxjBlock;

		BOOL bOK = FALSE;
		int	nFileCountTotal	=	CNetDatabase::GetFileCount( m_strPathFxjBlock, FALSE );

		DWORD	attr = GetFileAttributes( m_strPathFxjBlock );
		if( 0xFFFFFFFF != attr && (attr & FILE_ATTRIBUTE_DIRECTORY) )
			bOK =	netdb.InstallPackagePath( pac, m_strPathFxjBlock, InstallBaseCallback, GetSafeHwnd(), nFileCountTotal, 0, FALSE );
		else
			bOK =	netdb.InstallPackage( pac, m_strPathFxjBlock, InstallBaseCallback, GetSafeHwnd() );

		if( bOK )
		{
			AfxGetDomainContainer().Store( AfxGetProfile().GetDomainFile() );
			AfxMessageBox( IDS_SETBASE_INSTALLFXJBLOCKOK, MB_OK|MB_ICONINFORMATION );
		}
		else
			AfxMessageBox( IDS_SETBASE_INSTALLFXJBLOCKFAIL, MB_OK|MB_ICONINFORMATION );
	}

	m_ctrlProgress.SetPos( STKLIB_MAX_PROGRESS );
	m_btnStart.EnableWindow( TRUE );

	AfxGetStockContainer().ReloadBase( &AfxGetDB() );
	AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy() );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SLISTVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
}
Esempio n. 13
0
void CSListView::SendRequestQuote( BOOL bForced )
{
	static int nLastStart = -1;
	static int nLastCount = -1;

	BOOL bQuoteTipSended = FALSE;

	BOOL bInTrade = CSPTime::InTradeTime(CSPTime::GetCurrentTime().GetTime(),900);
	CView * pView = AfxGetStaticDoc()->GetActiveView();
	if( bForced )
	{
		CStockContainer stocks;
		CStockInfo	info;
		if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAIN, &info ) )
			stocks.Add(info);
		if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAINSZN, &info ) )
			stocks.Add(info);
		if( stocks.GetSize() > 0 )
			AfxGetStkReceiver().RequestStockData( CStock::dataReport, stocks.GetData(), stocks.GetSize(), 0, 0 );
	}
	if( bForced || pView == this )
	{
		CCellRange cr = m_Grid.GetVisibleNonFixedCellRange();
		int nStart = cr.GetMinRow() - 1;
		int nCount = cr.GetMaxRow() - cr.GetMinRow() + 1;
		CStockContainer & container = AfxGetSListStockContainer();
		container.Lock();
		if( nStart >= 0 && nCount > 0 && container.GetSize() > 0 && (bInTrade || bForced || nLastStart != nStart || nLastCount != nCount) )
		{
			nLastStart = nStart;
			nLastCount = nCount;
			AfxGetStkReceiver().RequestStockData( CStock::dataReport, container.GetData()+nStart, min(nCount,container.GetSize()-nStart), 0, 0 );
			bQuoteTipSended = (0 == nStart && nCount >= 9);
		}
		container.UnLock();
	}

	if( bInTrade )
	{
		// 预警系统所需股票行情刷新
		CAlarmCondContainer & conds = AfxGetProfile().GetAlarmCondContainer();
		CStockContainer stocks;
		stocks.SetSize( 0, conds.GetSize() + 5 );
		for( int i=0; i<conds.GetSize(); i++ )
		{
			ALARMCOND cond = conds.GetAt(i);
			CStockInfo info;
			if( AfxGetStockContainer().GetStockInfo( cond.m_szCode, &info ) )
				stocks.Add( info );
		}
		CStockInfo infoMain, infoMainSzn;
		if( AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAIN, &infoMain )
			&& AfxGetStockContainer().GetStockInfo( STKLIB_CODE_MAINSZN, &infoMainSzn ) )
		{
			stocks.Add( infoMain );
			stocks.Add( infoMainSzn );
		}

		//  行情QuoteTip 需要行情数据
		if( !bQuoteTipSended )
		{
			CStockContainer & container = AfxGetSListStockContainer();
			container.Lock();
			for( int i=0; i<9 && i<container.GetSize(); i++ )
				stocks.Add( container.ElementAt(i) );
			container.UnLock();
		}

		if( stocks.GetSize() > 0 )
			AfxGetStkReceiver().RequestStockData( CStock::dataReport, stocks.GetData(), stocks.GetSize(), 0, 0 );
	}
}
Esempio n. 14
0
BOOL CSearchBox::PreTranslateMessage(MSG* pMsg)
{
	if( pMsg->message == WM_KEYDOWN )
	{
		if( IsWantChar( pMsg->wParam ) )
		{
			OnChangeStatus( pMsg->wParam, pMsg->lParam, TRUE );
			return TRUE;
		}
		if( VK_RETURN == pMsg->wParam )
		{
			m_bDoNothing	=	TRUE;
			m_hwndLastFocus	=	NULL;
			m_bSegmentEnd	=	TRUE;

			CString	strCommand;
			GetWindowText( strCommand );
			int nSel = SelectString( 0, strCommand );
			ShowDropDown( FALSE );
			SetCurSel( nSel );
			
			// Show Graph View
			if( CB_ERR != nSel && m_bShowOnSel )
			{
				DWORD	dwData	=	GetItemData( nSel );
				CView * pView = AfxGetStaticDoc()->GetActiveView();
				if( dwData & SEARCHBOX_SIGNBIT_STT )
					AfxShowStockTech( dwData & ~SEARCHBOX_SIGNBIT_STT ); 
				else if( dwData & SEARCHBOX_SIGNBIT_ACCE )
					AfxExecuteAccelerator( dwData & ~SEARCHBOX_SIGNBIT_ACCE );
				else if( IsCTRLpressed() )
					AfxShowStockBase( dwData, FALSE );
				else if( pView && pView->IsKindOf( RUNTIME_CLASS(CRealTimeView) ) )
					AfxShowStockRealTime( dwData, FALSE );
				else
					AfxShowStockGraph( dwData, FALSE );
			}
			else if( CB_ERR == nSel && m_bShowOnSel )
			{
				AfxShowStockGraph( strCommand );
			}
			else
				SetCurrentWindowText( );

			m_bDoNothing	=	FALSE;
			if( m_bAutoHide )
				SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW );
			return TRUE;
		}
		else if( VK_ESCAPE == pMsg->wParam )
		{
			m_bDoNothing	=	TRUE;
			if( m_hwndLastFocus )
				::SetFocus( m_hwndLastFocus );
			m_hwndLastFocus	=	NULL;
			m_bSegmentEnd	=	TRUE;

			CString	strCommand;
			GetWindowText( strCommand );
			int nSel = SelectString( 0, strCommand );
			ShowDropDown( FALSE );
			SetCurSel( nSel );

			SetCurrentWindowText( );
			m_bDoNothing	=	FALSE;

			if( m_bAutoHide )
				SetWindowPos( NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW );
			return TRUE;
		}
	}

	return CComboBox::PreTranslateMessage(pMsg);
}
Esempio n. 15
0
void CSetKDataDlg::OnCompleted( )
{
	AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy() );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
	AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SLISTVIEW, NULL );
}