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

金融证券系统

开发平台:

Visual C++

  1. // CacheLoadDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "CacheLoadDlg.h"
  5. #include "../Dialogs.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CCacheLoadDlg dialog
  13. CCacheLoadDlg::CCacheLoadDlg(CWnd* pParent /*=NULL*/)
  14. : CDialog(CCacheLoadDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CCacheLoadDlg)
  17. m_tmDate = 0;
  18. //}}AFX_DATA_INIT
  19. DWORD dwDate = 0;
  20. CSPTime sptime;
  21. if( AfxGetStockContainer().GetPioneerTechDate( &dwDate )
  22. && sptime.FromStockTimeDay( dwDate ) )
  23. {
  24. m_tmDate = sptime.GetTime();
  25. }
  26. else
  27. {
  28. m_tmDate = CSPTime::GetCurrentTime();
  29. CSPTimeSpan span(AfxGetProfile().GetCacheDays()*7/5,0,0,0);
  30. m_tmDate = m_tmDate - span;
  31. }
  32. }
  33. void CCacheLoadDlg::DoDataExchange(CDataExchange* pDX)
  34. {
  35. CDialog::DoDataExchange(pDX);
  36. //{{AFX_DATA_MAP(CCacheLoadDlg)
  37. DDX_DateTimeCtrl(pDX, IDC_DATE, m_tmDate);
  38. //}}AFX_DATA_MAP
  39. }
  40. BEGIN_MESSAGE_MAP(CCacheLoadDlg, CDialog)
  41. //{{AFX_MSG_MAP(CCacheLoadDlg)
  42. //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CCacheLoadDlg message handlers
  46. BOOL CCacheLoadDlg::OnInitDialog() 
  47. {
  48. CDialog::OnInitDialog();
  49. // TODO: Add extra initialization here
  50. return TRUE;  // return TRUE unless you set the focus to a control
  51.               // EXCEPTION: OCX Property Pages should return FALSE
  52. }
  53. BOOL CALLBACK CacheLoadCallback(DWORD dwType, DWORD dwValue,
  54. LPCTSTR lpszMsg, void *cookie)
  55. {
  56. HWND hWnd = (HWND)cookie;
  57. if( PROG_PROGRESS == dwType )
  58. {
  59. ::SendMessage( hWnd, WM_USER_WAITPROGRESS, dwValue, (LPARAM)lpszMsg );
  60. }
  61. MSG msg;
  62. while (::PeekMessage(&msg, NULL, NULL, NULL, PM_NOREMOVE) )
  63. AfxGetApp()->PumpMessage();
  64. return TRUE;
  65. }
  66. void CCacheLoadDlg::OnOK() 
  67. {
  68. UpdateData();
  69. int nCacheDays = -1;
  70. CSPTime sptime = m_tmDate.GetTime();
  71. CKData & kdata = AfxGetStockMain().GetKDataDay();
  72. DWORD dwDate = sptime.ToStockTimeDay();
  73. int nIndex = kdata.GetAboutIndexByDate(dwDate);
  74. if( nIndex >= 0 )
  75. nCacheDays = kdata.GetSize() - nIndex + 1;
  76. else
  77. nCacheDays = kdata.GetSize();
  78. AfxGetProfile().SetCacheDays( nCacheDays );
  79. // LOAD
  80. CWaitDlg dlg;
  81. CWaitDlg wait( AfxGetMainWnd(), FALSE );
  82. wait.SetProgressRange( 0, STKLIB_MAX_PROGRESS );
  83. AfxGetDB().LoadKDataCache( AfxGetStockContainer(), CacheLoadCallback, wait.GetSafeHwnd(), 0, STKLIB_MAX_PROGRESS );
  84. wait.DestroyWindow();
  85. CDialog::OnOK();
  86. }