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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * scrollb.h
  3.  *
  4.  * Scroll bar ancestor 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: scrollb.h,v $
  30.  * Revision 1.19  1999/03/10 03:49:53  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.18  1999/03/09 08:01:50  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.17  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.16  1998/09/23 06:28:58  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.15  1995/03/14 12:42:32  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.14  1995/02/19  04:19:18  robertj
  46.  * Added dynamically linked command processing.
  47.  *
  48.  * Revision 1.13  1995/02/05  00:50:17  robertj
  49.  * Had to change variable name "small" for MSVC 2.0
  50.  *
  51.  * Revision 1.12  1994/12/21  11:53:28  robertj
  52.  * Documentation and variable normalisation.
  53.  *
  54.  * Revision 1.11  1994/10/30  11:47:05  robertj
  55.  * Changed mechanism for doing notification callback functions.
  56.  *
  57.  * Revision 1.10  1994/08/23  11:32:52  robertj
  58.  * Oops
  59.  *
  60.  * Revision 1.9  1994/08/22  00:46:48  robertj
  61.  * Added pragma fro GNU C++ compiler.
  62.  *
  63.  * Revision 1.8  1994/06/25  11:55:15  robertj
  64.  * Unix version synchronisation.
  65.  *
  66.  * Revision 1.7  1994/03/07  07:38:19  robertj
  67.  * Major enhancementsacross the board.
  68.  *
  69.  * Revision 1.6  1994/01/15  02:50:29  robertj
  70.  * Moved control contructors to common and added a platform dependent Construct() function.
  71.  *
  72.  * Revision 1.5  1994/01/03  04:42:23  robertj
  73.  * Mass changes to common container classes and interactors etc etc etc.
  74.  *
  75.  * Revision 1.4  1993/09/27  16:35:25  robertj
  76.  * Removed special constructor for dialog resource loading.
  77.  *
  78.  * Revision 1.3  1993/08/20  21:26:09  robertj
  79.  * Added control notification codes.
  80.  *
  81.  * Revision 1.2  1993/07/14  12:49:16  robertj
  82.  * Fixed RCS keywords.
  83.  *
  84.  */
  85. #define _PSCROLLBAR
  86. #ifdef __GNUC__
  87. #pragma interface
  88. #endif
  89. /**A scroll bar control for visually setting an integer value.
  90.    The exact appearance of a scroll bar is platform dependent. However certain
  91.    functionality exists for all platforms. These are that the scroll bar allows
  92.    values between a minimum and maximum to be set via small nudges (typically
  93.    a up or down arrow), large nudges (typically the page up or down area to
  94.    either side of the thumb) or by explicitly setting a value (typically by
  95.    dragging the thumb).
  96.    This is an abstract class combining the common functionality of
  97.    Ref{PHorizontalScrollBar} and Ref{PVerticalScrollBar} controls.
  98.  */
  99. class PScrollBar : public PControl
  100. {
  101.   PCLASSINFO(PScrollBar, PControl);
  102.   public:
  103.    /**Create a new scroll bar control with the specified default parameters
  104.        for controlling the scroll bars operation.
  105.      */
  106.     PScrollBar(
  107.       PInteractor * parent,  /// Interactor into which the control is placed.
  108.       PSCROLLBAR_VALUE max,  /// Maximum value for scroll bar.
  109.       PSCROLLBAR_VALUE min,  /// Minimum value for scroll bar.
  110.       PSCROLLBAR_VALUE val,  /// Initial value for scroll bar.
  111.       PSCROLLBAR_VALUE sml,  /// Amount to move with the nudge button.
  112.       PSCROLLBAR_VALUE lge   /// Amount to move with the paging area.
  113.     );
  114.     PScrollBar(
  115.       PInteractor * parent,   /// Interactor into which the control is placed.
  116.       const PNotifier & func, /// Function to call when changes state.
  117.       PSCROLLBAR_VALUE max,   /// Maximum value for scroll bar.
  118.       PSCROLLBAR_VALUE min,   /// Minimum value for scroll bar.
  119.       PSCROLLBAR_VALUE val,   /// Initial value for scroll bar.
  120.       PSCROLLBAR_VALUE sml,   /// Amount to move with the nudge button.
  121.       PSCROLLBAR_VALUE lge    /// Amount to move with the paging area.
  122.     );
  123.     /** Create control from interactor layout with the specified control ID. */
  124.     PScrollBar(
  125.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  126.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  127.       const PNotifier & notify,   /// Function to call when changes state.
  128.       PSCROLLBAR_VALUE * valuePtr /// Variable to change to the scrollbar value.
  129.     );
  130.     /** Destroy the scroll bar. */
  131.     virtual ~PScrollBar();
  132.   /**@name PNotifier codes */
  133.    /**Codes passed to the notification function on changes of state.
  134.        A change to a scroll bar may proceed for some time, for example if the
  135.        mouse button is pressed in the down arrow and held down. An auto-repeat
  136.        would occur to continually change the scroll bar value until it is
  137.        released.
  138.      */
  139.     enum {
  140.         /** A scroll bar value change operation has been ended by the user. */
  141.       EndTrack = NotifyChange,
  142.         /** A scroll bar value change operation has been initiated by the user. */
  143.       StartTrack,
  144.         /** A scroll bar value change operation is in progress by the user. */
  145.       Tracking
  146.     };
  147.   /**@name Overrides from class PControl */
  148.    /**This function transfers the value of the control to or from the variable
  149.        pointed to by the value pointer member variable.
  150.      */
  151.     virtual void TransferValue(
  152.       int option 
  153.      /**Transfer value option. When this is -1 when the function transfers
  154.          the value from the value pointer into the control. This is called in
  155.          Ref{PDialog::OnInit()} function. When option is zero then the
  156.          function transfers the value from the control to the value pointer
  157.          variable. This is called just before the callback function every time
  158.          the scroll bar value changes.
  159.        */
  160.     );
  161.   /**@name New functions for class */
  162.    /**Set the current thumb position of the scroll bar. If the
  163.        #redraw# parameter is TRUE then this will be updated on the
  164.        screen immediately (within OS constraints).
  165.      */
  166.     void SetValue(
  167.       PSCROLLBAR_VALUE val,   /// New value for scroll bar.
  168.       BOOL redraw = TRUE      /// Whether to update the screen.
  169.     );
  170.    /**Get the current thumb position of the scroll bar.
  171.        @return
  172.        current scroll bar value.
  173.      */
  174.     PSCROLLBAR_VALUE GetValue() const;
  175.    /**Get the current value pointer associated with the control. The variable
  176.        pointed to by this is autamatically updated with the current value of
  177.        the scroll bar.
  178.        @return
  179.        value pointer associated with the control.
  180.      */
  181.     PSCROLLBAR_VALUE * GetValuePointer() const;
  182.    /**Set the current value pointer associated with the control. The variable
  183.        pointed to by this is autamatically updated with the current value of
  184.        the scroll bar.
  185.      */
  186.     void SetValuePointer(
  187.       PSCROLLBAR_VALUE * ptr //New value pointer to associate with the control.
  188.     );
  189.    /**Set the maximum thumb position of the scroll bar. If the
  190.        #redraw# parameter is TRUE then this will be updated on the
  191.        screen immediately (within OS constraints).
  192.      */
  193.     void SetMaximum(
  194.       PSCROLLBAR_VALUE val,   /// New maximum value for the scroll bar.
  195.       BOOL redraw = TRUE      /// Whether to update the screen.
  196.     );
  197.    /**Get the maximum thumb position of the scroll bar.
  198.        @return
  199.        current scroll bar maximum.
  200.      */
  201.     PSCROLLBAR_VALUE GetMaximum() const;
  202.    /**Set the minimum thumb position of the scroll bar. If the
  203.        #redraw# parameter is TRUE then this will be updated on the
  204.        screen immediately (within OS constraints).
  205.      */
  206.     void SetMinimum(
  207.       PSCROLLBAR_VALUE val,   /// New minimum value for the scroll bar.
  208.       BOOL redraw = TRUE      /// Whether to update the screen.
  209.     );
  210.    /**Get the minimum thumb position of the scroll bar.
  211.        @return
  212.        current scroll bar minimum.
  213.      */
  214.     PSCROLLBAR_VALUE GetMinimum() const;
  215.    /**Set the the amount by which the up and down arrows will move the thumb
  216.        each time the are clicked. The up and down arrow keys do the same thing
  217.        if the scroll bar has the focus.
  218.      */
  219.     void SetSmallNudge(
  220.       PSCROLLBAR_VALUE val    /// New nudge value for small increments.
  221.     );
  222.    /**Get the the amount by with the up and down arrows will move the thumb.
  223.        @return
  224.        small nudge value.
  225.      */
  226.     PSCROLLBAR_VALUE GetSmallNudge() const;
  227.    /**Set the the amount by which clicking above or below the thumb will move
  228.        it. The page up and page down keys do the same thing if the scroll bar
  229.        has the focus.
  230.      */
  231.     void SetLargeNudge(
  232.       PSCROLLBAR_VALUE val    /// New nudge value for large increments.
  233.     );
  234.    /**Get the the amount by which clicking above or below the thumb will
  235.        move it.
  236.        @return
  237.        large nudge value.
  238.      */
  239.     PSCROLLBAR_VALUE GetLargeNudge() const;
  240.   protected:
  241.     /**@name Member variables */
  242.     PSCROLLBAR_VALUE minimum;
  243.     PSCROLLBAR_VALUE maximum;
  244.     PSCROLLBAR_VALUE value;
  245.     PSCROLLBAR_VALUE smallNudge;
  246.     PSCROLLBAR_VALUE largeNudge;
  247.       /* Small and large nudge amounts. */
  248.   private:
  249.     // New functions for class
  250.     void Construct();
  251.       // Common constructor code
  252. #ifdef DOC_PLUS_PLUS
  253. };
  254. #endif
  255. // Class declaration continued in platform specific header file ///////////////