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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * numedbox.h
  3.  *
  4.  * Named control class
  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: numedbox.h,v $
  30.  * Revision 1.17  1999/03/10 03:49:52  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.16  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.15  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.14  1998/09/23 06:24:29  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.13  1995/03/14 12:41:52  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.12  1994/12/21  11:53:16  robertj
  46.  * Documentation and variable normalisation.
  47.  *
  48.  * Revision 1.11  1994/10/30  11:46:54  robertj
  49.  * Changed mechanism for doing notification callback functions.
  50.  *
  51.  * Revision 1.10  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.9  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.8  1994/03/07  07:38:19  robertj
  58.  * Major enhancementsacross the board.
  59.  *
  60.  * Revision 1.7  1994/01/03  04:42:23  robertj
  61.  * Mass changes to common container classes and interactors etc etc etc.
  62.  *
  63.  * Revision 1.6  1993/09/27  16:35:25  robertj
  64.  * Removed special constructor for dialog resource loading.
  65.  *
  66.  * Revision 1.5  1993/08/24  00:27:59  robertj
  67.  * Reimplemented nudge buttons for new push button arrangement.
  68.  *
  69.  * Revision 1.4  1993/08/21  01:50:33  robertj
  70.  * Made Clone() function optional, default will assert if called.
  71.  *
  72.  * Revision 1.3  1993/08/21  01:07:35  robertj
  73.  * Added nudge buttons
  74.  *
  75.  * Revision 1.2  1993/07/14  12:49:16  robertj
  76.  * Fixed RCS keywords.
  77.  *
  78.  */
  79. #define _PNUMBEREDITBOX
  80. #ifdef __GNUC__
  81. #pragma interface
  82. #endif
  83. /**A text editing box that only allows numbers to be entered. This usually
  84.    will have next to the editable text box two "nudge buttons" which allow the
  85.    value of the number edit box to incremented or decremented by a preset
  86.    amount.
  87.    
  88.    This is an abstract class for any form of numeric input. There are two main
  89.    descendents with PWLib: Ref{PIntegerEditBox} and Ref{PFloatEditBox}
  90.    classes for editing integers and floating point numbers respectively.
  91.  */
  92. class PNumberEditBox : public PEditBox
  93. {
  94.   PCLASSINFO(PNumberEditBox, PEditBox);
  95.   public:
  96.     /** Create a new number edit box. */
  97.     PNumberEditBox(
  98.       PInteractor * parent  /// Interactor into which the control is placed.
  99.     );
  100.     /** Create control from interactor layout with the specified control ID. */
  101.     PNumberEditBox(
  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.       void * valuePtr             /// Variable to change to the editor value.
  106.     );
  107.     /** Destroy the number edit box and its nudge buttons. */
  108.     virtual ~PNumberEditBox();
  109.   protected:
  110.   /**@name New functions for class */
  111.     /** Add the nudge value to the edit box value. */
  112.     virtual void AddNudge() = 0;
  113.     /** Subtract the nudge value to the edit box value. */
  114.     virtual void SubtractNudge() = 0;
  115.     // Member fields
  116.     class NudgeButton : public PPushButton
  117.     {
  118.       PCLASSINFO(NudgeButton, PPushButton)
  119.       public:
  120.         NudgeButton(PNumberEditBox * parent, BOOL isUp);
  121.         // Overrides from class PInteractor
  122.         virtual void OnDrawFace(PCanvas & canvas,
  123.                            const PRect & rect, BOOL hasFocus, BOOL isSelected);
  124.           // Draw the contents of the nudge button.
  125.       private:
  126.         BOOL up;
  127.     };
  128.     NudgeButton * nudgeUp;
  129.     NudgeButton * nudgeDown;
  130.     PDECLARE_NOTIFIER(NudgeButton, PNumberEditBox, Nudged);
  131.     // Call back from nudge buttons.
  132.  
  133. #ifdef DOC_PLUS_PLUS
  134. };
  135. #endif
  136. // Class declaration continued in platform specific header file ///////////////