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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * intedit.h
  3.  *
  4.  * Integer edit 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: intedit.h,v $
  30.  * Revision 1.16  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.15  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.14  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.13  1998/09/23 06:23:56  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.12  1995/06/17 11:12:41  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.11  1995/03/14 12:41:35  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.10  1994/12/21  11:53:09  robertj
  49.  * Documentation and variable normalisation.
  50.  *
  51.  * Revision 1.9  1994/10/30  11:46:42  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 _PINTEGEREDITBOX
  77. #ifdef __GNUC__
  78. #pragma interface
  79. #endif
  80. #include <limits.h>
  81. /**A text editing box that only allows numbers to be entered.
  82.  */
  83. class PIntegerEditBox : public PNumberEditBox
  84. {
  85.   PCLASSINFO(PIntegerEditBox, PNumberEditBox);
  86.   public:
  87.    /**Create a number edit box for integer values with the parameters
  88.        specified, validation to assure the user does not enter values outside
  89.        the range specified.
  90.      */
  91.     PIntegerEditBox(
  92.       PInteractor * parent,   /// Interactor into which the control is placed.
  93.       long min = LONG_MIN,    /// Minimum value allowed for entry.
  94.       long max = LONG_MAX,    /// Maximum value allowed for entry.
  95.       long val = 0,           /// Initial value for editing.
  96.       long ndg = 1,           /// Amount to change via the nudge buttons.
  97.       BYTE numBase = 10
  98.         /// Radix base for number conversion, this may only be from 2 to 36.
  99.     );
  100.     /** Create control from interactor layout with the specified control ID. */
  101.     PIntegerEditBox(
  102.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  103.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  104.       const PNotifier & notify,   /// Function to call when changes state.
  105.       long * valuePtr             /// Variable to change to the editor value.
  106.     );
  107.     /** Destroy the number edit box. */
  108.     virtual ~PIntegerEditBox();
  109.     /**@name New functions for class */
  110.    /**Set the value of the number edit box control. This will be updated on
  111.        the screen immediately (within OS constraints).
  112.      */
  113.     void SetValue(
  114.       long val    /// New value for edit box.
  115.     );
  116.    /**Get the current contents of the number edit box control as entered by
  117.        the user, or set via the Ref{SetValue()} function.
  118.        @return
  119.        integer for the current contents of the edit box.
  120.      */
  121.     long GetValue() const;
  122.    /**Get the current value pointer associated with the control. The variable
  123.        pointed to by this is autamatically updated with the current value of
  124.        the edit box.
  125.        @return
  126.        value pointer associated with the control.
  127.      */
  128.     long * GetValuePointer() const;
  129.    /**Set the current value pointer associated with the control. The variable
  130.        pointed to by this is autamatically updated with the current value of
  131.        the edit box.
  132.      */
  133.     void SetValuePointer(
  134.       long * ptr  /// New value pointer to associate with the control.
  135.     );
  136.    /**Set the maximum value that may be entered in the number edit box.
  137.      */
  138.     void SetMaximum(
  139.       long val    /// New maximum value for edit box.
  140.     );
  141.    /**Get the maximum value that may be entered in the number edit box.
  142.     
  143.        @return
  144.        integer maximum value.
  145.      */
  146.     long GetMaximum();
  147.    /**Set the minimum value that may be entered in the number edit box.
  148.      */
  149.     void SetMinimum(
  150.       long val    /// New minimum value for the edit box.
  151.     );
  152.    /**Get the minimum value that may be entered in the number edit box.
  153.     
  154.        @return
  155.        integer minimum value.
  156.      */
  157.     long GetMinimum();
  158.    /**Set the nudge value that will be used by the nudge buttons in the
  159.        number edit box.
  160.      */
  161.     void SetNudge(
  162.       long val    /// New nudge amount for the edit box nudge buttons.
  163.     );
  164.    /**Get the nudge value that will be used by the nudge buttons in the
  165.        number edit box.
  166.     
  167.        @return
  168.        integer minimum value.
  169.      */
  170.     long GetNudge();
  171.    /**Set the number radix that will be used in the number edit box.
  172.     
  173.        The number base may be from 2 to 36. Typical values are 2 for binary
  174.        notation, 8 for octal notation, 10 for the traditional decimal notation
  175.        and 16 for hexadecimal.
  176.      */
  177.     void SetBase(
  178.       BYTE numBase  /// New number base for integer conversion.
  179.     );
  180.    /**Get the number radix that will be used in the number edit box.
  181.     
  182.        The number base may be from 2 to 36. Typical values are 2 for binary
  183.        notation, 8 for octal notation, 10 for the traditional decimal notation
  184.        and 16 for hexadecimal.
  185.        @return
  186.        number base for conversion.
  187.      */
  188.     BYTE GetBase();
  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 PNumberEditBox */
  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.   // Member variables
  227.       /** Minimum value possible for edit box. */
  228.     long minimum;
  229.       /** Minimum value possible for edit box. */
  230.     long maximum;
  231.       /** Amount to change the value with the nudge buttons. */
  232.     long nudge;
  233.       /** Number base radix for integer conversion. */
  234.     BYTE base;
  235. #ifdef DOC_PLUS_PLUS
  236. };
  237. #endif
  238. // Class declaration continued in platform specific header file ///////////////