]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/docmdi.h
fix multiple problems with selection in controls with wxTR_MULTIPLE style (closes...
[wxWidgets.git] / include / wx / docmdi.h
index 43c4d9d8715ef5f8db4e40d7cf6566cd11fadd58..513f2d6ea95c54f8cb7005acdf2d5b9490620fd0 100644 (file)
@@ -5,16 +5,16 @@
 // Modified by:
 // Created:     01/02/97
 // RCS-ID:      $Id$
-// Copyright:   (c)
-// Licence:    wxWindows licence
+// Copyright:   (c) Julian Smart
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_DOCMDI_H_
 #define _WX_DOCMDI_H_
 
-#ifdef __GNUG__
-#pragma interface "docmdi.h"
-#endif
+#include "wx/defs.h"
+
+#if wxUSE_MDI_ARCHITECTURE
 
 #include "wx/docview.h"
 #include "wx/mdi.h"
  * Use this instead of wxMDIParentFrame
  */
 
-class wxDocMDIParentFrame: public wxMDIParentFrame
+class WXDLLIMPEXP_CORE wxDocMDIParentFrame: public wxMDIParentFrame
 {
-  DECLARE_CLASS(wxDocMDIParentFrame)
- public:
-  wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id,
-      const wxString& title, const wxPoint& pos = wxDefaultPosition,
-      const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
-
-  // Extend event processing to search the document manager's event table
-  virtual bool ProcessEvent(wxEvent& event);
-
-  wxDocManager *GetDocumentManager(void) const { return m_docManager; }
+public:
+    wxDocMDIParentFrame();
+    wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id,
+        const wxString& title, const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr);
 
-  void OnExit(wxCommandEvent& event);
-  void OnMRUFile(wxCommandEvent& event);
-  void OnCloseWindow(wxCloseEvent& event);
+    bool Create(wxDocManager *manager, wxFrame *parent, wxWindowID id,
+        const wxString& title, const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr);
 
- protected:
-  wxDocManager *m_docManager;
+    wxDocManager *GetDocumentManager(void) const { return m_docManager; }
 
+    void OnExit(wxCommandEvent& event);
+    void OnMRUFile(wxCommandEvent& event);
+    void OnCloseWindow(wxCloseEvent& event);
 
-DECLARE_EVENT_TABLE()
-};
+protected:
+    void Init();
 
-/*
- * Use this instead of wxMDIChildFrame
- */
+    virtual bool TryBefore(wxEvent& event);
 
-class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame
-{
-  DECLARE_CLASS(wxDocMDIChildFrame)
+    wxDocManager *m_docManager;
 
- public:
-  wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id,
-    const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-    long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
-  ~wxDocMDIChildFrame(void);
-
-  // Extend event processing to search the view's event table
-  virtual bool ProcessEvent(wxEvent& event);
-
-  void OnActivate(wxActivateEvent& event);
-  void OnCloseWindow(wxCloseEvent& event);
+private:
+    DECLARE_CLASS(wxDocMDIParentFrame)
+    DECLARE_EVENT_TABLE()
+    wxDECLARE_NO_COPY_CLASS(wxDocMDIParentFrame);
+};
 
-  inline wxDocument *GetDocument(void) const { return m_childDocument; }
-  inline wxView *GetView(void) const { return m_childView; }
-  inline void SetDocument(wxDocument *doc) { m_childDocument = doc; }
-  inline void SetView(wxView *view) { m_childView = view; }
- protected:
-  wxDocument*       m_childDocument;
-  wxView*           m_childView;
+// ----------------------------------------------------------------------------
+// An MDI document child frame: we need to define it as a class just for wxRTTI,
+// otherwise we could simply typedef it
+// ----------------------------------------------------------------------------
+
+#ifdef __VISUALC6__
+    // "non dll-interface class 'wxDocChildFrameAny<>' used as base interface
+    // for dll-interface class 'wxDocMDIChildFrame'" -- this is bogus as the
+    // template will be DLL-exported but only once it is used as base class
+    // here!
+    #pragma warning (disable:4275)
+#endif
 
-DECLARE_EVENT_TABLE()
+typedef
+  wxDocChildFrameAny<wxMDIChildFrame, wxMDIParentFrame> wxDocMDIChildFrameBase;
 
+class WXDLLIMPEXP_CORE wxDocMDIChildFrame : public wxDocMDIChildFrameBase
+{
+public:
+    wxDocMDIChildFrame(wxDocument *doc,
+                       wxView *view,
+                       wxMDIParentFrame *parent,
+                       wxWindowID id,
+                       const wxString& title,
+                       const wxPoint& pos = wxDefaultPosition,
+                       const wxSize& size = wxDefaultSize,
+                       long style = wxDEFAULT_FRAME_STYLE,
+                       const wxString& name = wxFrameNameStr)
+        : wxDocMDIChildFrameBase(doc, view,
+                                 parent, id, title, pos, size, style, name)
+    {
+    }
+
+private:
+    DECLARE_CLASS(wxDocMDIChildFrame)
+    wxDECLARE_NO_COPY_CLASS(wxDocMDIChildFrame);
 };
 
+#ifdef __VISUALC6__
+    #pragma warning (default:4275)
 #endif
-    // _WX_DOCMDI_H_
+
+#endif // wxUSE_MDI_ARCHITECTURE
+
+#endif // _WX_DOCMDI_H_