TyDataDlg.cpp
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:7k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. // TyDataDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "TyDataDlg.h"
  5. #include <io.h>
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CTyDataDlg dialog
  13. void CTyDataDlg::StoreProfile( )
  14. {
  15. AfxGetApp()->WriteProfileString( "tydata", "pathsrcsh", m_strPathSrcSH );
  16. AfxGetApp()->WriteProfileString( "tydata", "pathsrcsz", m_strPathSrcSZ );
  17. AfxGetApp()->WriteProfileString( "tydata", "filedest", m_strFileDest );
  18. }
  19. void CTyDataDlg::LoadProfile( )
  20. {
  21. m_strFileDest = AfxGetProfile().GetExportPath() + "Tysj.stk";
  22. m_strPathSrcSH = AfxGetApp()->GetProfileString( "tydata", "pathsrcsh", m_strPathSrcSH );
  23. m_strPathSrcSZ = AfxGetApp()->GetProfileString( "tydata", "pathsrcsz", m_strPathSrcSZ );
  24. m_strFileDest = AfxGetApp()->GetProfileString( "tydata", "filedest", m_strFileDest );
  25. if( (0 != access( m_strPathSrcSH, 0 ) || FILE_ATTRIBUTE_DIRECTORY != GetFileAttributes( m_strPathSrcSH ) ) )
  26. m_strPathSrcSH = AfxGetProfile().GetWorkDirectory() + "data\shase\day\";
  27. if( (0 != access( m_strPathSrcSZ, 0 ) || FILE_ATTRIBUTE_DIRECTORY != GetFileAttributes( m_strPathSrcSZ ) ) )
  28. m_strPathSrcSZ = AfxGetProfile().GetWorkDirectory() + "data\sznse\day\";
  29. }
  30. IMPLEMENT_DYNCREATE(CTyDataDlg, CPropertyPageEx)
  31. CTyDataDlg::CTyDataDlg( )
  32. : CPropertyPageEx(CTyDataDlg::IDD)
  33. {
  34. //{{AFX_DATA_INIT(CTyDataDlg)
  35. m_strFileDest = _T("");
  36. m_tmBegin = 0;
  37. m_tmEnd = 0;
  38. m_strPathSrcSH = _T("");
  39. m_strPathSrcSZ = _T("");
  40. //}}AFX_DATA_INIT
  41. m_tmBegin = CSPTime::GetCurrentTime();
  42. m_tmEnd = CSPTime::GetCurrentTime();
  43. }
  44. void CTyDataDlg::DoDataExchange(CDataExchange* pDX)
  45. {
  46. CPropertyPageEx::DoDataExchange(pDX);
  47. //{{AFX_DATA_MAP(CTyDataDlg)
  48. DDX_Control(pDX, IDC_SRCSZ_EXPLORER, m_btnSrcSZExplorer);
  49. DDX_Control(pDX, IDC_SRCSH_EXPLORER, m_btnSrcSHExplorer);
  50. DDX_Control(pDX, IDC_FILE_EXPLORER, m_btnFileExplorer);
  51. DDX_Control(pDX, IDC_START, m_btnStart);
  52. DDX_Control(pDX, IDC_STATIC_PROGRESS, m_staticProgress);
  53. DDX_Control(pDX, IDC_PROGRESS, m_ctrlProgress);
  54. DDX_Text(pDX, IDC_FILE_DEST, m_strFileDest);
  55. DDX_DateTimeCtrl(pDX, IDC_TIME_BEGIN, m_tmBegin);
  56. DDX_DateTimeCtrl(pDX, IDC_TIME_END, m_tmEnd);
  57. DDX_Text(pDX, IDC_PATH_SRCSH, m_strPathSrcSH);
  58. DDX_Text(pDX, IDC_PATH_SRCSZ, m_strPathSrcSZ);
  59. //}}AFX_DATA_MAP
  60. }
  61. BEGIN_MESSAGE_MAP(CTyDataDlg, CPropertyPageEx)
  62. //{{AFX_MSG_MAP(CTyDataDlg)
  63. ON_BN_CLICKED(IDC_FILE_EXPLORER, OnFileExplorer)
  64. ON_BN_CLICKED(IDC_SRCSH_EXPLORER, OnSrcshExplorer)
  65. ON_BN_CLICKED(IDC_SRCSZ_EXPLORER, OnSrcszExplorer)
  66. ON_BN_CLICKED(IDC_START, OnStart)
  67. //}}AFX_MSG_MAP
  68. END_MESSAGE_MAP()
  69. /////////////////////////////////////////////////////////////////////////////
  70. // CTyDataDlg message handlers
  71. BOOL CTyDataDlg::OnInitDialog() 
  72. {
  73. CPropertyPageEx::OnInitDialog();
  74. LoadProfile( );
  75. UpdateData( FALSE );
  76. return TRUE;  // return TRUE unless you set the focus to a control
  77.               // EXCEPTION: OCX Property Pages should return FALSE
  78. }
  79. void CTyDataDlg::OnFileExplorer() 
  80. {
  81. UpdateData( );
  82. CFileDialog dlg (FALSE, NULL, NULL, OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_ENABLESIZING,
  83. "General Stock Data files (*.stk)|*.stk|All files (*.*)|*.*||", NULL);
  84. if( IDOK == dlg.DoModal() )
  85. {
  86. m_strFileDest = dlg.GetPathName();
  87. UpdateData( FALSE );
  88. }
  89. }
  90. void CTyDataDlg::OnSrcshExplorer() 
  91. {
  92. UpdateData( TRUE );
  93. if( AfxDoSelectDirectory( m_strPathSrcSH ) )
  94. UpdateData( FALSE );
  95. }
  96. void CTyDataDlg::OnSrcszExplorer() 
  97. {
  98. UpdateData( TRUE );
  99. if( AfxDoSelectDirectory( m_strPathSrcSZ ) )
  100. UpdateData( FALSE );
  101. }
  102. void CTyDataDlg::OnStart() 
  103. {
  104. UpdateData( );
  105. StoreProfile();
  106. if( m_tmBegin > m_tmEnd )
  107. {
  108. AfxMessageBox( IDS_TYDATADLG_ERRORTIME, MB_OK|MB_ICONINFORMATION );
  109. return;
  110. }
  111. if( 0 == access(m_strFileDest,0)
  112. && IDNO == AfxMessageBox(IDS_TYDATADLG_OVERWRITE,MB_YESNO) )
  113. return;
  114. CFile file;
  115. if( !file.Open( m_strFileDest, CFile::modeCreate | CFile::modeWrite ) )
  116. {
  117. AfxMessageBox( IDS_TYDATADLG_ERRORCREATEFILE, MB_OK|MB_ICONINFORMATION );
  118. return;
  119. }
  120. file.Close();
  121. m_btnStart.EnableWindow( FALSE );
  122. int nFileCountTotal = CNetDatabase::GetFileCount( m_strPathSrcSH, FALSE )
  123. + CNetDatabase::GetFileCount( m_strPathSrcSZ, FALSE );
  124. int nFileCount = 0, nCount = 0, nProgress = 0;
  125. m_ctrlProgress.SetWindowPos( NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE );
  126. m_ctrlProgress.SetRange( 0, nFileCountTotal );
  127. m_ctrlProgress.SetPos( 0 );
  128. CFileFind finder;
  129. // 上海
  130. BOOL bWorking = finder.FindFile( AfxGetFilePath( (LPCTSTR)m_strPathSrcSH, LPCTSTR("*.day") ) );
  131. while( bWorking )
  132. {
  133. bWorking = finder.FindNextFile();
  134. CString sKFile = finder.GetFilePath();
  135. CString sCode = AfxGetFileTitleNoExt(sKFile);
  136. CString sName;
  137. CStockInfo info;
  138. if( AfxGetStockContainer().GetStockInfo( sCode, &info ) )
  139. sName = info.GetStockName();
  140. int nRet = CStDatabase::AppendToTyData( sCode, sName, CKData::ktypeDay, sKFile,
  141. m_strFileDest, m_tmBegin.GetTime(), m_tmEnd.GetTime() );
  142. nCount += nRet;
  143. if( nRet > 0 ) nFileCount ++;
  144. // Progress
  145. m_ctrlProgress.SetPos(++nProgress);
  146. CString strProgressNew;
  147. if( nFileCountTotal > 0 )
  148. strProgressNew.Format( "%d%%", 100*nProgress/nFileCountTotal );
  149. CString strProgressOld;
  150. m_staticProgress.GetWindowText( strProgressOld );
  151. if( 0 != strProgressNew.Compare( strProgressOld ) )
  152. m_staticProgress.SetWindowText( strProgressNew );
  153. }
  154. finder.Close();
  155. // 深圳
  156. bWorking = finder.FindFile( AfxGetFilePath( (LPCTSTR)m_strPathSrcSZ, LPCTSTR("*.day") ) );
  157. while( bWorking )
  158. {
  159. bWorking = finder.FindNextFile();
  160. CString sKFile = finder.GetFilePath();
  161. CString sCode = AfxGetFileTitleNoExt(sKFile);
  162. CString sName;
  163. CStockInfo info;
  164. if( AfxGetStockContainer().GetStockInfo( sCode, &info ) )
  165. sName = info.GetStockName();
  166. int nRet = CStDatabase::AppendToTyData( sCode, sName, CKData::ktypeDay, sKFile,
  167. m_strFileDest, m_tmBegin.GetTime(), m_tmEnd.GetTime() );
  168. nCount += nRet;
  169. if( nRet > 0 ) nFileCount ++;
  170. // Progress
  171. m_ctrlProgress.SetPos(++nProgress);
  172. CString strProgressNew;
  173. if( nFileCountTotal > 0 )
  174. strProgressNew.Format( "%.2f%%", 100.*nProgress/nFileCountTotal );
  175. CString strProgressOld;
  176. m_staticProgress.GetWindowText( strProgressOld );
  177. if( 0 != strProgressNew.Compare( strProgressOld ) )
  178. m_staticProgress.SetWindowText( strProgressNew );
  179. }
  180. finder.Close();
  181. CString strReportFmt, strReport;
  182. strReportFmt.LoadString( IDS_TYDATADLG_REPORTFMT );
  183. strReport.Format( strReportFmt, nFileCount, nCount );
  184. AfxMessageBox( strReport, MB_OK|MB_ICONINFORMATION );
  185. m_btnStart.EnableWindow( TRUE );
  186. }