| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        mdi.h
 
- // Purpose:     interface of wxMDIClientWindow
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxMDIClientWindow
 
-     An MDI client window is a child of wxMDIParentFrame, and manages zero or
 
-     more wxMDIChildFrame objects.
 
-     @remarks
 
-     The client window is the area where MDI child windows exist. It doesn't have to
 
-     cover the whole parent frame; other windows such as toolbars and a help window
 
-     might coexist with it. There can be scrollbars on a client window, which are
 
-     controlled by the parent window style.
 
-     The wxMDIClientWindow class is usually adequate without further derivation, and
 
-     it is created automatically when the MDI parent frame is created. If the application
 
-     needs to derive a new class, the function wxMDIParentFrame::OnCreateClient() must
 
-     be overridden in order to give an opportunity to use a different class of client
 
-     window.
 
-     Under wxMSW, the client window will automatically have a sunken border style
 
-     when the active child is not maximized, and no border style when a child is maximized.
 
-     @library{wxcore}
 
-     @category{managedwnd}
 
-     @see wxMDIChildFrame, wxMDIParentFrame, wxFrame
 
- */
 
- class wxMDIClientWindow : public wxWindow
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Objects of this class are only created by wxMDIParentFrame which uses
 
-         the default constructor and calls CreateClient() immediately
 
-         afterwards.
 
-      */
 
-     wxMDIClientWindow();
 
-     /**
 
-         Called by wxMDIParentFrame immediately after creating the client
 
-         window.
 
-         This function may be overridden in the derived class but the base class
 
-         version must usually be called first to really create the window.
 
-         @param parent
 
-             The window parent.
 
-         @param style
 
-             The window style. Only wxHSCROLL and wxVSCROLL bits are meaningful
 
-             here.
 
-     */
 
-     virtual bool CreateClient(wxMDIParentFrame* parent, long style = 0);
 
- };
 
- /**
 
-     @class wxMDIParentFrame
 
-     An MDI (Multiple Document Interface) parent frame is a window which can
 
-     contain MDI child frames in its client area which emulates the full
 
-     desktop.
 
-     MDI is a user-interface model in which all the window reside inside the
 
-     single parent window as opposed to being separate from each other. It
 
-     remains popular despite dire warnings from Microsoft itself (which
 
-     popularized this model in the first model) that MDI is obsolete.
 
-     An MDI parent frame always has a wxMDIClientWindow associated with it,
 
-     which is the parent for MDI child frames. In the simplest case, the client
 
-     window takes up the entire parent frame area but it is also possible to
 
-     resize it to be smaller in order to have other windows in the frame, a
 
-     typical example is using a sidebar along one of the window edges.
 
-     The appearance of MDI applications differs between different ports. The
 
-     classic MDI model, with child windows which can be independently moved,
 
-     resized etc, is only available under MSW, which provides native support for
 
-     it. In Mac ports, multiple top level windows are used for the MDI children
 
-     too and the MDI parent frame itself is invisible, to accommodate the native
 
-     look and feel requirements. In all the other ports, a tab-based MDI
 
-     implementation (sometimes called TDI) is used and so at most one MDI child
 
-     is visible at any moment (child frames are always maximized).
 
-     @remarks
 
-     Although it is possible to have multiple MDI parent frames, a typical MDI
 
-     application has a single MDI parent frame window inside which multiple MDI
 
-     child frames, i.e. objects of class wxMDIChildFrame, can be created.
 
-     @beginStyleTable
 
-     There are no special styles for this class, all wxFrame styles apply to it
 
-     in the usual way. The only exception is that wxHSCROLL and wxVSCROLL styles
 
-     apply not to the frame itself but to the client window, so that using them
 
-     enables horizontal and vertical scrollbars for this window and not the
 
-     frame.
 
-     @endStyleTable
 
-     @library{wxcore}
 
-     @category{managedwnd}
 
-     @see wxMDIChildFrame, wxMDIClientWindow, wxFrame, wxDialog
 
- */
 
- class wxMDIParentFrame : public wxFrame
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-         Use Create() for the objects created using this constructor.
 
-     */
 
-     wxMDIParentFrame();
 
-     /**
 
-         Constructor, creating the window.
 
-         Notice that if you override virtual OnCreateClient() method you
 
-         shouldn't be using this constructor but the default constructor and
 
-         Create() as otherwise your overridden method is never going to be
 
-         called because of the usual C++ virtual call resolution rules.
 
-         @param parent
 
-             The window parent. Usually is @NULL.
 
-         @param id
 
-             The window identifier. It may take a value of @c wxID_ANY to
 
-             indicate a default value.
 
-         @param title
 
-             The caption to be displayed on the frame's title bar.
 
-         @param pos
 
-             The window position. The value ::wxDefaultPosition indicates a
 
-             default position, chosen by either the windowing system or
 
-             wxWidgets, depending on platform.
 
-         @param size
 
-             The window size. The value ::wxDefaultSize indicates a default
 
-             size, chosen by either the windowing system or wxWidgets, depending
 
-             on platform.
 
-         @param style
 
-             The window style. Default value includes wxHSCROLL and wxVSCROLL
 
-             styles.
 
-         @param name
 
-             The name of the window. This parameter is used to associate a name
 
-             with the item, allowing the application user to set Motif resource
 
-             values for individual windows.
 
-         @remarks
 
-         Under wxMSW, the client window will automatically have a sunken
 
-         border style when the active child is not maximized, and no border
 
-         style when a child is maximized.
 
-         @see Create(), OnCreateClient()
 
-     */
 
-     wxMDIParentFrame(wxWindow* parent, wxWindowID id,
 
-                      const wxString& title,
 
-                      const wxPoint& pos = wxDefaultPosition,
 
-                      const wxSize& size = wxDefaultSize,
 
-                      long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
 
-                      const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Destructor.
 
-         Destroys all child windows and menu bar if present.
 
-     */
 
-     virtual ~wxMDIParentFrame();
 
-     /**
 
-         Activates the MDI child following the currently active one.
 
-         The MDI children are maintained in an ordered list and this function
 
-         switches to the next element in this list, wrapping around the end of
 
-         it if the currently active child is the last one.
 
-         @see ActivatePrevious()
 
-     */
 
-     virtual void ActivateNext();
 
-     /**
 
-         Activates the MDI child preceding the currently active one.
 
-         @see ActivateNext()
 
-     */
 
-     virtual void ActivatePrevious();
 
-     /**
 
-         Arranges any iconized (minimized) MDI child windows.
 
-         This method is only implemented in MSW MDI implementation and does
 
-         nothing under the other platforms.
 
-         @see Cascade(), Tile()
 
-     */
 
-     virtual void ArrangeIcons();
 
-     /**
 
-         Arranges the MDI child windows in a cascade.
 
-         This method is only implemented in MSW MDI implementation and does
 
-         nothing under the other platforms.
 
-         @see Tile(), ArrangeIcons()
 
-     */
 
-     virtual void Cascade();
 
-     /**
 
-         Used in two-step frame construction.
 
-         See wxMDIParentFrame() for further details.
 
-     */
 
-     bool Create(wxWindow* parent,
 
-                 wxWindowID id,
 
-                 const wxString& title,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
 
-                 const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Returns a pointer to the active MDI child, if there is one.
 
-         If there are any children at all this function returns a non-@NULL
 
-         pointer.
 
-     */
 
-     virtual wxMDIChildFrame* GetActiveChild() const;
 
-     /**
 
-         Returns a pointer to the client window.
 
-         @see OnCreateClient()
 
-     */
 
-     wxMDIClientWindowBase* GetClientWindow() const;
 
-     /**
 
-         Returns the current MDI Window menu.
 
-         Unless wxFRAME_NO_WINDOW_MENU style was used, a default menu listing
 
-         all the currently active children and providing the usual operations
 
-         (tile, cascade, ...) on them is created automatically by the library
 
-         and this function can be used to retrieve it. Notice that the default
 
-         menu can be replaced by calling SetWindowMenu().
 
-         This function is currently not available under OS X.
 
-         @return The current Window menu or @NULL.
 
-     */
 
-     wxMenu *GetWindowMenu() const;
 
-     /**
 
-         Returns whether the MDI implementation is tab-based.
 
-         Currently only the MSW port uses the real MDI. In Mac ports the usual
 
-         SDI is used, as common under this platforms, and all the other ports
 
-         use TDI implementation.
 
-         TDI-based MDI applications have different appearance and functionality
 
-         (e.g. child frames can't be minimized and only one of them is visible
 
-         at any given time) so the application may need to adapt its interface
 
-         somewhat depending on the return value of this function.
 
-      */
 
-     static bool IsTDI();
 
-     /**
 
-         Override this to return a different kind of client window.
 
-         If you override this function, you must create your parent frame in two
 
-         stages, or your function will never be called, due to the way C++
 
-         treats virtual functions called from constructors. For example:
 
-         @code
 
-         frame = new MyParentFrame;
 
-         frame->Create(parent, myParentFrameId, "My Parent Frame");
 
-         @endcode
 
-         @remarks
 
-         You might wish to derive from wxMDIClientWindow in order to implement
 
-         different erase behaviour, for example, such as painting a bitmap on
 
-         the background.
 
-         Note that it is probably impossible to have a client window that scrolls
 
-         as well as painting a bitmap or pattern, since in @b OnScroll, the scrollbar
 
-         positions always return zero.
 
-         @see GetClientWindow(), wxMDIClientWindow
 
-     */
 
-     virtual wxMDIClientWindow* OnCreateClient();
 
-     /**
 
-         Replace the current MDI Window menu.
 
-         Ownership of the menu object passes to the frame when you call this
 
-         function, i.e. the menu will be deleted by it when it's no longer
 
-         needed (usually when the frame itself is deleted or when
 
-         SetWindowMenu() is called again).
 
-         To remove the window completely, you can use the wxFRAME_NO_WINDOW_MENU
 
-         window style but this function also allows to do it by passing @NULL
 
-         pointer as @a menu.
 
-         The menu may include the items with the following standard identifiers
 
-         (but may use arbitrary text and help strings and bitmaps for them):
 
-             - @c wxID_MDI_WINDOW_CASCADE
 
-             - @c wxID_MDI_WINDOW_TILE_HORZ
 
-             - @c wxID_MDI_WINDOW_TILE_VERT
 
-             - @c wxID_MDI_WINDOW_ARRANGE_ICONS
 
-             - @c wxID_MDI_WINDOW_PREV
 
-             - @c wxID_MDI_WINDOW_NEXT
 
-         All of which are handled by wxMDIParentFrame itself. If any other
 
-         commands are used in the menu, the derived frame should handle them.
 
-         This function is currently not available under OS X.
 
-         @param menu
 
-             The menu to be used instead of the standard MDI Window menu or @NULL.
 
-     */
 
-     virtual void SetWindowMenu(wxMenu* menu);
 
-     /**
 
-         Tiles the MDI child windows either horizontally or vertically depending
 
-         on whether @a orient is @c wxHORIZONTAL or @c wxVERTICAL.
 
-         This method is only implemented in MSW MDI implementation and does
 
-         nothing under the other platforms.
 
-     */
 
-     virtual void Tile(wxOrientation orient = wxHORIZONTAL);
 
- };
 
- /**
 
-     @class wxMDIChildFrame
 
-     An MDI child frame is a frame that can only exist inside a
 
-     wxMDIClientWindow, which is itself a child of wxMDIParentFrame.
 
-     @beginStyleTable
 
-     All of the standard wxFrame styles can be used but most of them are ignored
 
-     by TDI-based MDI implementations.
 
-     @endStyleTable
 
-     @remarks
 
-     Although internally an MDI child frame is a child of the MDI client window,
 
-     in wxWidgets you create it as a child of wxMDIParentFrame. In fact, you can
 
-     usually forget that the client window exists. MDI child frames are clipped
 
-     to the area of the MDI client window, and may be iconized on the client
 
-     window. You can associate a menubar with a child frame as usual, although
 
-     an MDI child doesn't display its menubar under its own title bar. The MDI
 
-     parent frame's menubar will be changed to reflect the currently active
 
-     child frame. If there are currently no children, the parent frame's own
 
-     menubar will be displayed.
 
-     @library{wxcore}
 
-     @category{managedwnd}
 
-     @see wxMDIClientWindow, wxMDIParentFrame, wxFrame
 
- */
 
- class wxMDIChildFrame : public wxFrame
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-     */
 
-     wxMDIChildFrame();
 
-     /**
 
-         Constructor, creating the window.
 
-         @param parent
 
-             The window parent. This should not be @NULL.
 
-         @param id
 
-             The window identifier. It may take a value of -1 to indicate a default
 
-             value.
 
-         @param title
 
-             The caption to be displayed on the frame's title bar.
 
-         @param pos
 
-             The window position. The value ::wxDefaultPosition indicates a default position,
 
-             chosen by either the windowing system or wxWidgets, depending on platform.
 
-         @param size
 
-             The window size. The value ::wxDefaultSize indicates a default size, chosen by
 
-             either the windowing system or wxWidgets, depending on platform.
 
-         @param style
 
-             The window style. See wxMDIChildFrame.
 
-         @param name
 
-             The name of the window. This parameter is used to associate a name with the
 
-             item, allowing the application user to set Motif resource values for individual
 
-             windows.
 
-         @see Create()
 
-     */
 
-     wxMDIChildFrame(wxMDIParentFrame* parent, wxWindowID id,
 
-                     const wxString& title,
 
-                     const wxPoint& pos = wxDefaultPosition,
 
-                     const wxSize& size = wxDefaultSize,
 
-                     long style = wxDEFAULT_FRAME_STYLE,
 
-                     const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Destructor. Destroys all child windows and menu bar if present.
 
-     */
 
-     virtual ~wxMDIChildFrame();
 
-     /**
 
-         Activates this MDI child frame.
 
-         @see Maximize(), Restore()
 
-     */
 
-     virtual void Activate();
 
-     /**
 
-         Used in two-step frame construction.
 
-         See wxMDIChildFrame() for further details.
 
-     */
 
-     bool Create(wxMDIParentFrame* parent, wxWindowID id, const wxString& title,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxDEFAULT_FRAME_STYLE,
 
-                 const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Returns the MDI parent frame containing this child.
 
-         Notice that this may return a different object than GetParent() as the
 
-         child frames may be created as children of the client window
 
-         internally.
 
-      */
 
-     wxMDIParentFrame *GetMDIParent() const;
 
-     /**
 
-         Returns true for MDI children in TDI implementations.
 
-         TDI-based implementations represent MDI children as pages in a
 
-         wxNotebook and so they are always maximized and can't be restored or
 
-         iconized.
 
-         @see wxMDIParentFrame::IsTDI().
 
-      */
 
-     virtual bool IsAlwaysMaximized() const;
 
-     /**
 
-         Maximizes this MDI child frame.
 
-         This function doesn't do anything if IsAlwaysMaximized() returns @true.
 
-         @see Activate(), Restore()
 
-     */
 
-     virtual void Maximize(bool maximize = true);
 
-     /**
 
-         Restores this MDI child frame (unmaximizes).
 
-         This function doesn't do anything if IsAlwaysMaximized() returns @true.
 
-         @see Activate(), Maximize()
 
-     */
 
-     virtual void Restore();
 
- };
 
 
  |