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

金融证券系统

开发平台:

Visual C++

  1. // SetRate.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "SetRate.h"
  5. #include <math.h>
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CSetRate property page
  13. IMPLEMENT_DYNCREATE(CSetRate, CPropertyPageEx)
  14. CSetRate::CSetRate() : CPropertyPageEx(CSetRate::IDD)
  15. {
  16. //{{AFX_DATA_INIT(CSetRate)
  17. m_strTaxShaa = _T("");
  18. m_strTaxShab = _T("");
  19. m_strTaxShafund = _T("");
  20. m_strTaxSzna = _T("");
  21. m_strTaxSznb = _T("");
  22. m_strTaxSznfund = _T("");
  23. //}}AFX_DATA_INIT
  24. m_pStrategy = NULL;
  25. m_dwButtonFlags = PSWIZB_BACK | PSWIZB_NEXT;
  26. m_bModified = FALSE;
  27. }
  28. CSetRate::CSetRate( UINT nIDCaption, UINT nIDTitle, UINT nIDSubTitle )
  29.  : CPropertyPageEx(CSetRate::IDD,nIDCaption, nIDTitle, nIDSubTitle)
  30. {
  31. m_strTaxShaa = _T("");
  32. m_strTaxShab = _T("");
  33. m_strTaxShafund = _T("");
  34. m_strTaxSzna = _T("");
  35. m_strTaxSznb = _T("");
  36. m_strTaxSznfund = _T("");
  37. m_pStrategy = NULL;
  38. m_dwButtonFlags = PSWIZB_BACK | PSWIZB_NEXT;
  39. m_bModified = FALSE;
  40. }
  41. CSetRate::~CSetRate()
  42. {
  43. }
  44. void CSetRate::SetStrategy( CStrategy * pStrategy )
  45. {
  46. m_pStrategy = pStrategy;
  47. }
  48. BOOL CSetRate::ValidData( )
  49. {
  50. if( IsNumber(m_strTaxShaa,FALSE) && IsNumber(m_strTaxShab,FALSE) && IsNumber(m_strTaxShafund,FALSE)
  51. && IsNumber(m_strTaxSzna,FALSE) && IsNumber(m_strTaxSznb,FALSE) && IsNumber(m_strTaxSznfund,FALSE) )
  52. {
  53. return TRUE;
  54. }
  55. AfxMessageBox( IDS_SETRATE_NOTNUMBER, MB_OK | MB_ICONINFORMATION );
  56. return FALSE;
  57. }
  58. BOOL CSetRate::LoadFromStrategy( )
  59. {
  60. if( m_pStrategy )
  61. {
  62. CRateParam & rate = m_pStrategy->GetRateParam( );
  63. m_strTaxShaa.Format( "%.4f", rate.m_dShaa );
  64. m_strTaxShab.Format( "%.4f", rate.m_dShab );
  65. m_strTaxShafund.Format( "%.4f", rate.m_dShafund );
  66. m_strTaxSzna.Format( "%.4f", rate.m_dSzna );
  67. m_strTaxSznb.Format( "%.4f", rate.m_dSznb );
  68. m_strTaxSznfund.Format( "%.4f", rate.m_dSznfund );
  69. return TRUE;
  70. }
  71. return FALSE;
  72. }
  73. BOOL CSetRate::StoreToStrategy( )
  74. {
  75. if( m_pStrategy )
  76. {
  77. CRateParam & rate = m_pStrategy->GetRateParam( );
  78. m_bModified = (m_bModified || fabs(rate.m_dShaa-atof(m_strTaxShaa)) > 1e-6 );
  79. m_bModified = (m_bModified || fabs(rate.m_dShab-atof(m_strTaxShab)) > 1e-6 );
  80. m_bModified = (m_bModified || fabs(rate.m_dShafund-atof(m_strTaxShafund)) > 1e-6 );
  81. m_bModified = (m_bModified || fabs(rate.m_dSzna-atof(m_strTaxSzna)) > 1e-6 );
  82. m_bModified = (m_bModified || fabs(rate.m_dSznb-atof(m_strTaxSznb)) > 1e-6 );
  83. m_bModified = (m_bModified || fabs(rate.m_dSznfund-atof(m_strTaxSznfund)) > 1e-6 );
  84. rate.m_dShaa = atof(m_strTaxShaa);
  85. rate.m_dShab = atof(m_strTaxShab);
  86. rate.m_dShafund = atof(m_strTaxShafund);
  87. rate.m_dSzna = atof(m_strTaxSzna);
  88. rate.m_dSznb = atof(m_strTaxSznb);
  89. rate.m_dSznfund = atof(m_strTaxSznfund);
  90. return TRUE;
  91. }
  92. return FALSE;
  93. }
  94. void CSetRate::DoDataExchange(CDataExchange* pDX)
  95. {
  96. CPropertyPageEx::DoDataExchange(pDX);
  97. //{{AFX_DATA_MAP(CSetRate)
  98. DDX_Text(pDX, IDC_TAXSHAA, m_strTaxShaa);
  99. DDX_Text(pDX, IDC_TAXSHAB, m_strTaxShab);
  100. DDX_Text(pDX, IDC_TAXSHAFUND, m_strTaxShafund);
  101. DDX_Text(pDX, IDC_TAXSZNA, m_strTaxSzna);
  102. DDX_Text(pDX, IDC_TAXSZNB, m_strTaxSznb);
  103. DDX_Text(pDX, IDC_TAXSZNFUND, m_strTaxSznfund);
  104. //}}AFX_DATA_MAP
  105. }
  106. BEGIN_MESSAGE_MAP(CSetRate, CPropertyPageEx)
  107. //{{AFX_MSG_MAP(CSetRate)
  108. //}}AFX_MSG_MAP
  109. END_MESSAGE_MAP()
  110. /////////////////////////////////////////////////////////////////////////////
  111. // CSetRate message handlers
  112. BOOL CSetRate::OnInitDialog() 
  113. {
  114. CPropertyPageEx::OnInitDialog();
  115. // TODO: Add extra initialization here
  116. ASSERT( m_pStrategy );
  117. LoadFromStrategy( );
  118. UpdateData( FALSE );
  119. return TRUE;  // return TRUE unless you set the focus to a control
  120.               // EXCEPTION: OCX Property Pages should return FALSE
  121. }
  122. BOOL CSetRate::OnKillActive() 
  123. {
  124. // TODO: Add your specialized code here and/or call the base class
  125. UpdateData( );
  126. if( !ValidData( ) )
  127. return FALSE;
  128. StoreToStrategy( );
  129. return CPropertyPageEx::OnKillActive();
  130. }
  131. LRESULT CSetRate::OnWizardBack() 
  132. {
  133. // TODO: Add your specialized code here and/or call the base class
  134. UpdateData( );
  135. if( !ValidData( ) )
  136. return -1L;
  137. StoreToStrategy( );
  138. return CPropertyPageEx::OnWizardBack();
  139. }
  140. LRESULT CSetRate::OnWizardNext() 
  141. {
  142. // TODO: Add your specialized code here and/or call the base class
  143. UpdateData( );
  144. if( !ValidData( ) )
  145. return -1L;
  146. StoreToStrategy( );
  147. return CPropertyPageEx::OnWizardNext();
  148. }
  149. BOOL CSetRate::OnWizardFinish() 
  150. {
  151. // Add your specialized code here and/or call the base class
  152. UpdateData( );
  153. if( !ValidData( ) )
  154. return FALSE;
  155. StoreToStrategy( );
  156. return CPropertyPageEx::OnWizardFinish();
  157. }
  158. void CSetRate::OnOK() 
  159. {
  160. // TODO: Add your specialized code here and/or call the base class
  161. UpdateData( );
  162. if( !ValidData( ) )
  163. return;
  164. StoreToStrategy( );
  165. CPropertyPageEx::OnOK();
  166. }
  167. BOOL CSetRate::PreTranslateMessage(MSG* pMsg) 
  168. {
  169. // TODO: Add your specialized code here and/or call the base class
  170. if( WM_KEYDOWN == pMsg->message && VK_RETURN == pMsg->wParam )
  171. return TRUE;
  172. return CPropertyPageEx::PreTranslateMessage(pMsg);
  173. }
  174. BOOL CSetRate::OnSetActive() 
  175. {
  176. // TODO: Add your specialized code here and/or call the base class
  177. CPropertySheetEx * pSheet = DYNAMIC_DOWNCAST( CPropertySheetEx, GetParent() );
  178. if( pSheet )
  179. {
  180. pSheet->SetWizardButtons( m_dwButtonFlags );
  181. }
  182. return CPropertyPageEx::OnSetActive();
  183. }