FloatEdit.h
上传用户:chengtong
上传日期:2007-01-02
资源大小:18k
文件大小:4k
源码类别:

编辑框

开发平台:

Visual C++

  1. // 
  2. // CFloatEdit prototypes
  3. // Daniel Gabroveanu, January 2, 1999
  4. //
  5. #if !defined(AFX_FLOATEDIT_H__449B9681_9A73_11D2_B5AC_5254ABDD288C__INCLUDED_)
  6. #define AFX_FLOATEDIT_H__449B9681_9A73_11D2_B5AC_5254ABDD288C__INCLUDED_
  7. #if _MSC_VER >= 1000
  8. #pragma once
  9. #endif // _MSC_VER >= 1000
  10. // FloatEdit.h : header file
  11. //
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CFloatEdit window
  14. class CFloatEdit : public CEdit
  15. {
  16. // Construction and methodes
  17. public:
  18. CFloatEdit();
  19. virtual ~CFloatEdit();
  20.   
  21.   double GetValue(void); // get the stored value
  22.   void SetValue(double dblValue); // set the new stored value
  23.   int GetDecimals( void ); // get the decimal places
  24.   void SetDecimals( int nDecimals ); // set the decimal places
  25.   
  26.   void EnableCommas(BOOL bNewHasCommas); // enable / disable commas
  27.   
  28.   void SetComma(char cNewComma); // setting the comma character
  29.   char GetComma(void);  // getting the comma characters
  30.   void SetDecimalPoint(char cNewDecimal); // setting the decimal point character
  31.   char GetDecimalPoint(void);  // getting the decimal point character
  32.   void LocalSettings(void); // apply the local settings for comma and decimal point
  33.                                
  34. private:
  35. // Attributes
  36. private:
  37.   double m_dblCurrentValue; // the current value
  38.   BOOL m_bCommas;       // TRUE if has commas
  39.   char m_cComma;        // the comma character
  40.   char m_cDecimalPoint; // the decimal point character
  41.   int m_nDecimals;      // the number of decimal places after the decimal point
  42.   CString m_strSavedString;
  43.   int m_nSavedSelection;
  44. // Operations
  45. // Overrides
  46. // ClassWizard generated virtual function overrides
  47. //{{AFX_VIRTUAL(CFloatEdit)
  48. public:
  49. virtual BOOL PreTranslateMessage(MSG* pMsg);
  50. //}}AFX_VIRTUAL
  51. // Implementation
  52. private:
  53.   void removeFirstComma(CString &);
  54.   void processSign( UINT nCharacter);
  55.   void processCharacter( UINT cCurrent);
  56.   void toString(double dblValue, CString & strCurrent);
  57.   void putCommas(CString strSource, CString & strDestination);
  58.   void removeCommas( CString & strSource);
  59.   
  60.   void deleteCharLeft(CString& strSource, int nSelection, int nNumber);
  61.   void deleteCharRight(CString& strSource, int nSelection, int nNumber);
  62.   
  63.   BOOL bIsRightCharacterSign(CString strCurrent, int nSelection);
  64.   BOOL bIsLeftDecimal(CString strSource, int nSelection);
  65.   
  66.   BOOL bIsLeftCharacterComma(CString strSource, int nSelection);
  67.   BOOL bIsRightCharacterComma(CString strSource, int nSelection);
  68.   
  69.   BOOL bIsLeftCharacterDecimal(CString strSource, int nSelection);
  70.   BOOL bIsRightCharacterDecimal(CString strSource, int nSelection);
  71.   void getStringAndSelection(CString& strCurrent, int & nSelection);
  72.   void setStringAndSelection(CString strNew, int nSelection);
  73.   void getIntegerAndDecimal(CString strCurrent, CString & strInteger, CString & strDecimal);
  74.   void saveStringAndSelection(void);
  75.   void deleteSelection(void);
  76.   void processDigit(UINT cCurrent);
  77.   void processDelete();
  78.   void processBackspace();
  79.   void processDecimalPoint();
  80.   void getLocaleInformation(char & cDecimal, char & cComma);
  81.   BOOL hasSelection(void);
  82.   CString midString(CString strIn, int nStart, int nLength);
  83. // Generated message map functions
  84. protected:
  85. //{{AFX_MSG(CFloatEdit)
  86. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  87. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  88. //}}AFX_MSG
  89. DECLARE_MESSAGE_MAP()
  90. };
  91. /////////////////////////////////////////////////////////////////////////////
  92. //{{AFX_INSERT_LOCATION}}
  93. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  94. #endif // !defined(AFX_FLOATEDIT_H__449B9681_9A73_11D2_B5AC_5254ABDD288C__INCLUDED_)