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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * rbutton.h
  3.  *
  4.  * Radio button 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: rbutton.h,v $
  30.  * Revision 1.18  1999/03/10 03:49:53  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.17  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.16  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.15  1998/09/23 06:28:32  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.14  1995/03/14 12:42:20  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.13  1995/01/14  06:19:25  robertj
  46.  * Documentation
  47.  *
  48.  * Revision 1.12  1994/10/30  11:47:01  robertj
  49.  * Changed mechanism for doing notification callback functions.
  50.  *
  51.  * Revision 1.11  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.10  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.9  1994/06/25  11:55:15  robertj
  58.  * Unix version synchronisation.
  59.  *
  60.  * Revision 1.8  1994/03/07  07:38:19  robertj
  61.  * Major enhancementsacross the board.
  62.  *
  63.  * Revision 1.7  1994/01/15  02:50:29  robertj
  64.  * Moved control contructors to common and added a platform dependent Construct() function.
  65.  *
  66.  * Revision 1.6  1994/01/03  04:42:23  robertj
  67.  * Mass changes to common container classes and interactors etc etc etc.
  68.  *
  69.  * Revision 1.5  1993/12/15  21:10:10  robertj
  70.  * Changed group to use containers reference system.
  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 _PRADIOBUTTON
  83. #ifdef __GNUC__
  84. #pragma interface
  85. #endif
  86. /**A simple radio button control. A set of radio buttons is used to select one
  87.    of a number of choices. A group of radio buttons may be created by passing
  88.    the first radio button created to all the others subsequently created. Then
  89.    whenever one of the buttons is selected all the other buttons in the group
  90.    are automatically deselected.
  91.    
  92.    Note that a radio button can only be in one group at a time.
  93.  */
  94. class PRadioButton : public PNamedControl
  95. {
  96.   PCLASSINFO(PRadioButton, PNamedControl);
  97.   public:
  98.    /**Create a radio button with the specified parameters: name, notification
  99.        function and radio button group.
  100.        Add this button to the group that the #groupButton# parameter
  101.        is also contained in. This is typically the first button created.
  102.      */
  103.     PRadioButton(
  104.       PInteractor * parent    /// Interactor into which the control is placed
  105.     );
  106.     PRadioButton(
  107.       PInteractor * parent,   /// Interactor into which the control is placed.
  108.       const PString & name    /// Text string name of the radio button.
  109.     );
  110.     PRadioButton(
  111.       PInteractor * parent,   /// Interactor into which the control is placed.
  112.       const PString & name,   /// Text string name of the radio button.
  113.       const PNotifier & notify  /// Function to call when changes state.
  114.       );
  115.     PRadioButton(
  116.       PInteractor * parent,   /// Interactor into which the control is placed.
  117.       const PString & name,   /// Text string name of the radio button.
  118.       PRadioButton & groupButton /// A radio button in the group to be added to.
  119.     );
  120.     PRadioButton(
  121.       PInteractor * parent,   /// Interactor into which the control is placed.
  122.       const PString & name,   /// Text string name of the radio button.
  123.       const PNotifier & notify,  /// Function to call when changes state.
  124.       PRadioButton & groupButton /// A radio button in the group to be added to.
  125.     );
  126.     /** Create control from interactor layout with the specified control ID. */
  127.     PRadioButton(
  128.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  129.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  130.       const PNotifier & notify,   /// Function to call when changes state.
  131.       PINDEX * valuePtr           /// Variable to change to the check box state.
  132.     );
  133.     /** Destroy the radio button, removing it from its group. */
  134.     virtual ~PRadioButton();
  135.   /**@name Overrides from class PControl */
  136.    /**This function transfers the value of the control to or from the variable
  137.        pointed to by the value pointer member variable.
  138.      */
  139.     virtual void TransferValue(
  140.       int option 
  141.      /**Transfer value option. When this is -1 when the function transfers
  142.          the value from the value pointer into the control. This is called in
  143.          Ref{PDialog::OnInit()} function. When option is zero then the
  144.          function transfers the value from the control to the value pointer
  145.          variable. This is called just before the callback function every time
  146.          the radio button groups value changes.
  147.        */
  148.     );
  149.   /**@name New functions for class */
  150.     /** Set the default (minimum) dimensions for the control */
  151.     void DefaultDimensions();
  152.    /**Set the value of the radio button group. The buttons are created are
  153.        numbered from one up. This will set the button specifed deselecting all
  154.        the others. If the #newVal# parameter is out of the range 1
  155.        to the number of buttons in the group, all buttons are deselected
  156.      */
  157.     void SetValue(
  158.       PINDEX newVal   /// New value for radio button group.
  159.     );
  160.    /**Get the currently selected button in the radio button group. If no
  161.        radio buttons in the group are selected then zero is returned.
  162.        @return
  163.        index of selected radio button or zero if none selected.
  164.      */
  165.     PINDEX GetValue() const;
  166.    /**Get the current value pointer associated with the control. The variable
  167.        pointed to by this is autamatically updated with the current value of
  168.        the radio button group.
  169.        @return
  170.        value pointer associated with the control.
  171.      */
  172.     PINDEX * GetValuePointer() const;
  173.    /**Set the current value pointer associated with the control. The variable
  174.        pointed to by this is autamatically updated with the current value of
  175.        the radio button group.
  176.      */
  177.     void SetValuePointer(
  178.       PINDEX * ptr  /// New value pointer to associate with the control.
  179.     );
  180.    /**Add this button to the group that the #groupButton# parameter
  181.        is also contained in. This is typically the first button created.
  182.      */
  183.     void AddToGroup(
  184.       PRadioButton & groupButton  /// Radio button in the group to add to.
  185.     );
  186.   protected:
  187.     // Member variables
  188.     PLIST(Group, PRadioButton);
  189.    /**List of buttons in the group. This is a common container for all
  190.        buttons in the group.
  191.      */
  192.     Group group;
  193.   private:
  194.     // New functions for class
  195.     void Construct();
  196.     // Common, platform dependent, constructor code for the cosntructors.
  197. #ifdef DOC_PLUS_PLUS
  198. };
  199. #endif
  200. // Class declaration continued in platform specific header file ///////////////