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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * ibutton.h
  3.  *
  4.  * Image 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: ibutton.h,v $
  30.  * Revision 1.22  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.21  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.20  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.19  1998/09/23 06:23:45  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.18  1995/03/14 12:41:29  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.17  1995/01/18  09:02:20  robertj
  46.  * Added separate image icon for enabled and disabled button.
  47.  *
  48.  * Revision 1.16  1994/12/21  11:53:01  robertj
  49.  * Documentation and variable normalisation.
  50.  *
  51.  * Revision 1.15  1994/10/30  11:46:39  robertj
  52.  * Changed mechanism for doing notification callback functions.
  53.  *
  54.  * Revision 1.14  1994/08/23  11:32:52  robertj
  55.  * Oops
  56.  *
  57.  * Revision 1.13  1994/08/22  00:46:48  robertj
  58.  * Added pragma fro GNU C++ compiler.
  59.  *
  60.  * Revision 1.12  1994/04/03  08:34:18  robertj
  61.  * Added help and focus functionality.
  62.  *
  63.  * Revision 1.11  1994/03/07  07:38:19  robertj
  64.  * Major enhancementsacross the board.
  65.  *
  66.  * Revision 1.10  1994/01/15  02:50:29  robertj
  67.  * Moved control contructors to common and added a platform dependent Construct() function.
  68.  *
  69.  * Revision 1.9  1994/01/03  04:42:23  robertj
  70.  * Mass changes to common container classes and interactors etc etc etc.
  71.  *
  72.  * Revision 1.8  1993/12/31  06:42:49  robertj
  73.  * Made inlines optional for debugging purposes.
  74.  * Added ImgIcon class.
  75.  *
  76.  * Revision 1.7  1993/10/16  20:33:20  robertj
  77.  * Only allowing pixmaps to be used in image buttons.
  78.  *
  79.  * Revision 1.6  1993/09/27  16:35:25  robertj
  80.  * Removed special constructor for dialog resource loading.
  81.  *
  82.  * Revision 1.5  1993/08/24  00:27:59  robertj
  83.  * Reassranged push button classes and implemented new arrangement.
  84.  *
  85.  * Revision 1.4  1993/08/21  01:50:33  robertj
  86.  * Made Clone() function optional, default will assert if called.
  87.  *
  88.  * Revision 1.3  1993/07/14  12:49:16  robertj
  89.  * Fixed RCS keywords.
  90.  *
  91.  */
  92. #define _PIMAGEBUTTON
  93. #ifdef __GNUC__
  94. #pragma interface
  95. #endif
  96. /**A simple push button control with an image icon in it, which is used to
  97.    initiate an action.
  98.  */
  99. class PImageButton : public PPushButton
  100. {
  101.   PCLASSINFO(PImageButton, PPushButton);
  102.   public:
  103.     /** Create an icon button control with the specified attributes. */
  104.     PImageButton(
  105.       PInteractor * parent,     /// Interactor into which the control is placed.
  106.       ButtonType deflt = OrdinaryButton  /// Flag for is the default button.
  107.     );
  108.     PImageButton(
  109.       PInteractor * parent,     /// Interactor into which the control is placed.
  110.       const PImgIcon & img,     /// Image to be placed in the button.
  111.       ButtonType deflt = OrdinaryButton  /// Flag for is the default button.
  112.     );
  113.     PImageButton(
  114.       PInteractor * parent,     /// Interactor into which the control is placed.
  115.       const PImgIcon & img,     /// Image to be placed in the button.
  116.       const PNotifier & notify, /// Function to call when changes state.
  117.       ButtonType deflt = OrdinaryButton  /// Flag for is the default button.
  118.     );
  119.     PImageButton(
  120.       PInteractor * parent,     /// Interactor into which the control is placed.
  121.       const PImgIcon & enabImg,   /// Image to be placed in the enabled button.
  122.       const PImgIcon & disabImg,  /// Image to be placed in the disabled button.
  123.       ButtonType deflt = OrdinaryButton  /// Flag for is the default button.
  124.     );
  125.     PImageButton(
  126.       PInteractor * parent,     /// Interactor into which the control is placed.
  127.       const PImgIcon & enabImg,   /// Image to be placed in the enabled button.
  128.       const PImgIcon & disabImg,  /// Image to be placed in the disabled button.
  129.       const PNotifier & notify, /// Function to call when changes state.
  130.       ButtonType deflt = OrdinaryButton  /// Flag for is the default button.
  131.     );
  132.    /**Create control from interactor layout with the specified control ID.
  133.        This is mainly used in support of resource based dialogs.
  134.      */
  135.     PImageButton(
  136.       PInteractorLayout * parent, /// Interactor into which the box is placed.
  137.       PRESOURCE_ID ctlID,         /// Identifier for the control in the layout.
  138.       const PNotifier & notify,   /// Function to call when changes state.
  139.       void * valuePtr             /// Variable to change to the button state.
  140.     );
  141.     /** Destroy the icon push button control and image. */
  142.     virtual ~PImageButton();
  143.     /**@name New functions for class */
  144.    /**Set the default (minimum) dimensions for the control. This will be just
  145.        enough to contain the iamge and the buttons 3d surround.
  146.      */
  147.     void DefaultDimensions();
  148.    /**Set the current image used in the button. This will be updated on the
  149.        screen immediately (within OS contsraints).
  150.      */
  151.     void SetImage(
  152.       const PImgIcon & img  /// New image to set in the button.
  153.     );
  154.     void SetImage(
  155.       const PImgIcon & enabledImg,  /// New enabled image to set in the button.
  156.       const PImgIcon & disabledImg  /// New disabled image to set in the button.
  157.     );
  158.    /**Get the current image being drawn in the face of the button when it is
  159.        enabled.
  160.     
  161.        @return
  162.        image icon that is used in the button.
  163.      */
  164.     PImgIcon GetEnabledImage() const;
  165.    /**Get the current image being drawn in the face of the button when it is
  166.        disabled.
  167.     
  168.        @return
  169.        image icon that is used in the button.
  170.      */
  171.     PImgIcon GetDisabledImage() const;
  172.     /**@name System callback functions. */
  173.    /**Draw the contents (face) of the pushbutton.
  174.     
  175.        The default action for this function is to draw the image centred in the
  176.        specified rectrangle. A slight offset is applied to this when the
  177.        #isSelected# flag is TRUE indicating that the button is down.
  178.        This aids the visual appearance.
  179.      */
  180.     virtual void OnDrawFace(
  181.       PCanvas & canvas,   /// Canvas into which to draw the button face.
  182.       const PRect & rect, /// Bounds in which to draw the button face.
  183.       BOOL hasFocus,      /// Flag indicating that the button has the focus.
  184.       BOOL isSelected     /// Flag indicating the button is currently down.
  185.     );
  186.   protected:
  187.     /** The small pixel image to be used in the button when enabled. */
  188.     PImgIcon enabledImage;
  189.     /** The small pixel image to be used in the button when disabled. */
  190.     PImgIcon disabledImage;
  191.   private:
  192.     // New functions for class
  193.     void Construct();
  194.       // Common constructor code
  195. #ifdef DOC_PLUS_PLUS
  196. };
  197. #endif
  198. // Class declaration continued in platform specific header file ///////////////