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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * mdiframe.h
  3.  *
  4.  * Multiple Document Interface Frame Window.
  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: mdiframe.h,v $
  30.  * Revision 1.21  1999/03/10 03:49:52  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.20  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.19  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.18  1998/12/01 12:55:54  robertj
  40.  * new directory structure.
  41.  *
  42.  * Revision 1.17  1998/09/23 06:24:15  robertj
  43.  * Added open source copyright license.
  44.  *
  45.  * Revision 1.16  1996/04/30 12:33:40  robertj
  46.  * Changed "inPixels" boolean to enum for three coordinate systems.
  47.  *
  48.  * Revision 1.15  1996/01/02 13:15:35  robertj
  49.  * Mac OS compatibility.
  50.  *
  51.  * Revision 1.14  1995/11/09 12:15:49  robertj
  52.  * Removed redundent function in MDI frame.
  53.  *
  54.  * Revision 1.13  1995/03/14 12:41:44  robertj
  55.  * Updated documentation to use HTML codes.
  56.  *
  57.  * Revision 1.12  1995/02/19  04:10:07  robertj
  58.  * Documentation.
  59.  *
  60.  * Revision 1.11  1995/01/03  09:36:13  robertj
  61.  * Documentation.
  62.  *
  63.  * Revision 1.10  1994/08/23  11:32:52  robertj
  64.  * Oops
  65.  *
  66.  * Revision 1.9  1994/08/22  00:46:48  robertj
  67.  * Added pragma fro GNU C++ compiler.
  68.  *
  69.  * Revision 1.8  1994/07/25  03:35:10  robertj
  70.  * Added ability to change area in which MDI children are limited.
  71.  *
  72.  * Revision 1.7  1994/07/21  23:49:31  robertj
  73.  * Removed redundent destructors.
  74.  *
  75.  * Revision 1.6  1994/07/17  10:46:06  robertj
  76.  * Added more functionality, esp ability to get at Window menu.
  77.  *
  78.  * Revision 1.5  1994/06/25  11:55:15  robertj
  79.  * Unix version synchronisation.
  80.  *
  81.  * Revision 1.4  1994/03/07  07:38:19  robertj
  82.  * Major enhancementsacross the board.
  83.  *
  84.  * Revision 1.3  1994/01/03  04:42:23  robertj
  85.  * Mass changes to common container classes and interactors etc etc etc.
  86.  *
  87.  * Revision 1.2  1993/07/14  12:49:16  robertj
  88.  * Fixed RCS keywords.
  89.  *
  90.  */
  91. #define _PMDIFRAMEWINDOW
  92. #ifdef __GNUC__
  93. #pragma interface
  94. #endif
  95. class PMDIDocWindow;
  96. /**A class representing a top level window "frame" for Multiple Document
  97.    Interface child windows. This is the "main" window that the application
  98.    creates when an MDI is required. On some platforms, eg MS-Windows variants,
  99.    this encloses the MDI child windows. On
  100.  */
  101. class PMDIFrameWindow : public PTopLevelWindow
  102. {
  103.   PCLASSINFO(PMDIFrameWindow, PTopLevelWindow);
  104.   public:
  105.    /**Construct a new MDI style top level window.
  106.      */
  107.     PMDIFrameWindow(
  108.       unsigned CanDo=CanClose|CanGrow|CanIconify|CanZoom  /// Titled window flags.
  109.     );
  110.   /**@name New functions for class */
  111.    /**Get the MDI document window that is the frontmost or "target" MDI child
  112.        window.
  113.     
  114.        @return
  115.        pointer to active MDI child or NULL if there is none.
  116.      */
  117.     PMDIDocWindow * GetActiveDocument();
  118.       /** Reposition and resize all child documents in a cascading fashion. */
  119.     virtual void CascadeDocuments();
  120.    /**Reposition and resize all child documents in a tiled fashion. The
  121.        parameter indicates the preference for tiling multiple windows.
  122.      */
  123.     virtual void TileDocuments(
  124.       BOOL vertically = FALSE   /// Tiling orientation.
  125.     );
  126.       /** Reposition all child documents that are currently iconic. */
  127.     virtual void ArrangeIcons();
  128.    /**Set the area in the frames client area that child document windows are
  129.        limited to.
  130.        
  131.        These bounds are used if areas of the frame are not to be obscured by
  132.        the document child windows, eg when tool bars are used. The tiling and
  133.        cascading, as well as maximising the child, are limited to this area.
  134.        
  135.        If this rectangle is empty then the document area is the entire frame
  136.        window.
  137.      */
  138.     void SetDocumentArea(
  139.       const PRect & rect,     /// Bounds for child windows.
  140.       CoordinateSystem coords /// Coordinate system to use.
  141.     );
  142.    /**Get the area in the frames client area that child document windows are
  143.        limited to.
  144.        
  145.        These bounds are used if areas of the frame are not to be obscured by
  146.        the document child windows, eg when tool bars are used. The tiling and
  147.        cascading, as well as maximising the child, are limited to this area.
  148.        
  149.        If this rectangle is empty then the document area is the entire frame
  150.        window.
  151.        
  152.        @return
  153.        bounds area for MDI child windows.
  154.      */
  155.     PRect GetDocumentArea(
  156.       CoordinateSystem coords /// Coordinate system to use.
  157.     ) const;
  158.    /**Get the standard "Window" sub-menu which contains a list of all the
  159.        active child windows as well as the standard Cascade, Tile and Arrange
  160.        Icons menu items.
  161.        
  162.        @return
  163.        reference to a sub-menu for the the MDI "Windows" menu.
  164.      */
  165.     PSubMenu & GetWindowMenu();
  166.   protected:
  167.   // Member variables
  168.       /** Area within the MDI frame that MDI child windows may exist. */
  169.     PRect documentArea;
  170. #ifdef DOC_PLUS_PLUS
  171. };
  172. #endif
  173. // Class declaration continued in platform specific header file ///////////////