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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * check3.h
  3.  *
  4.  * 3 state check 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: check3.h,v $
  30.  * Revision 1.18  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.17  1999/03/09 08:01:47  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.16  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.15  1998/09/23 06:22:59  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.14  1995/04/25 10:50:55  robertj
  43.  * Fixed warning on hiding virtuals.
  44.  *
  45.  * Revision 1.13  1995/03/14 12:41:04  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.12  1994/11/28  12:31:45  robertj
  49.  * Documentation.
  50.  *
  51.  * Revision 1.11  1994/10/30  11:46:26  robertj
  52.  * Changed mechanism for doing notification callback functions.
  53.  *
  54.  * Revision 1.10  1994/08/23  11:32:52  robertj
  55.  * Oops
  56.  *
  57.  * Revision 1.9  1994/08/22  00:46:48  robertj
  58.  * Added pragma fro GNU C++ compiler.
  59.  *
  60.  * Revision 1.8  1994/06/25  11:55:15  robertj
  61.  * Unix version synchronisation.
  62.  *
  63.  * Revision 1.7  1994/03/07  07:38:19  robertj
  64.  * Major enhancementsacross the board.
  65.  *
  66.  * Revision 1.6  1994/01/15  02:50:29  robertj
  67.  * Moved control contructors to common and added a platform dependent Construct() function.
  68.  *
  69.  * Revision 1.5  1994/01/03  04:42:23  robertj
  70.  * Mass changes to common container classes and interactors etc etc etc.
  71.  *
  72.  * Revision 1.4  1993/09/27  16:35:25  robertj
  73.  * Removed special constructor for dialog resource loading.
  74.  *
  75.  * Revision 1.3  1993/08/21  01:50:33  robertj
  76.  * Made Clone() function optional, default will assert if called.
  77.  *
  78.  * Revision 1.2  1993/07/14  12:49:16  robertj
  79.  * Fixed RCS keywords.
  80.  *
  81.  */
  82. #define _PCHECK3WAYBOX
  83. #ifdef __GNUC__
  84. #pragma interface
  85. #endif
  86. /**A 3 state check box control that has {it Checked}, {it Unchecked} and
  87.    {it Neither} states.
  88.    
  89.    The exact appearence of a check box is platform dependent, however, they
  90.    all have some visual distinction between the three states plus a string
  91.    label associated with it.
  92.  */
  93. class PCheck3WayBox : public PNamedControl
  94. {
  95.   PCLASSINFO(PCheck3WayBox, PNamedControl);
  96.   public:
  97.    /**The three possible states for the 3 way check box.
  98.      */
  99.     enum CheckValues {
  100.       /// State indicating OFF.
  101.       Unchecked,  
  102.       /// State indicating ON.
  103.       Checked,    
  104.       /// State indicating unknown.
  105.       Neither     
  106.     };
  107.    /**Create a 3 way check box control with the specified name next to it,
  108.        callback function and the initial check state.
  109.      */
  110.     PCheck3WayBox(
  111.       PInteractor * parent,  /// Interactor into which the control is placed.
  112.       CheckValues value = Unchecked   /// Initial state for the check box.
  113.     );
  114.     PCheck3WayBox(
  115.       PInteractor * parent,  /// Interactor into which the control is placed.
  116.       const PString & name,  /// Name to be placed next to the check box.
  117.       CheckValues value = Unchecked   /// Initial state for the check box.
  118.     );
  119.     PCheck3WayBox(
  120.       PInteractor * parent,  /// Interactor into which the control is placed.
  121.       const PString & name,  /// Name to be placed next to the check box.
  122.       const PNotifier & notify,   /// Function to call when changes state.
  123.       CheckValues value = Unchecked   /// Initial state for the check box.
  124.     );
  125.    /**Create control from interactor layout with the specified control ID.
  126.        This is mainly used in support of resource based dialogs.
  127.      */
  128.     PCheck3WayBox(
  129.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  130.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  131.       const PNotifier & notify,   /// Function to call when changes state.
  132.       CheckValues * valuePtr      /// Variable to change to the check box state.
  133.     );
  134.     /** Destroy the 3 way check box. */
  135.     virtual ~PCheck3WayBox();
  136.   /**@name Overrides from class PControl */
  137.    /**This function transfers the value of the control to or from the variable
  138.        pointed to by the value pointer member variable.
  139.      */
  140.     virtual void TransferValue(
  141.       int option 
  142.      /**Transfer value option. When this is -1 when the function transfers
  143.          the value from the value pointer into the control. This is called in
  144.          Ref{PDialog::OnInit()} function. When option is zero then the
  145.          function transfers the value from the control to the value pointer
  146.          variable. This is called just before the callback function every time
  147.          the check box state changes.
  148.        */
  149.     );
  150.   /**@name New functions for class */
  151.    /**Set the default dimensions for the control. For the width this is the
  152.        width of the name part plus 3 times the average width of a character.
  153.        For the height this is 1.5 times the height of the font.
  154.      */
  155.     void DefaultDimensions();
  156.    /**Get the current state of the check box.
  157.        @return
  158.        check box state.
  159.      */
  160.     CheckValues GetValue() const;
  161.    /**Set the check state of the check box. This will be updated on the
  162.        screen immediately (within OS contsraints).
  163.      */
  164.     void SetValue(
  165.       CheckValues newVal  /// New state to set the check box to.
  166.     );
  167.    /**Get the current value pointer associated with the control. The variable
  168.        pointed to by this is autamatically updated with the current value of
  169.        the check box.
  170.        @return
  171.        value pointer associated with the control.
  172.      */
  173.     CheckValues * GetValuePointer() const;
  174.    /**Set the current value pointer associated with the control. The variable
  175.        pointed to by this is autamatically updated with the current value of
  176.        the check box.
  177.      */
  178.     void SetValuePointer(
  179.       CheckValues * ptr  /// New value pointer to associate with the control.
  180.     );
  181.   private:
  182.   // New functions for class
  183.     // Common constructor code used by platform dependent code.
  184.     void Construct();
  185. #ifdef DOC_PLUS_PLUS
  186. };
  187. #endif
  188. // Class declaration continued in platform specific header file ///////////////