realedit.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:9k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * realedit.h
  3.  *
  4.  * Real number edit box control.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: realedit.h,v $
  30.  * Revision 1.16  1999/03/10 03:49:53  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.15  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.14  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.13  1998/09/23 06:28:43  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.12  1995/06/17 11:13:13  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.11  1995/03/14 12:42:23  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.10  1994/12/21  11:53:25  robertj
  49.  * Documentation and variable normalisation.
  50.  *
  51.  * Revision 1.9  1994/10/30  11:47:02  robertj
  52.  * Changed mechanism for doing notification callback functions.
  53.  *
  54.  * Revision 1.8  1994/08/23  11:32:52  robertj
  55.  * Oops
  56.  *
  57.  * Revision 1.7  1994/08/22  00:46:48  robertj
  58.  * Added pragma fro GNU C++ compiler.
  59.  *
  60.  * Revision 1.6  1994/06/25  11:55:15  robertj
  61.  * Unix version synchronisation.
  62.  *
  63.  * Revision 1.5  1994/03/07  07:38:19  robertj
  64.  * Major enhancementsacross the board.
  65.  *
  66.  * Revision 1.4  1994/01/03  04:42:23  robertj
  67.  * Mass changes to common container classes and interactors etc etc etc.
  68.  *
  69.  * Revision 1.3  1993/09/27  16:35:25  robertj
  70.  * Removed special constructor for dialog resource loading.
  71.  *
  72.  * Revision 1.2  1993/07/14  12:49:16  robertj
  73.  * Fixed RCS keywords.
  74.  *
  75.  */
  76. #define _PFLOATEDITBOX
  77. #ifdef __GNUC__
  78. #pragma interface
  79. #endif
  80. #include <float.h>
  81. /**A text editing box that only allows numbers to be entered.
  82.  */
  83. class PFloatEditBox : public PNumberEditBox
  84. {
  85.   PCLASSINFO(PFloatEditBox, PNumberEditBox);
  86.   public:
  87.    /**Create a number edit box for decimal values with the parameters
  88.        specified, validation to assure the user does not enter values outside
  89.        the range specified.
  90.      */
  91.     PFloatEditBox(
  92.       PInteractor * parent,   /// Interactor into which the control is placed.
  93.       double min = -FLT_MAX,  /// Minimum value allowed for entry.
  94.       double max = FLT_MAX,   /// Maximum value allowed for entry.
  95.       double val = 0,         /// Initial value for editing.
  96.       double ndg = 1,         /// Amount to change via the nudge buttons.
  97.       unsigned decs = 0       /// Number of decimals to display number in.
  98.     );
  99.       /** Create control from interactor layout with the specified control ID. */
  100.     PFloatEditBox(
  101.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  102.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  103.       const PNotifier & notify,   /// Function to call when changes state.
  104.       double * valuePtr           /// Variable to change to the editor value.
  105.     );
  106.     /** Destroy the number edit box. */
  107.     virtual ~PFloatEditBox();
  108.     /**@name New functions for class */
  109.    /**Set the value of the number edit box control. This will be updated on
  110.        the screen immediately (within OS constraints).
  111.      */
  112.     void SetValue(
  113.       double val    /// New value for edit box.
  114.     );
  115.    /**Get the current contents of the number edit box control as entered by
  116.        the user, or set via the Ref{SetValue()} function.
  117.        @return
  118.        floating point for the current contents of the edit box.
  119.      */
  120.     double GetValue() const;
  121.    /**Get the current value pointer associated with the control. The variable
  122.        pointed to by this is autamatically updated with the current value of
  123.        the edit box.
  124.        @return
  125.        value pointer associated with the control.
  126.      */
  127.     double * GetValuePointer() const;
  128.    /**Set the current value pointer associated with the control. The variable
  129.        pointed to by this is autamatically updated with the current value of
  130.        the edit box.
  131.      */
  132.     void SetValuePointer(
  133.       double * ptr  /// New value pointer to associate with the control.
  134.     );
  135.    /**Set the maximum value that may be entered in the number edit box.
  136.      */
  137.     void SetMaximum(
  138.       double val    /// New maximum value for edit box.
  139.     );
  140.    /**Get the maximum value that may be entered in the number edit box.
  141.     
  142.        @return
  143.        floating point maximum value.
  144.      */
  145.     double GetMaximum();
  146.    /**Set the minimum value that may be entered in the number edit box.
  147.      */
  148.     void SetMinimum(
  149.       double val    /// New minimum value for the edit box.
  150.     );
  151.    /**Get the minimum value that may be entered in the number edit box.
  152.     
  153.        @return
  154.        floating point minimum value.
  155.      */
  156.     double GetMinimum();
  157.    /**Set the nudge value that will be used by the nudge buttons in the
  158.        number edit box.
  159.      */
  160.     void SetNudge(
  161.       double val    /// New nudge amount for the edit box nudge buttons.
  162.     );
  163.    /**Get the nudge value that will be used by the nudge buttons in the
  164.        number edit box.
  165.     
  166.        @return
  167.        floating point minimum value.
  168.      */
  169.     double GetNudge();
  170.    /**Set the number decimals that will be displayed in the number edit box.
  171.        The user may enter in more decimals than specified and they will be
  172.        converted, but when a new value is displayed via Ref{SetValue()} call
  173.        or via using the nudge buttons, only this number of decimals will be
  174.        displayed.
  175.      */
  176.     void SetDecimals(
  177.       unsigned decs  /// New number of decimals for number display in edit box.
  178.     );
  179.    /**Get the number decimals that will be displayed in the number edit box.
  180.        The user may enter in more decimals than specified and they will be
  181.        converted, but when a new value is displayed via Ref{SetValue()} call
  182.        or via using the nudge buttons, only this number of decimals will be
  183.        displayed.
  184.        
  185.        @return
  186.        number of decimals
  187.      */
  188.     unsigned GetDecimals();
  189.   protected:
  190.   /**@name Overrides from class PInteractor */
  191.    /**The system calls this whenever the system wishes to change focus to
  192.        another interactor in the same layout or titled window.
  193.        
  194.        @return
  195.        TRUE to allow the change and FALSE to cause the change not to occur and
  196.        the focus restored to the control.
  197.      */
  198.     virtual BOOL OnEndInput();
  199.    /**The system calls this whenever a keyboard key was pressed and this
  200.        interactor had the focus. The string is the translated ANSI/UNICODE
  201.        representation of the key combination.
  202.      */
  203.     virtual void OnKeyInput(
  204.       const PString & str   /// String representation of the key pressed.
  205.     );
  206.   /**@name Overrides from class PControl */
  207.    /**This function transfers the value of the control to or from the variable
  208.        pointed to by the value pointer member variable.
  209.      */
  210.     virtual void TransferValue(
  211.       int option 
  212.      /**Transfer value option. When this is -1 when the function transfers
  213.          the value from the value pointer into the control. This is called in
  214.          Ref{PDialog::OnInit()} function. When option is zero then the
  215.          function transfers the value from the control to the value pointer
  216.          variable. This is called just before the callback function every time
  217.          the edit box value changes.
  218.        */
  219.     );
  220.   /**@name Overrides from class PNumberClass */
  221.     /** Add the nudge value to the edit box value. */
  222.     virtual void AddNudge();
  223.     /** Subtract the nudge value to the edit box value. */
  224.     virtual void SubtractNudge();
  225.       
  226.   /**@name Member variables */
  227.       /** Minimum value possible for edit box. */
  228.     double minimum;
  229.       /** Minimum value possible for edit box. */
  230.     double maximum;
  231.       /** Amount to change the value with the nudge buttons. */
  232.     double nudge;
  233.       /** Number of decimals for display. */
  234.     unsigned decimals;
  235. #ifdef DOC_PLUS_PLUS
  236. };
  237. #endif
  238. // Class declaration continued in platform specific header file ///////////////