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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * ilayout.h
  3.  *
  4.  * Interactor layout 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: ilayout.h,v $
  30.  * Revision 1.17  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.16  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.15  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.14  1998/09/23 06:23:50  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.13  1995/10/14 14:56:20  robertj
  43.  * Added function to update all control values from data pointers.
  44.  *
  45.  * Revision 1.12  1995/08/24 12:34:43  robertj
  46.  * Removed redundant parent parameter for ConstructEnd().
  47.  *
  48.  * Revision 1.11  1995/06/17 11:12:39  robertj
  49.  * Documentation update.
  50.  *
  51.  * Revision 1.10  1995/03/14 12:41:32  robertj
  52.  * Updated documentation to use HTML codes.
  53.  *
  54.  * Revision 1.9  1994/12/21  11:53:05  robertj
  55.  * Documentation and variable normalisation.
  56.  *
  57.  * Revision 1.8  1994/11/19  00:06:02  robertj
  58.  * Removed variable argument list binding for menus and controls.
  59.  *
  60.  * Revision 1.7  1994/10/30  11:46:40  robertj
  61.  * Changed mechanism for doing notification callback functions.
  62.  *
  63.  * Revision 1.6  1994/08/23  11:32:52  robertj
  64.  * Oops
  65.  *
  66.  * Revision 1.5  1994/08/22  00:46:48  robertj
  67.  * Added pragma fro GNU C++ compiler.
  68.  *
  69.  * Revision 1.4  1994/04/03  08:34:18  robertj
  70.  * Added help and focus functionality.
  71.  *
  72.  * Revision 1.3  1994/04/01  14:11:48  robertj
  73.  * Added ConstructEnd for use by PWRC generated code.
  74.  *
  75.  * Revision 1.2  1994/03/07  07:38:19  robertj
  76.  * Major enhancementsacross the board.
  77.  *
  78.  * Revision 1.1  1994/01/13  02:40:30  robertj
  79.  * Initial revision
  80.  *
  81.  */
  82. #define _PINTERACTORLAYOUT
  83. #ifdef __GNUC__
  84. #pragma interface
  85. #endif
  86. /**This class defines a user inteface entity that consists of a collection of
  87.    zero or more other interactors. These interactors are expected to be
  88.    descendents of the PControl class. Controls allow information to be
  89.    transferred between the user and the application.
  90.    
  91.    The external and internal layout of an instance of this class is usually
  92.    described using application resources.
  93.    
  94.    This class, while not actually abstract, is usually descended from before
  95.    use. The descendents such as Ref{PDialog} will add more functionality and
  96.    may visually appear different. An interactor layout has no title or border
  97.    as these are usually added by the descendent.
  98.  */
  99. class PInteractorLayout : public PInteractor
  100. {
  101.   PCLASSINFO(PInteractorLayout, PInteractor);
  102.   public:
  103.    /**Create a new empty layout. There are no controls contained within the
  104.        layout and it is expected that these are to added manually by the
  105.        application.
  106.      */
  107.     PInteractorLayout(
  108.       PInteractor * parent  /// Interactor that owns the layout.
  109.     );
  110.    /**Create a new layout by loading it from a resource. The resource
  111.        description determines the position, dimensions of the layout as well
  112.        as the position, dimensions, title and other options for all of the
  113.        controls in the layout.
  114.      */
  115.     PInteractorLayout(
  116.       PInteractor * parent,  /// Interactor that owns the layout.
  117.       PRESOURCE_ID resID     /// Resource identifier for loading controls.
  118.     );
  119.    /**Destroy the interactor layout, releasing its data and all of its
  120.        associated controls.
  121.      */
  122.     virtual ~PInteractorLayout();
  123.   /**@name Overrides from class PInteractor */
  124.    /**Set the child interactor that has the focus in the interactor layout.
  125.     
  126.        This interactor is the one that will receive the focus whenever the
  127.        layout itself receives the focus. As a layout does not handle keyboard
  128.        input directly it passes the focus on to a child control within itself.
  129.      */
  130.     virtual void SetFocusInteractor(
  131.       PInteractor * interactor    /// Interactor that hash received the focus.
  132.     );
  133.    /**Get the child interactor that has the focus in the interactor layout.
  134.     
  135.        @return
  136.        last interactor in layout with focus.
  137.      */
  138.     virtual PInteractor * GetFocusInteractor() const;
  139.     /**@name New functions for class */
  140.    /**Get the child interactor control with the specifed ID.
  141.        @return
  142.        control with specified ID, or NULL if none present.
  143.      */
  144.     PControl * GetControl(
  145.       PRESOURCE_ID id
  146.      /**Identifier for the control. This was usually the arbitrary, and
  147.          unique, number given to the control specification in the resource
  148.          file.
  149.        */
  150.     );
  151.    /**Update the value sof all controls from their attached value pointers
  152.        using the notification function with the
  153.        #PControl::NotifyUpdate# code. The default function for
  154.        each control type transfers from its internal value pointer (if not
  155.        NULL) to the controls representation.
  156.      */
  157.     void UpdateControls();
  158.   protected:
  159.    /**Complete construction of an interactor layout. This is primarily used
  160.        by the PWRC resource compiler generated code.
  161.        
  162.        As the resource compiler generates the constructor for the layout or
  163.        dialog, it is impossible for the user to add extra construction code
  164.        there. To circumvent this problem, the last thing the generated code
  165.        does is to call the ConstructEnd() function, which the user can
  166.        override and add extra construction code.
  167.        
  168.        The default implementation of this function is platform dependent, for
  169.        example in MS-Windows it initialises list boxes from a resource
  170.        containing their string list values.
  171.        
  172.        Note that when overriding this function, the ancestor version
  173.        {bf must} always be called.
  174.      */
  175.     virtual void ConstructEnd(
  176.       PRESOURCE_ID resID     /// Resource identifier for loading controls.
  177.     );
  178.     // Member variables
  179.     /** The last interactor in layout with keyboard focus. */
  180.     PInteractor * focusInteractor;
  181. #ifdef DOC_PLUS_PLUS
  182. };
  183. #endif
  184. // Class declaration continued in platform specific header file ///////////////