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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * dialog.h
  3.  *
  4.  * No-modal dialog 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: dialog.h,v $
  30.  * Revision 1.21  1999/11/01 00:07:17  robertj
  31.  * Changed semantics of OnClose() to be the same as PTitledWindow
  32.  *
  33.  * Revision 1.20  1999/03/10 03:49:51  robertj
  34.  * More documentation adjustments.
  35.  *
  36.  * Revision 1.19  1999/03/09 08:01:48  robertj
  37.  * Changed comments for doc++ support (more to come).
  38.  *
  39.  * Revision 1.18  1999/02/16 08:08:45  robertj
  40.  * MSVC 6.0 compatibility changes.
  41.  *
  42.  * Revision 1.17  1998/09/23 06:23:19  robertj
  43.  * Added open source copyright license.
  44.  *
  45.  * Revision 1.16  1995/10/14 14:55:18  robertj
  46.  * Moved standard button code from modal to non-modal dialogs.
  47.  *
  48.  * Revision 1.15  1995/06/17 11:12:28  robertj
  49.  * Documentation update.
  50.  *
  51.  * Revision 1.14  1995/03/14 12:41:18  robertj
  52.  * Updated documentation to use HTML codes.
  53.  *
  54.  * Revision 1.13  1994/12/13  11:47:53  robertj
  55.  * Documentation.
  56.  *
  57.  * Revision 1.12  1994/08/23  11:32:52  robertj
  58.  * Oops
  59.  *
  60.  * Revision 1.11  1994/08/22  00:46:48  robertj
  61.  * Added pragma fro GNU C++ compiler.
  62.  *
  63.  * Revision 1.10  1994/08/21  23:43:02  robertj
  64.  * Changed semantics of Close() function.
  65.  *
  66.  * Revision 1.9  1994/03/07  07:38:19  robertj
  67.  * Major enhancementsacross the board.
  68.  *
  69.  * Revision 1.8  1994/01/13  03:36:48  robertj
  70.  * Created intermediate class PInteractorLayout for dialog-ish windows.
  71.  *
  72.  * Revision 1.7  1994/01/03  04:42:23  robertj
  73.  * Mass changes to common container classes and interactors etc etc etc.
  74.  *
  75.  * Revision 1.6  1993/12/01  16:09:05  robertj
  76.  * Windows NT port.
  77.  *
  78.  * Revision 1.5  1993/09/27  16:35:25  robertj
  79.  * Removed special constructor for dialog resource loading.
  80.  *
  81.  * Revision 1.4  1993/08/21  01:50:33  robertj
  82.  * Made Clone() function optional, default will assert if called.
  83.  *
  84.  * Revision 1.3  1993/07/14  12:49:16  robertj
  85.  * Fixed RCS keywords.
  86.  *
  87.  */
  88. #define _PDIALOG
  89. #ifdef __GNUC__
  90. #pragma interface
  91. #endif
  92. /**This class defines a user inteface entity that consists of a collection of
  93.    zero or more other interactors. These interactors are expected to be
  94.    descendents of the PControl class. Controls allow information to be
  95.    transferred between the user and the application.
  96.    
  97.    The external and internal layout of a dialog is usually described using
  98.    application resources.
  99.  */
  100. class PDialog : public PInteractorLayout
  101. {
  102.   PCLASSINFO(PDialog, PInteractorLayout);
  103.   public:
  104.    /**Create a new empty dialog. There are no controls contained within the
  105.        dialog and it is expected that these are to added manually by the
  106.        application.
  107.      */
  108.           PDialog(
  109.       PInteractor * parent  /// Interactor that owns the dialog.
  110.     );
  111.    /**Create a new dialog by loading it from a resource. The resource
  112.        description determines the position, dimensions and title of the dialog
  113.        as well as the position, dimensions, title and other options for all of
  114.        the controls in the dialog.
  115.      */
  116.     PDialog(
  117.       PInteractor * parent,  /// Interactor that owns the dialog.
  118.       PRESOURCE_ID resID     /// Resource identifier for loading controls.
  119.     );
  120.    /**Destroy the dialog, releasing its data and all of its associated
  121.        controls.
  122.      */
  123.     virtual ~PDialog();
  124.   /**@name New functions for class */
  125.    /**Get the current dialog title string. This usually appear ina caption at
  126.        the top of the dialog.
  127.     
  128.        @return
  129.        string for the dialog title.
  130.      */
  131.     virtual PString GetTitle() const;
  132.    /**Set the new window title string. This will be updated on the screen
  133.         immediately (subject to OS constraints).
  134.      */
  135.     virtual void SetTitle(
  136.       const PString & title   /// New title string for dialog.
  137.     );
  138.    /**Close the PDialog interactor. This will do a "safe" delete of the
  139.        PDialog object, ie after all the member functions on the object have
  140.        returned and the programme is in the main message handling loop, then
  141.        the delete operator is executed on the object. This will prevent
  142.        problems with the "this" pointer being invalid when a PDialog is closed
  143.        via a call back function such as Ref{OnCancel()}.
  144.      */
  145.     virtual void Close();
  146.    /**Set the default OK, Cancel & Help buttons. The Ok button will call the
  147.        Ref{OnOk()} function, the Cancel button will call the
  148.        Ref{OnCancel()} function and the Help button will call the
  149.        Ref{OnSelectHelp()} function.
  150.      */
  151.     void SetStdButtons(
  152.       PPushButton * okBtn,            /// The OK button for the dialog.
  153.       PPushButton * cancelBtn = NULL, /// The Cancel button for the dialog.
  154.       PPushButton * helpBtn = NULL    /// The Help button for the dialog.
  155.     );
  156.   protected:
  157.    /**The system calls this whenever the window is being closed. There is no
  158.       way to prevent this action at this point. Override the Ref{OnCancel()}
  159.       function if you wish to control if the close operation proceeds.
  160.        The application writer may override this function to do any clean up
  161.        or state saving operations.
  162.        
  163.        The default action does nothing.
  164.      */
  165.     virtual void OnClose();
  166.    /**Function called when the dialog OK button has been pressed. The default
  167.        behaviour is to close the dialog using Ref{Close()}.
  168.      */
  169.     virtual void OnOk();
  170.    /**Function called when the dialog Cancel button has been pressed. The
  171.        default behaviour is to close the dialog using Ref{Close()}.
  172.      */
  173.     virtual void OnCancel();
  174.     // Member variables
  175.     /** The OK button. */
  176.     PPushButton * ok;
  177.     /** The Cancel button. */
  178.     PPushButton * cancel;
  179.     /** The Help button. */
  180.     PPushButton * help;
  181.   private:
  182.     PDECLARE_NOTIFIER(PPushButton, PDialog, StdButtonPressed);
  183.       // Called by the ok or cancel button control
  184. #ifdef DOC_PLUS_PLUS
  185. };
  186. #endif
  187. // Class declaration continued in platform specific header file ///////////////