STKUI界面分析

Published

界面如下:

1------IDR_MAINFRAME   程序的主菜单

2------IDR_MAINBAR     工具栏

3------IDR_SLISTBAR    工具栏

4------IDR_SIMUBAR     工具栏

17-----IDR_PERIODBAR   工具栏

18-----IDR_VIEWBAR     工具栏

以下是视图

5------CStragegyView   基类---CTreeView-----策略

6------CGroupView      基类---CTreeView-----分组

7------CTechsView      基类---CTreeView-----指标

8------CWizardView     基类---CFormView-----向导

9------CSimuView       基类---CFormView-----策略

10-----CSListView      基类---CFormView-----股票列表

11-----CRealTimeView   基类---CView---------分时行情

12-----CMultiSortView  基类---CView---------综合排名

13-----CGraphView      基类---CView---------技术图表;画日K线、其他周期K线的类;StkUI\View\StockGraph.cpp;StkUI\View\GraphView.cpp

14-----CBaseView       基类---CEditView-----基本信息

15-----CInfoView       基类---CHtmlView-----在线资讯

16-----CSelectorView   基类---CFormView-----智能选股

 

对话框

对话框位置

StkUI\Dialog\AlarmResultDlg.cpp

数据管理

CInstallPacDlg installdlg; //安装K线数据包
CTyDataDlg tydata; //导出K线数据包
CSetDrdataDlg setdr;//权息资料
CSetBaseDlg setbase;//板块财务F10导入
CSetBasedataDlg setbasedata;//基本资料修改
CSetKDataDlg setkdata;//K线修复

 

使用到的全局变量定义

G:\stock\TskingVS2019\src\Client\StkLib\Src\AfxCore.cpp

7.调用股票数据
BOOL AfxReloadStock( CStock & stock )
{
	CStockInfo info = stock.GetStockInfo();

	// Reload AfxGetStockMain()
	AfxGetStockContainer().GetStockInfo( info.GetStockCode(), &info );

	stock.Clear( );
	stock.SetStockInfo( &info );
	stock.SetDatabase( &AfxGetDB() );
	stock.PrepareData( CStock::dataK, CKData::ktypeDay );
	
	// Merge New
	stock.GetKDataDay().MergeKData( &(info.m_kdata) );
	
	stock.PrepareData( CStock::dataK, CKData::ktypeWeek );
	stock.PrepareData( CStock::dataK, CKData::ktypeMonth );
	stock.PrepareData( CStock::dataK, CKData::ktypeMin1);//extend 1分钟K线 by freeman 
	stock.PrepareData( CStock::dataK, CKData::ktypeMin5 );
	stock.PrepareData( CStock::dataK, CKData::ktypeMin15 );
	stock.PrepareData( CStock::dataK, CKData::ktypeMin30 );
	stock.PrepareData( CStock::dataK, CKData::ktypeMin60 );
	return TRUE;
}

加载分时线数据
G:\stock\TskingVS2019\src\Client\StkLib\Src\AfxCore.cpp

int AfxRefreshStockContainerMinute( CStockContainer & container, LONG lStockType, int nSecondsToRead )
{
	container.Lock();

	time_t	tmTradeLatest	=	-1;

	int	nCount = 0;
	for( int i=0; i<container.GetSize(); i++ )
	{
		CStockInfo & info = container.ElementAt(i);
		if( info.GetType() != lStockType )
			continue;

		CStock	stock;
		stock.SetStockInfo( &info );
		stock.SetDatabase( &AfxGetDB() );
		//加载分时线数据 by freeman
		AfxGetDB().LoadMinute( &stock );
		info.m_minute.RemoveAll();
		
		CMinute	& minstock = stock.GetMinute();
		if( -1 == tmTradeLatest && stock.GetMinute().GetSize() > 0 )
			tmTradeLatest	=	CSPTime::GetTimeTradeLatest( minstock[0].m_time );
		for( int i=0; i<minstock.GetSize(); i++ )
		{
			if( -1 == nSecondsToRead || tmTradeLatest-minstock[i].m_time<nSecondsToRead )
				info.m_minute.Add( minstock[i] );
		}
		
		nCount	++;
	}
	container.UnLock();
	return nCount;
}