HMXNumEdit.cpp
上传用户:yinguanfa
上传日期:2022-02-19
资源大小:400k
文件大小:3k
源码类别:

ListView/ListBox

开发平台:

Visual C++

  1. // HMXNumEdit.cpp: implementation of the CHMXNumEdit class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "HMXNumEdit.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. CHMXNumEdit::CHMXNumEdit()
  15. {
  16. m_bEngFormat = false;
  17. }
  18. CHMXNumEdit::~CHMXNumEdit()
  19. {
  20. }
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CHMXNumEdit
  23. BEGIN_MESSAGE_MAP(CHMXNumEdit, CHMXEdit)
  24. //{{AFX_MSG_MAP(CHMXNumEdit)
  25. ON_WM_CHAR()
  26. ON_CONTROL_REFLECT(EN_KILLFOCUS, OnKillFocus)
  27. ON_WM_CTLCOLOR_REFLECT()
  28. //}}AFX_MSG_MAP
  29. END_MESSAGE_MAP()
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CHMXNumEdit message handlers
  32. void CHMXNumEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
  33. {
  34. // TODO: Add your message handler code here and/or call default
  35. if( isdigit(nChar) ||
  36. nChar == '+' ||
  37. nChar == '-' ||
  38. nChar == '.' ||
  39. nChar == (unsigned)*localeconv()->decimal_point ||
  40. nChar == 'e' ||
  41. nChar == 'E' ||
  42. nChar == VK_DELETE ||
  43. nChar == VK_BACK)
  44. if( nChar == '.' )
  45. if( nChar == UINT(*localeconv()->decimal_point))
  46. CHMXEdit::OnChar(nChar, nRepCnt, nFlags);
  47. else
  48. SendMessage( WM_CHAR, *localeconv()->decimal_point, 0);
  49. else
  50. CHMXEdit::OnChar(nChar, nRepCnt, nFlags);
  51. }
  52. void CHMXNumEdit::OnKillFocus()
  53. {
  54. // TODO: Add your control notification handler code here
  55. if( m_bEngFormat ) {
  56. CString sBuffer;
  57. double nVal;
  58. GetWindowText( sBuffer );
  59. if( !sBuffer.IsEmpty() ) {
  60. nVal = atof(sBuffer);
  61. sBuffer.Format("%g", nVal);
  62. SetWindowText( sBuffer);
  63. }
  64. }
  65. CHMXEdit::OnKillFocus();
  66. }
  67. /********************************************************************
  68. created: 2001/10/25
  69. in: bEngFormat
  70. out: none
  71. return: always true
  72.   
  73. purpose: set 'Engineers' format
  74. *********************************************************************/
  75. bool CHMXNumEdit::SetEngFormat(bool bEngFormat)
  76. {
  77. m_bEngFormat = bEngFormat;
  78. return true;
  79. }
  80. /********************************************************************
  81. created: 2001/10/25
  82. in: none
  83. out: none
  84. return: bEngFormat
  85.   
  86. purpose: get 'Engineers' format
  87. *********************************************************************/
  88. bool CHMXNumEdit::GetEngFormat()
  89. {
  90. return m_bEngFormat;
  91. }
  92. HBRUSH CHMXNumEdit::CtlColor(CDC* pDC, UINT nCtlColor)
  93. {
  94. // TODO: Change any attributes of the DC here
  95. return CHMXEdit::CtlColor(pDC, nCtlColor);
  96. }