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

金融证券系统

开发平台:

Visual C++

  1. // SetBaseDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SetBaseDlg.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. // CSetBaseDlg property page
  13. IMPLEMENT_DYNCREATE(CSetBaseDlg, CPropertyPageEx)
  14. CSetBaseDlg::CSetBaseDlg() : CPropertyPageEx(CSetBaseDlg::IDD)
  15. {
  16. //{{AFX_DATA_INIT(CSetBaseDlg)
  17. m_strFileTdx = _T("");
  18. m_strFileFxj = _T("");
  19. m_strPathFxjBlock = _T("");
  20. m_strFileF10 = _T("");
  21. //}}AFX_DATA_INIT
  22. m_strFileF10 = AfxGetApp()->GetProfileString( "setbasedlg", "filef10", "" );
  23. m_strFileTdx = AfxGetApp()->GetProfileString( "setbasedlg", "filetdx", "" );
  24. m_strFileFxj = AfxGetApp()->GetProfileString( "setbasedlg", "filefxj", "" );
  25. m_strPathFxjBlock = AfxGetApp()->GetProfileString( "setbasedlg", "pathfxjblock", "" );
  26. }
  27. CSetBaseDlg::~CSetBaseDlg()
  28. {
  29. }
  30. void CSetBaseDlg::DoDataExchange(CDataExchange* pDX)
  31. {
  32. CPropertyPageEx::DoDataExchange(pDX);
  33. //{{AFX_DATA_MAP(CSetBaseDlg)
  34. DDX_Control(pDX, IDC_FXJBLOCKPATH_EXPLORER, m_btnFxjBlockPathExplorer);
  35. DDX_Control(pDX, IDC_F10FILE_EXPLORER, m_btnF10FileExplorer);
  36. DDX_Control(pDX, IDC_FXJFILE_EXPLORER, m_btnFxjFileExplorer);
  37. DDX_Control(pDX, IDC_TDXFILE_EXPLORER, m_btnTdxFileExplorer);
  38. DDX_Control(pDX, IDC_START, m_btnStart);
  39. DDX_Control(pDX, IDC_STATIC_PROGRESS, m_staticProgress);
  40. DDX_Control(pDX, IDC_PROGRESS, m_ctrlProgress);
  41. DDX_Text(pDX, IDC_FILE_TDX, m_strFileTdx);
  42. DDX_Text(pDX, IDC_FILE_FXJ, m_strFileFxj);
  43. DDX_Text(pDX, IDC_PATH_FXJBLOCK, m_strPathFxjBlock);
  44. DDX_Text(pDX, IDC_FILE_F10, m_strFileF10);
  45. //}}AFX_DATA_MAP
  46. }
  47. BEGIN_MESSAGE_MAP(CSetBaseDlg, CPropertyPageEx)
  48. //{{AFX_MSG_MAP(CSetBaseDlg)
  49. ON_BN_CLICKED(IDC_START, OnStart)
  50. ON_BN_CLICKED(IDC_TDXFILE_EXPLORER, OnTdxfileExplorer)
  51. ON_BN_CLICKED(IDC_F10FILE_EXPLORER, OnF10fileExplorer)
  52. ON_BN_CLICKED(IDC_FXJFILE_EXPLORER, OnFxjfileExplorer)
  53. ON_BN_CLICKED(IDC_FXJBLOCKPATH_EXPLORER, OnFxjblockpathExplorer)
  54. //}}AFX_MSG_MAP
  55. ON_MESSAGE(WM_USER_INSTALLBASEPROGRESS, OnInstallBaseProgress)
  56. END_MESSAGE_MAP()
  57. /////////////////////////////////////////////////////////////////////////////
  58. // CSetBaseDlg message handlers
  59. BOOL CSetBaseDlg::OnInitDialog() 
  60. {
  61. CPropertyPageEx::OnInitDialog();
  62. // TODO: Add extra initialization here
  63. return TRUE;  // return TRUE unless you set the focus to a control
  64.               // EXCEPTION: OCX Property Pages should return FALSE
  65. }
  66. void CSetBaseDlg::OnF10fileExplorer() 
  67. {
  68. UpdateData( );
  69. CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ENABLESIZING,
  70. "Base Package files (*.zip,*.txt)|*.zip;*.txt|All files (*.*)|*.*||", NULL);
  71. if( IDOK == dlg.DoModal() )
  72. {
  73. m_strFileF10 = dlg.GetPathName();
  74. UpdateData( FALSE );
  75. }
  76. }
  77. void CSetBaseDlg::OnTdxfileExplorer() 
  78. {
  79. UpdateData( );
  80. CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ENABLESIZING,
  81. "Tdx Finance Data files (*.zip,*.dbf)|*.zip;*.dbf|All files (*.*)|*.*||", NULL);
  82. if( IDOK == dlg.DoModal() )
  83. {
  84. m_strFileTdx = dlg.GetPathName();
  85. UpdateData( FALSE );
  86. }
  87. }
  88. void CSetBaseDlg::OnFxjfileExplorer() 
  89. {
  90. UpdateData( );
  91. CFileDialog dlg (TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ENABLESIZING,
  92. "Fxj Finance Data files (*.zip,*.fin)|*.zip;*.fin|All files (*.*)|*.*||", NULL);
  93. if( IDOK == dlg.DoModal() )
  94. {
  95. m_strFileFxj = dlg.GetPathName();
  96. UpdateData( FALSE );
  97. }
  98. }
  99. void CSetBaseDlg::OnFxjblockpathExplorer() 
  100. {
  101. UpdateData( );
  102. if( AfxDoSelectDirectory( m_strPathFxjBlock ) )
  103. UpdateData( FALSE );
  104. }
  105. LRESULT CSetBaseDlg::OnInstallBaseProgress(WPARAM wParam, LPARAM lParam)
  106. {
  107. // Progress
  108. m_ctrlProgress.SetPos( wParam );
  109. CString strProgressNew;
  110. strProgressNew.Format( "%.2f%%", 100.*wParam/STKLIB_MAXF_PROGRESS );
  111. CString strProgressOld;
  112. m_staticProgress.GetWindowText( strProgressOld );
  113. if( 0 != strProgressNew.Compare( strProgressOld ) )
  114. m_staticProgress.SetWindowText( strProgressNew );
  115. return 0L;
  116. }
  117. BOOL CALLBACK InstallBaseCallback(DWORD dwCode, DWORD dwProgress,
  118. LPCTSTR lpszMsg, void *cookie)
  119. {
  120. HWND hMainWnd = (HWND)cookie;
  121. if( PROG_PROGRESS == dwCode && ::IsWindow(hMainWnd) )
  122. {
  123. ::SendMessage( hMainWnd, WM_USER_INSTALLBASEPROGRESS, dwProgress, (LPARAM)lpszMsg );
  124. }
  125. return TRUE;
  126. }
  127. void CSetBaseDlg::OnStart() 
  128. {
  129. UpdateData( );
  130. CNetDatabase netdb;
  131. if( !netdb.SetRootPath( AfxGetProfile().GetSelfDBPath(), IStStore::dbtypeSelfDB ) )
  132. {
  133. AfxMessageBox( IDS_ROOTPATH_ERROR, MB_OK | MB_ICONINFORMATION );
  134. return;
  135. }
  136. if( ( m_strFileF10.IsEmpty() && m_strFileTdx.IsEmpty() && m_strFileFxj.IsEmpty() && m_strPathFxjBlock.IsEmpty() )
  137. || ( 0 != access(m_strFileF10,0) && 0 != access(m_strFileTdx,0) && 0 != access(m_strFileFxj,0) && 0 != access(m_strPathFxjBlock,0) ) )
  138. {
  139. AfxMessageBox( IDS_SETBASE_FILENOTEXISTS, MB_OK|MB_ICONINFORMATION );
  140. return;
  141. }
  142. m_btnStart.EnableWindow( FALSE );
  143. AfxGetApp()->WriteProfileString( "setbasedlg", "filef10", m_strFileF10 );
  144. AfxGetApp()->WriteProfileString( "setbasedlg", "filetdx", m_strFileTdx );
  145. AfxGetApp()->WriteProfileString( "setbasedlg", "filefxj", m_strFileFxj );
  146. AfxGetApp()->WriteProfileString( "setbasedlg", "pathfxjblock", m_strPathFxjBlock );
  147. m_ctrlProgress.SetWindowPos( NULL, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE );
  148. m_ctrlProgress.SetRange( 0, STKLIB_MAX_PROGRESS );
  149. m_ctrlProgress.SetPos( 0 );
  150. if( m_strFileF10.GetLength() > 0 )
  151. {
  152. CPackage pac;
  153. pac.m_nType = CPackage::packageBasetext;
  154. pac.m_bIsZipped = ( m_strFileF10.GetLength() > 4 && 0 == m_strFileF10.Right(4).CompareNoCase(".zip") );
  155. pac.m_strDescript = m_strFileF10;
  156. if( netdb.InstallPackageEx( pac, m_strFileF10, InstallBaseCallback, GetSafeHwnd() ) )
  157. AfxMessageBox( IDS_SETBASE_INSTALLF10OK, MB_OK|MB_ICONINFORMATION );
  158. else
  159. AfxMessageBox( IDS_SETBASE_INSTALLF10FAIL, MB_OK|MB_ICONINFORMATION );
  160. }
  161. if( m_strFileTdx.GetLength() > 0 )
  162. {
  163. CPackage pac;
  164. pac.m_nType = CPackage::packageBasetable;
  165. pac.m_bIsZipped = ( m_strFileTdx.GetLength() > 4 && 0 == m_strFileTdx.Right(4).CompareNoCase(".zip") );
  166. pac.m_strDescript = m_strFileTdx;
  167. if( netdb.InstallPackageEx( pac, m_strFileTdx, NULL, NULL ) )
  168. AfxMessageBox( IDS_SETBASE_INSTALLTDXOK, MB_OK|MB_ICONINFORMATION );
  169. else
  170. AfxMessageBox( IDS_SETBASE_INSTALLTDXFAIL, MB_OK|MB_ICONINFORMATION );
  171. }
  172. if( m_strFileFxj.GetLength() > 0 )
  173. {
  174. CPackage pac;
  175. pac.m_nType = CPackage::packageBasetable;
  176. pac.m_bIsZipped = ( m_strFileFxj.GetLength() > 4 && 0 == m_strFileFxj.Right(4).CompareNoCase(".zip") );
  177. pac.m_strDescript = m_strFileFxj;
  178. if( netdb.InstallPackageEx( pac, m_strFileFxj, NULL, NULL ) )
  179. AfxMessageBox( IDS_SETBASE_INSTALLFXJOK, MB_OK|MB_ICONINFORMATION );
  180. else
  181. AfxMessageBox( IDS_SETBASE_INSTALLFXJFAIL, MB_OK|MB_ICONINFORMATION );
  182. }
  183. if( m_strPathFxjBlock.GetLength() > 0 )
  184. {
  185. CPackage pac;
  186. pac.m_nType = CPackage::packageCode;
  187. pac.m_bIsZipped = ( m_strPathFxjBlock.GetLength() > 4 && 0 == m_strPathFxjBlock.Right(4).CompareNoCase(".zip") );
  188. pac.m_strDescript = m_strPathFxjBlock;
  189. BOOL bOK = FALSE;
  190. int nFileCountTotal = CNetDatabase::GetFileCount( m_strPathFxjBlock, FALSE );
  191. DWORD attr = GetFileAttributes( m_strPathFxjBlock );
  192. if( 0xFFFFFFFF != attr && (attr & FILE_ATTRIBUTE_DIRECTORY) )
  193. bOK = netdb.InstallPackagePath( pac, m_strPathFxjBlock, InstallBaseCallback, GetSafeHwnd(), nFileCountTotal, 0, FALSE );
  194. else
  195. bOK = netdb.InstallPackage( pac, m_strPathFxjBlock, InstallBaseCallback, GetSafeHwnd() );
  196. if( bOK )
  197. {
  198. AfxGetDomainContainer().Store( AfxGetProfile().GetDomainFile() );
  199. AfxMessageBox( IDS_SETBASE_INSTALLFXJBLOCKOK, MB_OK|MB_ICONINFORMATION );
  200. }
  201. else
  202. AfxMessageBox( IDS_SETBASE_INSTALLFXJBLOCKFAIL, MB_OK|MB_ICONINFORMATION );
  203. }
  204. m_ctrlProgress.SetPos( STKLIB_MAX_PROGRESS );
  205. m_btnStart.EnableWindow( TRUE );
  206. AfxGetStockContainer().ReloadBase( &AfxGetDB() );
  207. AfxGetSListStockContainer().ReRetrieveFromStatic( AfxGetActiveStrategy() );
  208. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_GRAPHVIEW, NULL );
  209. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_BASEVIEW, NULL );
  210. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SLISTVIEW, NULL );
  211. AfxGetStaticDoc()->UpdateAllViews( NULL, UPDATE_HINT_SELECTORVIEW, NULL );
  212. }